Skip to content

Commit 9903be5

Browse files
committed
Merge branch 'master' into actions-amplitude-more
2 parents 456a7db + a73f58f commit 9903be5

File tree

23 files changed

+1000
-866
lines changed

23 files changed

+1000
-866
lines changed

src/_data/catalog/overrides-list.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
items:
22
- hubspot
33
- iterable
4+
- google-ads-gtag
5+
- klaviyo

src/_data/catalog/overrides.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,26 @@ items:
3737
accepts cloud-mode data from all Segment source types. It does not offer device-mode connections.
3838
cmode_type: mixed
3939
case: '5'
40+
- slug: google-ads-gtag
41+
previous_names:
42+
- Google AdWords New
43+
- slug: klaviyo
44+
display_name: Klaviyo
45+
components:
46+
- code: 'https://github.com/segment-integrations/analytics.js-integration-klaviyo'
47+
type: browser
48+
- code: 'https://github.com/segmentio/integrations/tree/master/integrations/klaviyo'
49+
type: server
50+
connection_modes:
51+
device:
52+
web: true
53+
mobile: false
54+
server: false
55+
cloud:
56+
web: false
57+
mobile: true
58+
server: true
59+
summary: >-
60+
accepts data in cloud-mode from web and mobile sources, and can accept data in device-mode from Analytics.js sources.
61+
cmode_type: mixed
62+
case: '10'

src/_includes/content/destination-footer.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
{% if currentIntegration.platforms.server == true %}
77
{% unless page.hide-personas-partial == true %}
8+
{% assign overridesList = site.data.catalog.overrides-list.items %}
9+
810

911
## Personas
1012

@@ -69,10 +71,14 @@ Segment lets you change these destination settings from the Segment app without
6971
## Adding {{ currentIntegration.display_name }} to the integrations object
7072

7173
To add {{ currentIntegration.display_name }} to the `integrations` JSON object (for example, [to filter data from a specific source](/docs/guides/filtering-data/#filtering-with-the-integrations-object)), use one of the following valid names for this integration:
74+
{% if page.name-override %}
75+
{% assign currentIntegration = site.data.catalog.overrides.items | where: "slug", currentSlug | first %}
76+
{% endif %}
7277

7378
{% for valid_name in currentIntegration.previous_names %}
7479
- {{ valid_name }}
7580
{% endfor %}
81+
7682
{% endunless %}
7783
{% endif %}
7884

src/_sass/components/_markdown.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@
293293

294294
}
295295

296-
a[target="_blank"]:after:not(.reference-button){
296+
a[target="_blank"]:not(.reference-button):after{
297297
content: url("/docs/images/external-link-alt-solid.svg");
298298
margin-left: 4px;
299299
}

src/config-api/api-design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ You can manage each resource using standard methods:
4343
| PermissionDenied | 403 Forbidden | 7 | An access token with `write` scope is required for the Create, Update and Delete methods |
4444
| Not Found | 404 Not Found | 5 | The request or resource could not be found. Either the request method or path is incorrect, or the resource does not exist in this workspace (sometimes because of a typo). |
4545
| Already Exists | 409 Conflict | 6 | A resource (e.g. source) already exists with the given name |
46-
| Resource Exhausted | 429 Too Many Requests | 8 | The 60 req / sec rate limit was exhausted |
46+
| Resource Exhausted | 429 Too Many Requests | 8 | The 200 req / min rate limit was exhausted |
4747
| Internal | 500 Internal Server Error | 13 | Segment encountered an error processing the request |
4848
| Unimplemented | 501 Not Implemented | 12 | The method is not supported or implemented |
4949
| Unavailable | 503 Service Unavailable | 14 | The API is down |

src/connections/destinations/add-destination.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,8 @@ Each destination can also have destination settings. These control how Segment t
8888

8989
## Connecting one source to multiple instances of a destination
9090

91-
<!-- LR: 03/04/21 - hiding this for now since it's in limited rollout.
9291
> note ""
9392
> Multiple-destination support is available for all Segment customers on all plan tiers.
94-
-->
95-
96-
97-
> info ""
98-
> Support for connecting to multiple instances of a destination is in public preview. To use this, you must agree to the [(1) Segment First Access](https://segment.com/legal/first-access-beta-preview/) and Beta Terms and Conditions and [(2) Segment Acceptable Use Policy](https://segment.com/legal/acceptable-use-policy/). The feature is being released to different tiers over time. If you see an error message that you can’t connect to multiple instances of the same destination, it is not available yet in your workspace but is coming soon.
9993
10094
Segment allows you to connect a source to multiple instances of a destination. You can use this to set up a single Segment source that sends data into different instances of your analytics and other tools.
10195

@@ -187,7 +181,6 @@ For the following destinations, a single source can connect to up to 10 instance
187181
- [ActiveCampaign](/docs/connections/destinations/catalog/activecampaign/)
188182
- [Akita](/docs/connections/destinations/catalog/akita/)
189183
- [All Aboard](/docs/connections/destinations/catalog/all-aboard/)
190-
- [Amazon EventBridge](/docs/connections/destinations/catalog/amazon-eventbridge/)
191184
- [Amazon Kinesis](/docs/connections/destinations/catalog/amazon-kinesis/)
192185
- [Amazon Kinesis Firehose](/docs/connections/destinations/catalog/amazon-kinesis-firehose/)
193186
- [Amazon Lambda](/docs/connections/destinations/catalog/amazon-lambda/)

src/connections/destinations/catalog/amazon-kinesis-firehose/index.md

Lines changed: 73 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@
22
rewrite: true
33
title: Amazon Kinesis Firehose Destination
44
---
5-
[Amazon Kinesis Firehose](https://aws.amazon.com/kinesis/data-firehose/) is the easiest way to load streaming data into AWS. It can capture, transform, and load streaming data into Amazon Kinesis Analytics, Amazon S3, Amazon Redshift, and Amazon Elasticsearch Service, enabling near real-time analytics with existing business intelligence tools and dashboards you're already using today. It is a fully managed service that automatically scales to match the throughput of your data and requires no ongoing administration. It can also batch, compress, and encrypt the data before loading it, minimizing the amount of storage used at the destination and increasing security.
5+
[Amazon Kinesis Firehose](https://aws.amazon.com/kinesis/data-firehose/) provides way to load streaming data into AWS. It can capture, transform, and load streaming data into Amazon Kinesis Analytics, Amazon S3, Amazon Redshift, and Amazon Elasticsearch Service, enabling near real-time analytics with existing business intelligence tools and dashboards you're already using today. It's a fully managed service that automatically scales to match the throughput of your data and requires no ongoing administration. It can also batch, compress, and encrypt the data before loading it, minimizing the amount of storage used at the destination and increasing security.
66

77
This document was last updated on February 05, 2020. If you notice any gaps, outdated information or simply want to leave some feedback to help us improve our documentation, [let us know](https://segment.com/help/contact)!
88

99
## Getting Started
1010

1111
{% include content/connection-modes.md %}
1212

13-
1. Create at least one Kinesis Firehose delivery stream. You can follow these [instructions](http://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) to create a new delivery stream.
13+
To get started:
14+
1. Create at least one Kinesis Firehose delivery stream. You can follow these [instructions](http://docs.aws.amazon.com/firehose/latest/dev/basic-create.html){:target="_blank"} to create a new delivery stream.
1415
2. Create an IAM policy.
15-
1. Sign in to the [Identity and Access Management (IAM) console](https://console.aws.amazon.com/iam/).
16-
2. Follow [these instructions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) to create an IAM policy on the JSON to allow Segment permission to write to your Kinesis Firehose Stream.
16+
1. Sign in to the [Identity and Access Management (IAM) console](https://console.aws.amazon.com/iam/){:target="_blank"}.
17+
2. Follow [these instructions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor){:target="_blank"} to create an IAM policy on the JSON to allow Segment permission to write to your Kinesis Firehose Stream.
1718
- Use the following template policy in the **Policy Document** field. Be sure to change the `{region}`, `{account-id}` and `{stream-name}` with the applicable values.
1819

1920

20-
```
21+
```js
2122
{
2223
"Version": "2012-10-17",
2324
"Statement": [
@@ -65,7 +66,7 @@ analytics.identify('97980cfea0085', {
6566
## Track
6667
Take a look to understand what the [Track method](https://segment.com/docs/connections/spec/track/) does. An example identify call is shown below:
6768

68-
```javascript
69+
```js
6970
analytics.track("User Registered", {
7071
checkinDate: new Date(),
7172
myCoolProperty: "foobar",
@@ -75,15 +76,15 @@ analytics.track("User Registered", {
7576
### Event Mapping
7677
To begin using the Kinesis Firehose destination, you must first decide on which Segment events you would like to route to which Firehose delivery streams. This mapping then needs to be defined in your destination settings.
7778

78-
Segment `track` events can map based on their **event name**. For example, if you have an event called `User Registered`, and you want these events to be published to a Firehose delivery stream called `new_users`, you would create a row in your destination settings that looks like this:
79+
Segment `track` events can map based on their **event name**. For example, if you have an event called `User Registered`, and you want these events to be published to a Firehose delivery stream called `new_users`, create a row in your destination settings that looks like this:
7980

8081
![track event mapping screenshot](images/track_mapping.png)
8182

8283
Any Segment **event type** (ie. `page`, `track`, `identify`, `screen`, etc.) can also be mapped. This enables you to publish all instances of a given Segment event type to a given stream. To do this, create a row with the event type and its corresponding delivery stream:
8384

8485
![page event mapping screenshot](images/page_mapping.png)
8586

86-
Events can be defined **insensitive to case** so `Page` will be equivalent to `page`. The delivery stream name however needs to be formatted exactly as it is on AWS.
87+
Events can be defined **insensitive to case** so `Page` will be equivalent to `page`. The delivery stream name needs to be formatted exactly as it is on AWS.
8788

8889
If you would like to route all events to a stream, use an `*` as the event name.
8990

@@ -103,7 +104,7 @@ Let's say you've decided to publish your Segment track events named `User Regist
103104

104105
The Segment Kinesis destination will issue a `PutRecord` request with the following parameters:
105106

106-
```
107+
```js
107108
firehose.putRecord({
108109
Record: {
109110
Data: JSON.stringify(msg)) + '/n'
@@ -112,7 +113,7 @@ firehose.putRecord({
112113
});
113114
```
114115

115-
Segment will append a newline character to each record to allow for easy downstream parsing.
116+
Segment appends a newline character to each record to allow for easy downstream parsing.
116117

117118
## Group
118119
Take a look to understand what the [Group method](https://segment.com/docs/connections/spec/group/) does. An example group call is shown below:
@@ -132,73 +133,82 @@ analytics.group("0e8c78ea9d9dsasahjg", {
132133
If you have multiple sources using Kinesis/Firehose, you have two options:
133134

134135
#### Attach multiple sources to your IAM role
135-
Find the IAM role you created for this destination in the AWS Console in Services > IAM > Roles. Click on the role, and navigate to the **Trust Relationships** tab. Click **Edit trust relationship**. You should see a snippet that looks something that looks like this:
136+
To attach multiple sources to your IAM role:
137+
1. Find the IAM role you created for this destination in the AWS Console in **Services > IAM > Roles**.
138+
2. Select the role and navigate to the **Trust Relationships** tab.
139+
3. Click **Edit trust relationship**. You should see a snippet that looks something that looks like this:
136140

137-
```json
138-
{
139-
"Version": "2012-10-17",
140-
"Statement": [
141+
```json
141142
{
142-
"Effect": "Allow",
143-
"Principal": {
144-
"AWS": "arn:aws:iam::595280932656:root"
145-
},
146-
"Action": "sts:AssumeRole",
147-
"Condition": {
148-
"StringEquals": {
149-
"sts:ExternalId": "YOUR_SEGMENT_SOURCE_ID"
143+
"Version": "2012-10-17",
144+
"Statement": [
145+
{
146+
"Effect": "Allow",
147+
"Principal": {
148+
"AWS": "arn:aws:iam::595280932656:root"
149+
},
150+
"Action": "sts:AssumeRole",
151+
"Condition": {
152+
"StringEquals": {
153+
"sts:ExternalId": "YOUR_SEGMENT_SOURCE_ID"
154+
}
155+
}
150156
}
151-
}
157+
]
152158
}
153-
]
154-
}
155-
```
159+
```
156160

157-
Replace that snippet with the following, and replace the contents of the array with all of your source IDs.
161+
4. Replace that snippet with the following, and replace the contents of the array with all of your source IDs.
158162

159-
```json
160-
{
161-
"Version": "2012-10-17",
162-
"Statement": [
163+
```json
163164
{
164-
"Effect": "Allow",
165-
"Principal": {
166-
"AWS": "arn:aws:iam::595280932656:root"
167-
},
168-
"Action": "sts:AssumeRole",
169-
"Condition": {
170-
"StringEquals": {
171-
"sts:ExternalId": ["YOUR_SEGMENT_SOURCE_ID", "ANOTHER_SOURCE_ID", "A_THIRD_SOURCE_ID"]
165+
"Version": "2012-10-17",
166+
"Statement": [
167+
{
168+
"Effect": "Allow",
169+
"Principal": {
170+
"AWS": "arn:aws:iam::595280932656:root"
171+
},
172+
"Action": "sts:AssumeRole",
173+
"Condition": {
174+
"StringEquals": {
175+
"sts:ExternalId": ["YOUR_SEGMENT_SOURCE_ID", "ANOTHER_SOURCE_ID", "A_THIRD_SOURCE_ID"]
176+
}
177+
}
172178
}
173-
}
179+
]
174180
}
175-
]
176-
}
177-
```
181+
```
178182

179183
#### Use a single secret ID
180184

181-
If you have so many sources using Kinesis that it is impractical to attach all of their IDs to your IAM role, you can set a single ID to use instead. **This approach requires that you securely store a secret value, so we recommend that you use the method above if at all possible. **
185+
If you have many sources using Kinesis that it's impractical to attach all of their IDs to your IAM role, you can set a single ID to use instead.
182186

183-
To set this value, go to the Kinesis Firehose destination settings from each of your Segment sources and set the **Secret ID'** to a value of your choosing. This value is a secret and should be treated as sensitively as a password. Once all of your sources have been updated to use this value, find the IAM role you created for this destination in the AWS Console in Services > IAM > Roles. Click on the role, and navigate to the **Trust Relationships** tab. Click **Edit trust relationship**. You should see a snippet that looks something that looks like this:
187+
To set this value for a single Secret ID:
188+
1. Go to the Kinesis Firehose destination settings from each of your Segment sources.
189+
2. Click **Secret ID** and enter your Workspace ID.
190+
* **NOTE:** For security purposes, Segment recommends you to use your Segment Workspace ID as your Secret ID. If you’re using a Secret ID different from your Workspace ID, you're susceptible to attacks. You can find your Workspace ID by going to: **Settings > Workspace Settings > ID** from the Segment dashboard.
191+
3. Once all of your sources are updated to use this value, find the IAM role you created for this destination in the AWS Console in **Services > IAM > Roles**.
192+
4. Select the role and navigate to the **Trust Relationships** tab.
193+
5. Click **Edit trust relationship**. You should see a snippet that looks something that looks like this:
184194

185-
```json
186-
{
187-
"Version": "2012-10-17",
188-
"Statement": [
195+
```json
189196
{
190-
"Effect": "Allow",
191-
"Principal": {
192-
"AWS": "arn:aws:iam::595280932656:root"
193-
},
194-
"Action": "sts:AssumeRole",
195-
"Condition": {
196-
"StringEquals": {
197-
"sts:ExternalId": "YOUR_SEGMENT_SOURCE_ID"
197+
"Version": "2012-10-17",
198+
"Statement": [
199+
{
200+
"Effect": "Allow",
201+
"Principal": {
202+
"AWS": "arn:aws:iam::595280932656:root"
203+
},
204+
"Action": "sts:AssumeRole",
205+
"Condition": {
206+
"StringEquals": {
207+
"sts:ExternalId": "YOUR_SEGMENT_SOURCE_ID"
208+
}
209+
}
198210
}
199-
}
211+
]
200212
}
201-
]
202-
}
203-
```
204-
Replace your source ID (found at "YOUR_SEGMENT_SOURCE_ID") with your secret ID.
213+
```
214+
6. Replace the value of `sts:ExternalId` ( "YOUR_SEGMENT_SOURCE_ID") with the Secret ID / Workspace ID value from the previous step.

0 commit comments

Comments
 (0)