@walkeros/server-destination-aws 4.7.0-next-1790722899482 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -3
- package/README.md +16 -3
- package/dist/dev.d.mts +76 -50
- package/dist/dev.d.ts +76 -50
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/examples/index.d.mts +47 -35
- package/dist/examples/index.d.ts +47 -35
- package/dist/examples/index.js +181 -102
- package/dist/examples/index.mjs +179 -100
- package/dist/index.d.mts +161 -60
- package/dist/index.d.ts +161 -60
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/schemas.js.map +1 -1
- package/dist/schemas.mjs +1 -1
- package/dist/schemas.mjs.map +1 -1
- package/dist/walkerOS.json +1331 -129
- package/package.json +4 -3
package/dist/walkerOS.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"package": "@walkeros/server-destination-aws",
|
|
4
|
-
"version": "4.7.0
|
|
4
|
+
"version": "4.7.0",
|
|
5
5
|
"type": "destination",
|
|
6
6
|
"platform": [
|
|
7
7
|
"server"
|
|
@@ -21,22 +21,19 @@
|
|
|
21
21
|
"streamName": {
|
|
22
22
|
"type": "string",
|
|
23
23
|
"minLength": 1,
|
|
24
|
-
"description": "Name of the
|
|
24
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
25
25
|
},
|
|
26
26
|
"client": {
|
|
27
|
-
"description": "
|
|
27
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
28
28
|
},
|
|
29
29
|
"region": {
|
|
30
30
|
"type": "string",
|
|
31
|
-
"description": "AWS region
|
|
31
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
32
32
|
},
|
|
33
33
|
"config": {
|
|
34
|
-
"description": "
|
|
34
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
"required": [
|
|
38
|
-
"streamName"
|
|
39
|
-
],
|
|
40
37
|
"additionalProperties": false
|
|
41
38
|
},
|
|
42
39
|
"firehoseMapping": {
|
|
@@ -49,30 +46,46 @@
|
|
|
49
46
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
50
47
|
"type": "object",
|
|
51
48
|
"properties": {
|
|
49
|
+
"streamName": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1,
|
|
52
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
53
|
+
},
|
|
54
|
+
"region": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
57
|
+
},
|
|
58
|
+
"newline": {
|
|
59
|
+
"type": "boolean",
|
|
60
|
+
"description": "Append a newline to every record (default true). Set false when the stream adds its own new line delimiter."
|
|
61
|
+
},
|
|
62
|
+
"config": {
|
|
63
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
64
|
+
},
|
|
65
|
+
"client": {
|
|
66
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
67
|
+
},
|
|
52
68
|
"firehose": {
|
|
53
69
|
"type": "object",
|
|
54
70
|
"properties": {
|
|
55
71
|
"streamName": {
|
|
56
72
|
"type": "string",
|
|
57
73
|
"minLength": 1,
|
|
58
|
-
"description": "Name of the
|
|
74
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
59
75
|
},
|
|
60
76
|
"client": {
|
|
61
|
-
"description": "
|
|
77
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
62
78
|
},
|
|
63
79
|
"region": {
|
|
64
80
|
"type": "string",
|
|
65
|
-
"description": "AWS region
|
|
81
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
66
82
|
},
|
|
67
83
|
"config": {
|
|
68
|
-
"description": "
|
|
84
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
69
85
|
}
|
|
70
86
|
},
|
|
71
|
-
"required": [
|
|
72
|
-
"streamName"
|
|
73
|
-
],
|
|
74
87
|
"additionalProperties": false,
|
|
75
|
-
"description": "
|
|
88
|
+
"description": "Deprecated: use the flat fields streamName, region, config and client.",
|
|
76
89
|
"title": "firehose"
|
|
77
90
|
}
|
|
78
91
|
},
|
|
@@ -88,30 +101,46 @@
|
|
|
88
101
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
89
102
|
"type": "object",
|
|
90
103
|
"properties": {
|
|
104
|
+
"streamName": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"minLength": 1,
|
|
107
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
108
|
+
},
|
|
109
|
+
"region": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
112
|
+
},
|
|
113
|
+
"newline": {
|
|
114
|
+
"type": "boolean",
|
|
115
|
+
"description": "Append a newline to every record (default true). Set false when the stream adds its own new line delimiter."
|
|
116
|
+
},
|
|
117
|
+
"config": {
|
|
118
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
119
|
+
},
|
|
120
|
+
"client": {
|
|
121
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
122
|
+
},
|
|
91
123
|
"firehose": {
|
|
92
124
|
"type": "object",
|
|
93
125
|
"properties": {
|
|
94
126
|
"streamName": {
|
|
95
127
|
"type": "string",
|
|
96
128
|
"minLength": 1,
|
|
97
|
-
"description": "Name of the
|
|
129
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
98
130
|
},
|
|
99
131
|
"client": {
|
|
100
|
-
"description": "
|
|
132
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
101
133
|
},
|
|
102
134
|
"region": {
|
|
103
135
|
"type": "string",
|
|
104
|
-
"description": "AWS region
|
|
136
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
105
137
|
},
|
|
106
138
|
"config": {
|
|
107
|
-
"description": "
|
|
139
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
108
140
|
}
|
|
109
141
|
},
|
|
110
|
-
"required": [
|
|
111
|
-
"streamName"
|
|
112
|
-
],
|
|
113
142
|
"additionalProperties": false,
|
|
114
|
-
"description": "
|
|
143
|
+
"description": "Deprecated: use the flat fields streamName, region, config and client.",
|
|
115
144
|
"title": "firehose"
|
|
116
145
|
}
|
|
117
146
|
},
|
|
@@ -137,29 +166,26 @@
|
|
|
137
166
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
138
167
|
"type": "object",
|
|
139
168
|
"properties": {
|
|
169
|
+
"topicArn": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"description": "Topic ARN (like arn:aws:sns:eu-central-1:123456789012:walkeros-events). Region and topic name derive from it. Required unless topicName is set."
|
|
172
|
+
},
|
|
140
173
|
"topicName": {
|
|
141
174
|
"type": "string",
|
|
142
175
|
"minLength": 1,
|
|
143
|
-
"description": "
|
|
176
|
+
"description": "Topic name (like walkeros-events). Used by walkeros setup; without topicArn the ARN is completed with the account id at the first publish."
|
|
144
177
|
},
|
|
145
178
|
"region": {
|
|
146
179
|
"type": "string",
|
|
147
|
-
"description": "AWS region (like eu-central-1)."
|
|
180
|
+
"description": "AWS region (like eu-central-1). Default: the region in topicArn, AWS_REGION or the active profile, else eu-central-1."
|
|
148
181
|
},
|
|
149
182
|
"client": {
|
|
150
|
-
"description": "
|
|
183
|
+
"description": "An SNSClient of your own. Used as is and never closed by the destination."
|
|
151
184
|
},
|
|
152
185
|
"config": {
|
|
153
|
-
"description": "
|
|
154
|
-
},
|
|
155
|
-
"topicArn": {
|
|
156
|
-
"type": "string",
|
|
157
|
-
"description": "Topic ARN. Populated by init() from CreateTopic. Operators may pre-set to skip the runtime CreateTopic call."
|
|
186
|
+
"description": "Raw SNSClient options passed to the SDK. Put keys in config.credentials instead."
|
|
158
187
|
}
|
|
159
188
|
},
|
|
160
|
-
"required": [
|
|
161
|
-
"topicName"
|
|
162
|
-
],
|
|
163
189
|
"additionalProperties": false
|
|
164
190
|
},
|
|
165
191
|
"snsSetup": {
|
|
@@ -237,7 +263,7 @@
|
|
|
237
263
|
"push": {
|
|
238
264
|
"AWS": {
|
|
239
265
|
"FirehoseClient": {
|
|
240
|
-
"$code": "class{config;constructor(e){this.config=e}async send(e){return{
|
|
266
|
+
"$code": "class{config;constructor(e){this.config=e}async send(e){const t=\"input\"in e?e.input:void 0;var i;return{FailedPutCount:0,Encrypted:!1,RequestResponses:(\"object\"==typeof(i=t)&&null!==i&&\"Records\"in i&&Array.isArray(i.Records)?t.Records:[]).map((e,t)=>({RecordId:`mock-record-id-${t}`}))}}destroy(){}}"
|
|
241
267
|
},
|
|
242
268
|
"PutRecordBatchCommand": {
|
|
243
269
|
"$code": "class{input;constructor(e){this.input=e}get[Symbol.toStringTag](){return\"PutRecordBatchCommand\"}}"
|
|
@@ -253,7 +279,7 @@
|
|
|
253
279
|
"push": {
|
|
254
280
|
"AWS": {
|
|
255
281
|
"FirehoseClient": {
|
|
256
|
-
"$code": "class{config;constructor(e){this.config=e}async send(e){return{
|
|
282
|
+
"$code": "class{config;constructor(e){this.config=e}async send(e){const t=\"input\"in e?e.input:void 0;var i;return{FailedPutCount:0,Encrypted:!1,RequestResponses:(\"object\"==typeof(i=t)&&null!==i&&\"Records\"in i&&Array.isArray(i.Records)?t.Records:[]).map((e,t)=>({RecordId:`mock-record-id-${t}`}))}}destroy(){}}"
|
|
257
283
|
},
|
|
258
284
|
"PutRecordBatchCommand": {
|
|
259
285
|
"$code": "class{input;constructor(e){this.input=e}get[Symbol.toStringTag](){return\"PutRecordBatchCommand\"}}"
|
|
@@ -267,7 +293,7 @@
|
|
|
267
293
|
"step": {
|
|
268
294
|
"firehoseRecord": {
|
|
269
295
|
"title": "Page view record",
|
|
270
|
-
"description": "A page view is sent to
|
|
296
|
+
"description": "A page view is sent to Firehose as one record: the full event as JSON followed by a newline.",
|
|
271
297
|
"in": {
|
|
272
298
|
"name": "page view",
|
|
273
299
|
"data": {
|
|
@@ -844,7 +870,236 @@
|
|
|
844
870
|
"518": 114,
|
|
845
871
|
"519": 34,
|
|
846
872
|
"520": 125,
|
|
847
|
-
"521": 125
|
|
873
|
+
"521": 125,
|
|
874
|
+
"522": 10
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
]
|
|
878
|
+
}
|
|
879
|
+
]
|
|
880
|
+
]
|
|
881
|
+
},
|
|
882
|
+
"init": {
|
|
883
|
+
"title": "Initialization",
|
|
884
|
+
"description": "Init builds one FirehoseClient for the stream region with the credentials from config.credentials and a 2500 ms per-attempt timeout. Nothing is sent until the first event.",
|
|
885
|
+
"in": {
|
|
886
|
+
"settings": {
|
|
887
|
+
"streamName": "walkeros-events",
|
|
888
|
+
"region": "eu-central-1"
|
|
889
|
+
},
|
|
890
|
+
"credentials": {
|
|
891
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
892
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
893
|
+
}
|
|
894
|
+
},
|
|
895
|
+
"out": [
|
|
896
|
+
[
|
|
897
|
+
"new FirehoseClient",
|
|
898
|
+
{
|
|
899
|
+
"region": "eu-central-1",
|
|
900
|
+
"credentials": {
|
|
901
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
902
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
903
|
+
},
|
|
904
|
+
"requestHandler": {
|
|
905
|
+
"requestTimeout": 2500,
|
|
906
|
+
"throwOnRequestTimeout": true
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
]
|
|
910
|
+
]
|
|
911
|
+
},
|
|
912
|
+
"mappedRecord": {
|
|
913
|
+
"title": "Mapped record",
|
|
914
|
+
"description": "A mapping that produces an object sends that object as the record instead of the full event. Keep the event id in it for deduplication.",
|
|
915
|
+
"in": {
|
|
916
|
+
"name": "order complete",
|
|
917
|
+
"data": {
|
|
918
|
+
"id": "ORD-400",
|
|
919
|
+
"total": 99.99,
|
|
920
|
+
"currency": "EUR"
|
|
921
|
+
},
|
|
922
|
+
"context": {
|
|
923
|
+
"shopping": [
|
|
924
|
+
"complete",
|
|
925
|
+
0
|
|
926
|
+
]
|
|
927
|
+
},
|
|
928
|
+
"globals": {
|
|
929
|
+
"pagegroup": "shop"
|
|
930
|
+
},
|
|
931
|
+
"custom": {
|
|
932
|
+
"completely": "random"
|
|
933
|
+
},
|
|
934
|
+
"user": {
|
|
935
|
+
"id": "us3r",
|
|
936
|
+
"device": "c00k13",
|
|
937
|
+
"session": "s3ss10n"
|
|
938
|
+
},
|
|
939
|
+
"nested": [
|
|
940
|
+
{
|
|
941
|
+
"entity": "product",
|
|
942
|
+
"data": {
|
|
943
|
+
"id": "ers",
|
|
944
|
+
"name": "Everyday Ruck Snack",
|
|
945
|
+
"color": "black",
|
|
946
|
+
"size": "l",
|
|
947
|
+
"price": 420
|
|
948
|
+
},
|
|
949
|
+
"context": {
|
|
950
|
+
"shopping": [
|
|
951
|
+
"complete",
|
|
952
|
+
0
|
|
953
|
+
]
|
|
954
|
+
},
|
|
955
|
+
"nested": []
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
"entity": "product",
|
|
959
|
+
"data": {
|
|
960
|
+
"id": "cc",
|
|
961
|
+
"name": "Cool Cap",
|
|
962
|
+
"size": "one size",
|
|
963
|
+
"price": 42
|
|
964
|
+
},
|
|
965
|
+
"context": {
|
|
966
|
+
"shopping": [
|
|
967
|
+
"complete",
|
|
968
|
+
0
|
|
969
|
+
]
|
|
970
|
+
},
|
|
971
|
+
"nested": []
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
"entity": "gift",
|
|
975
|
+
"data": {
|
|
976
|
+
"name": "Surprise"
|
|
977
|
+
},
|
|
978
|
+
"context": {
|
|
979
|
+
"shopping": [
|
|
980
|
+
"complete",
|
|
981
|
+
0
|
|
982
|
+
]
|
|
983
|
+
},
|
|
984
|
+
"nested": []
|
|
985
|
+
}
|
|
986
|
+
],
|
|
987
|
+
"consent": {
|
|
988
|
+
"functional": true
|
|
989
|
+
},
|
|
990
|
+
"id": "ev-1700001001",
|
|
991
|
+
"trigger": "load",
|
|
992
|
+
"entity": "order",
|
|
993
|
+
"action": "complete",
|
|
994
|
+
"timestamp": 1700001001,
|
|
995
|
+
"timing": 3.14,
|
|
996
|
+
"source": {
|
|
997
|
+
"count": 1,
|
|
998
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
999
|
+
"type": "express",
|
|
1000
|
+
"platform": "server"
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
"mapping": {
|
|
1004
|
+
"data": {
|
|
1005
|
+
"map": {
|
|
1006
|
+
"id": "id",
|
|
1007
|
+
"name": "name",
|
|
1008
|
+
"order_id": "data.id",
|
|
1009
|
+
"total": "data.total"
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
},
|
|
1013
|
+
"out": [
|
|
1014
|
+
[
|
|
1015
|
+
"client.send",
|
|
1016
|
+
{
|
|
1017
|
+
"DeliveryStreamName": "walkeros-events",
|
|
1018
|
+
"Records": [
|
|
1019
|
+
{
|
|
1020
|
+
"Data": {
|
|
1021
|
+
"0": 123,
|
|
1022
|
+
"1": 34,
|
|
1023
|
+
"2": 105,
|
|
1024
|
+
"3": 100,
|
|
1025
|
+
"4": 34,
|
|
1026
|
+
"5": 58,
|
|
1027
|
+
"6": 34,
|
|
1028
|
+
"7": 101,
|
|
1029
|
+
"8": 118,
|
|
1030
|
+
"9": 45,
|
|
1031
|
+
"10": 49,
|
|
1032
|
+
"11": 55,
|
|
1033
|
+
"12": 48,
|
|
1034
|
+
"13": 48,
|
|
1035
|
+
"14": 48,
|
|
1036
|
+
"15": 48,
|
|
1037
|
+
"16": 49,
|
|
1038
|
+
"17": 48,
|
|
1039
|
+
"18": 48,
|
|
1040
|
+
"19": 49,
|
|
1041
|
+
"20": 34,
|
|
1042
|
+
"21": 44,
|
|
1043
|
+
"22": 34,
|
|
1044
|
+
"23": 110,
|
|
1045
|
+
"24": 97,
|
|
1046
|
+
"25": 109,
|
|
1047
|
+
"26": 101,
|
|
1048
|
+
"27": 34,
|
|
1049
|
+
"28": 58,
|
|
1050
|
+
"29": 34,
|
|
1051
|
+
"30": 111,
|
|
1052
|
+
"31": 114,
|
|
1053
|
+
"32": 100,
|
|
1054
|
+
"33": 101,
|
|
1055
|
+
"34": 114,
|
|
1056
|
+
"35": 32,
|
|
1057
|
+
"36": 99,
|
|
1058
|
+
"37": 111,
|
|
1059
|
+
"38": 109,
|
|
1060
|
+
"39": 112,
|
|
1061
|
+
"40": 108,
|
|
1062
|
+
"41": 101,
|
|
1063
|
+
"42": 116,
|
|
1064
|
+
"43": 101,
|
|
1065
|
+
"44": 34,
|
|
1066
|
+
"45": 44,
|
|
1067
|
+
"46": 34,
|
|
1068
|
+
"47": 111,
|
|
1069
|
+
"48": 114,
|
|
1070
|
+
"49": 100,
|
|
1071
|
+
"50": 101,
|
|
1072
|
+
"51": 114,
|
|
1073
|
+
"52": 95,
|
|
1074
|
+
"53": 105,
|
|
1075
|
+
"54": 100,
|
|
1076
|
+
"55": 34,
|
|
1077
|
+
"56": 58,
|
|
1078
|
+
"57": 34,
|
|
1079
|
+
"58": 79,
|
|
1080
|
+
"59": 82,
|
|
1081
|
+
"60": 68,
|
|
1082
|
+
"61": 45,
|
|
1083
|
+
"62": 52,
|
|
1084
|
+
"63": 48,
|
|
1085
|
+
"64": 48,
|
|
1086
|
+
"65": 34,
|
|
1087
|
+
"66": 44,
|
|
1088
|
+
"67": 34,
|
|
1089
|
+
"68": 116,
|
|
1090
|
+
"69": 111,
|
|
1091
|
+
"70": 116,
|
|
1092
|
+
"71": 97,
|
|
1093
|
+
"72": 108,
|
|
1094
|
+
"73": 34,
|
|
1095
|
+
"74": 58,
|
|
1096
|
+
"75": 57,
|
|
1097
|
+
"76": 57,
|
|
1098
|
+
"77": 46,
|
|
1099
|
+
"78": 57,
|
|
1100
|
+
"79": 57,
|
|
1101
|
+
"80": 125,
|
|
1102
|
+
"81": 10
|
|
848
1103
|
}
|
|
849
1104
|
}
|
|
850
1105
|
]
|
|
@@ -854,7 +1109,7 @@
|
|
|
854
1109
|
},
|
|
855
1110
|
"orderEvent": {
|
|
856
1111
|
"title": "Order record",
|
|
857
|
-
"description": "An order complete event is serialized and delivered to Firehose as
|
|
1112
|
+
"description": "An order complete event is serialized and delivered to Firehose as one newline-terminated record.",
|
|
858
1113
|
"in": {
|
|
859
1114
|
"name": "order complete",
|
|
860
1115
|
"data": {
|
|
@@ -1836,7 +2091,8 @@
|
|
|
1836
2091
|
"882": 114,
|
|
1837
2092
|
"883": 34,
|
|
1838
2093
|
"884": 125,
|
|
1839
|
-
"885": 125
|
|
2094
|
+
"885": 125,
|
|
2095
|
+
"886": 10
|
|
1840
2096
|
}
|
|
1841
2097
|
}
|
|
1842
2098
|
]
|
|
@@ -2404,7 +2660,8 @@
|
|
|
2404
2660
|
"500": 114,
|
|
2405
2661
|
"501": 34,
|
|
2406
2662
|
"502": 125,
|
|
2407
|
-
"503": 125
|
|
2663
|
+
"503": 125,
|
|
2664
|
+
"504": 10
|
|
2408
2665
|
}
|
|
2409
2666
|
}
|
|
2410
2667
|
]
|
|
@@ -2419,25 +2676,25 @@
|
|
|
2419
2676
|
"push": {
|
|
2420
2677
|
"AWS": {
|
|
2421
2678
|
"SNSClient": {
|
|
2422
|
-
"$code": "class{constructor(e){this.config=e}config;async send(e){return e instanceof
|
|
2679
|
+
"$code": "class{constructor(e){this.config=e}config;async send(e){return e instanceof C?{TopicArn:\"arn:aws:sns:eu-central-1:123456789012:walkeros-events\"}:e instanceof _?{MessageId:\"mock-message-id\"}:{}}destroy(){}}"
|
|
2423
2680
|
},
|
|
2424
2681
|
"CreateTopicCommand": {
|
|
2425
|
-
"$code": "class extends
|
|
2682
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"CreateTopicCommand\"}}"
|
|
2426
2683
|
},
|
|
2427
2684
|
"PublishCommand": {
|
|
2428
|
-
"$code": "class extends
|
|
2685
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"PublishCommand\"}}"
|
|
2429
2686
|
},
|
|
2430
2687
|
"GetTopicAttributesCommand": {
|
|
2431
|
-
"$code": "class extends
|
|
2688
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"GetTopicAttributesCommand\"}}"
|
|
2432
2689
|
},
|
|
2433
2690
|
"SubscribeCommand": {
|
|
2434
|
-
"$code": "class extends
|
|
2691
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"SubscribeCommand\"}}"
|
|
2435
2692
|
},
|
|
2436
2693
|
"STSClient": {
|
|
2437
|
-
"$code": "class{constructor(e){this.config=e}config;async send(){return{Account:\"123456789012\"}}}"
|
|
2694
|
+
"$code": "class{constructor(e){this.config=e}config;async send(){return{Account:\"123456789012\",Arn:\"arn:aws:iam::123456789012:user/walkeros\"}}destroy(){}}"
|
|
2438
2695
|
},
|
|
2439
2696
|
"GetCallerIdentityCommand": {
|
|
2440
|
-
"$code": "class extends
|
|
2697
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"GetCallerIdentityCommand\"}}"
|
|
2441
2698
|
}
|
|
2442
2699
|
}
|
|
2443
2700
|
},
|
|
@@ -2511,7 +2768,7 @@
|
|
|
2511
2768
|
[
|
|
2512
2769
|
"client.send",
|
|
2513
2770
|
{
|
|
2514
|
-
"TopicArn": "arn:aws:sns:eu-central-1:
|
|
2771
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
2515
2772
|
"Message": "{\"name\":\"product view\",\"data\":{\"id\":\"SKU-1\",\"tenant_id\":\"acme\"},\"context\":{\"shopping\":[\"detail\",0]},\"globals\":{\"pagegroup\":\"shop\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"},\"nested\":[],\"consent\":{\"functional\":true},\"id\":\"ev-1700001002\",\"trigger\":\"load\",\"entity\":\"product\",\"action\":\"view\",\"timestamp\":1700001002,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}",
|
|
2516
2773
|
"MessageAttributes": {
|
|
2517
2774
|
"schema_version": {
|
|
@@ -2527,9 +2784,38 @@
|
|
|
2527
2784
|
]
|
|
2528
2785
|
]
|
|
2529
2786
|
},
|
|
2530
|
-
"
|
|
2531
|
-
"title": "
|
|
2532
|
-
"description": "
|
|
2787
|
+
"init": {
|
|
2788
|
+
"title": "Initialization",
|
|
2789
|
+
"description": "Init builds one SNSClient in the region of the topic ARN with the credentials from config.credentials and a 2500 ms per-attempt timeout. No topic is created and nothing is sent until the first event.",
|
|
2790
|
+
"in": {
|
|
2791
|
+
"settings": {
|
|
2792
|
+
"topicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events"
|
|
2793
|
+
},
|
|
2794
|
+
"credentials": {
|
|
2795
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
2796
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
2797
|
+
}
|
|
2798
|
+
},
|
|
2799
|
+
"out": [
|
|
2800
|
+
[
|
|
2801
|
+
"new SNSClient",
|
|
2802
|
+
{
|
|
2803
|
+
"region": "eu-central-1",
|
|
2804
|
+
"credentials": {
|
|
2805
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
2806
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
2807
|
+
},
|
|
2808
|
+
"requestHandler": {
|
|
2809
|
+
"requestTimeout": 2500,
|
|
2810
|
+
"throwOnRequestTimeout": true
|
|
2811
|
+
}
|
|
2812
|
+
}
|
|
2813
|
+
]
|
|
2814
|
+
]
|
|
2815
|
+
},
|
|
2816
|
+
"mappedMessage": {
|
|
2817
|
+
"title": "Mapped message",
|
|
2818
|
+
"description": "A mapping that produces an object publishes that object as the Message instead of the full event. Keep the event id in it for deduplication.",
|
|
2533
2819
|
"in": {
|
|
2534
2820
|
"name": "order complete",
|
|
2535
2821
|
"data": {
|
|
@@ -2617,87 +2903,197 @@
|
|
|
2617
2903
|
}
|
|
2618
2904
|
},
|
|
2619
2905
|
"mapping": {
|
|
2620
|
-
"
|
|
2621
|
-
"
|
|
2906
|
+
"data": {
|
|
2907
|
+
"map": {
|
|
2908
|
+
"id": "id",
|
|
2909
|
+
"name": "name",
|
|
2910
|
+
"order_id": "data.id",
|
|
2911
|
+
"total": "data.total"
|
|
2912
|
+
}
|
|
2622
2913
|
}
|
|
2623
2914
|
},
|
|
2624
2915
|
"out": [
|
|
2625
2916
|
[
|
|
2626
2917
|
"client.send",
|
|
2627
2918
|
{
|
|
2628
|
-
"TopicArn": "arn:aws:sns:eu-central-1:
|
|
2629
|
-
"Message": "{\"
|
|
2630
|
-
"MessageGroupId": "usr-789"
|
|
2919
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
2920
|
+
"Message": "{\"id\":\"ev-1700001001\",\"name\":\"order complete\",\"order_id\":\"ORD-400\",\"total\":99.99}"
|
|
2631
2921
|
}
|
|
2632
2922
|
]
|
|
2633
2923
|
]
|
|
2634
2924
|
},
|
|
2635
|
-
"
|
|
2636
|
-
"title": "
|
|
2637
|
-
"description": "
|
|
2925
|
+
"orderEvent": {
|
|
2926
|
+
"title": "Order publish with FIFO group (path-resolved)",
|
|
2927
|
+
"description": "An order complete event is published to a FIFO topic with a messageGroupId resolved from the event via the mapping path \"user.id\". The deduplication id defaults to the event id.",
|
|
2638
2928
|
"in": {
|
|
2639
|
-
"name": "
|
|
2929
|
+
"name": "order complete",
|
|
2640
2930
|
"data": {
|
|
2641
|
-
"
|
|
2642
|
-
"
|
|
2931
|
+
"id": "ORD-400",
|
|
2932
|
+
"total": 99.99,
|
|
2933
|
+
"currency": "EUR"
|
|
2643
2934
|
},
|
|
2644
2935
|
"context": {
|
|
2645
|
-
"
|
|
2646
|
-
"
|
|
2647
|
-
|
|
2936
|
+
"shopping": [
|
|
2937
|
+
"complete",
|
|
2938
|
+
0
|
|
2648
2939
|
]
|
|
2649
2940
|
},
|
|
2650
2941
|
"globals": {
|
|
2651
|
-
"pagegroup": "
|
|
2942
|
+
"pagegroup": "shop"
|
|
2652
2943
|
},
|
|
2653
2944
|
"custom": {
|
|
2654
2945
|
"completely": "random"
|
|
2655
2946
|
},
|
|
2656
2947
|
"user": {
|
|
2657
|
-
"id": "
|
|
2658
|
-
"device": "c00k13",
|
|
2659
|
-
"session": "s3ss10n"
|
|
2948
|
+
"id": "usr-789"
|
|
2660
2949
|
},
|
|
2661
2950
|
"nested": [
|
|
2662
2951
|
{
|
|
2663
|
-
"entity": "
|
|
2952
|
+
"entity": "product",
|
|
2664
2953
|
"data": {
|
|
2665
|
-
"
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
"count": 1,
|
|
2680
|
-
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
2681
|
-
"type": "express",
|
|
2682
|
-
"platform": "server"
|
|
2683
|
-
}
|
|
2684
|
-
},
|
|
2685
|
-
"out": [
|
|
2686
|
-
[
|
|
2687
|
-
"client.send",
|
|
2954
|
+
"id": "ers",
|
|
2955
|
+
"name": "Everyday Ruck Snack",
|
|
2956
|
+
"color": "black",
|
|
2957
|
+
"size": "l",
|
|
2958
|
+
"price": 420
|
|
2959
|
+
},
|
|
2960
|
+
"context": {
|
|
2961
|
+
"shopping": [
|
|
2962
|
+
"complete",
|
|
2963
|
+
0
|
|
2964
|
+
]
|
|
2965
|
+
},
|
|
2966
|
+
"nested": []
|
|
2967
|
+
},
|
|
2688
2968
|
{
|
|
2689
|
-
"
|
|
2690
|
-
"
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2969
|
+
"entity": "product",
|
|
2970
|
+
"data": {
|
|
2971
|
+
"id": "cc",
|
|
2972
|
+
"name": "Cool Cap",
|
|
2973
|
+
"size": "one size",
|
|
2974
|
+
"price": 42
|
|
2975
|
+
},
|
|
2976
|
+
"context": {
|
|
2977
|
+
"shopping": [
|
|
2978
|
+
"complete",
|
|
2979
|
+
0
|
|
2980
|
+
]
|
|
2981
|
+
},
|
|
2982
|
+
"nested": []
|
|
2983
|
+
},
|
|
2984
|
+
{
|
|
2985
|
+
"entity": "gift",
|
|
2986
|
+
"data": {
|
|
2987
|
+
"name": "Surprise"
|
|
2988
|
+
},
|
|
2989
|
+
"context": {
|
|
2990
|
+
"shopping": [
|
|
2991
|
+
"complete",
|
|
2992
|
+
0
|
|
2993
|
+
]
|
|
2994
|
+
},
|
|
2995
|
+
"nested": []
|
|
2996
|
+
}
|
|
2997
|
+
],
|
|
2998
|
+
"consent": {
|
|
2999
|
+
"functional": true
|
|
3000
|
+
},
|
|
3001
|
+
"id": "ev-1700001001",
|
|
3002
|
+
"trigger": "load",
|
|
3003
|
+
"entity": "order",
|
|
3004
|
+
"action": "complete",
|
|
3005
|
+
"timestamp": 1700001001,
|
|
3006
|
+
"timing": 3.14,
|
|
3007
|
+
"source": {
|
|
3008
|
+
"count": 1,
|
|
3009
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
3010
|
+
"type": "express",
|
|
3011
|
+
"platform": "server"
|
|
3012
|
+
}
|
|
3013
|
+
},
|
|
3014
|
+
"mapping": {
|
|
3015
|
+
"settings": {
|
|
3016
|
+
"messageGroupId": "user.id"
|
|
3017
|
+
}
|
|
3018
|
+
},
|
|
3019
|
+
"out": [
|
|
3020
|
+
[
|
|
3021
|
+
"client.send",
|
|
3022
|
+
{
|
|
3023
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events.fifo",
|
|
3024
|
+
"Message": "{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-400\",\"total\":99.99,\"currency\":\"EUR\"},\"context\":{\"shopping\":[\"complete\",0]},\"globals\":{\"pagegroup\":\"shop\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"usr-789\"},\"nested\":[{\"entity\":\"product\",\"data\":{\"id\":\"ers\",\"name\":\"Everyday Ruck Snack\",\"color\":\"black\",\"size\":\"l\",\"price\":420},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"product\",\"data\":{\"id\":\"cc\",\"name\":\"Cool Cap\",\"size\":\"one size\",\"price\":42},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"gift\",\"data\":{\"name\":\"Surprise\"},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]}],\"consent\":{\"functional\":true},\"id\":\"ev-1700001001\",\"trigger\":\"load\",\"entity\":\"order\",\"action\":\"complete\",\"timestamp\":1700001001,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}",
|
|
3025
|
+
"MessageGroupId": "usr-789",
|
|
3026
|
+
"MessageDeduplicationId": "ev-1700001001"
|
|
3027
|
+
}
|
|
3028
|
+
]
|
|
3029
|
+
]
|
|
3030
|
+
},
|
|
3031
|
+
"pageView": {
|
|
3032
|
+
"title": "Page view publish",
|
|
3033
|
+
"description": "A page view event is JSON-stringified and published as the Message of an SNS Publish call.",
|
|
3034
|
+
"in": {
|
|
3035
|
+
"name": "page view",
|
|
3036
|
+
"data": {
|
|
3037
|
+
"title": "Home",
|
|
3038
|
+
"url": "https://example.com/"
|
|
3039
|
+
},
|
|
3040
|
+
"context": {
|
|
3041
|
+
"dev": [
|
|
3042
|
+
"test",
|
|
3043
|
+
1
|
|
3044
|
+
]
|
|
3045
|
+
},
|
|
3046
|
+
"globals": {
|
|
3047
|
+
"pagegroup": "docs"
|
|
3048
|
+
},
|
|
3049
|
+
"custom": {
|
|
3050
|
+
"completely": "random"
|
|
3051
|
+
},
|
|
3052
|
+
"user": {
|
|
3053
|
+
"id": "us3r",
|
|
3054
|
+
"device": "c00k13",
|
|
3055
|
+
"session": "s3ss10n"
|
|
3056
|
+
},
|
|
3057
|
+
"nested": [
|
|
3058
|
+
{
|
|
3059
|
+
"entity": "child",
|
|
3060
|
+
"data": {
|
|
3061
|
+
"is": "subordinated"
|
|
3062
|
+
}
|
|
3063
|
+
}
|
|
3064
|
+
],
|
|
3065
|
+
"consent": {
|
|
3066
|
+
"functional": true
|
|
3067
|
+
},
|
|
3068
|
+
"id": "ev-1700001000",
|
|
3069
|
+
"trigger": "load",
|
|
3070
|
+
"entity": "page",
|
|
3071
|
+
"action": "view",
|
|
3072
|
+
"timestamp": 1700001000,
|
|
3073
|
+
"timing": 3.14,
|
|
3074
|
+
"source": {
|
|
3075
|
+
"count": 1,
|
|
3076
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
3077
|
+
"type": "express",
|
|
3078
|
+
"platform": "server"
|
|
3079
|
+
}
|
|
3080
|
+
},
|
|
3081
|
+
"out": [
|
|
3082
|
+
[
|
|
3083
|
+
"client.send",
|
|
3084
|
+
{
|
|
3085
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
3086
|
+
"Message": "{\"name\":\"page view\",\"data\":{\"title\":\"Home\",\"url\":\"https://example.com/\"},\"context\":{\"dev\":[\"test\",1]},\"globals\":{\"pagegroup\":\"docs\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"},\"nested\":[{\"entity\":\"child\",\"data\":{\"is\":\"subordinated\"}}],\"consent\":{\"functional\":true},\"id\":\"ev-1700001000\",\"trigger\":\"load\",\"entity\":\"page\",\"action\":\"view\",\"timestamp\":1700001000,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}"
|
|
3087
|
+
}
|
|
3088
|
+
]
|
|
3089
|
+
]
|
|
3090
|
+
}
|
|
2695
3091
|
}
|
|
2696
3092
|
},
|
|
2697
3093
|
"step": {
|
|
2698
3094
|
"firehoseRecord": {
|
|
2699
3095
|
"title": "Page view record",
|
|
2700
|
-
"description": "A page view is sent to
|
|
3096
|
+
"description": "A page view is sent to Firehose as one record: the full event as JSON followed by a newline.",
|
|
2701
3097
|
"in": {
|
|
2702
3098
|
"name": "page view",
|
|
2703
3099
|
"data": {
|
|
@@ -3274,7 +3670,236 @@
|
|
|
3274
3670
|
"518": 114,
|
|
3275
3671
|
"519": 34,
|
|
3276
3672
|
"520": 125,
|
|
3277
|
-
"521": 125
|
|
3673
|
+
"521": 125,
|
|
3674
|
+
"522": 10
|
|
3675
|
+
}
|
|
3676
|
+
}
|
|
3677
|
+
]
|
|
3678
|
+
}
|
|
3679
|
+
]
|
|
3680
|
+
]
|
|
3681
|
+
},
|
|
3682
|
+
"init": {
|
|
3683
|
+
"title": "Initialization",
|
|
3684
|
+
"description": "Init builds one FirehoseClient for the stream region with the credentials from config.credentials and a 2500 ms per-attempt timeout. Nothing is sent until the first event.",
|
|
3685
|
+
"in": {
|
|
3686
|
+
"settings": {
|
|
3687
|
+
"streamName": "walkeros-events",
|
|
3688
|
+
"region": "eu-central-1"
|
|
3689
|
+
},
|
|
3690
|
+
"credentials": {
|
|
3691
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
3692
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
3693
|
+
}
|
|
3694
|
+
},
|
|
3695
|
+
"out": [
|
|
3696
|
+
[
|
|
3697
|
+
"new FirehoseClient",
|
|
3698
|
+
{
|
|
3699
|
+
"region": "eu-central-1",
|
|
3700
|
+
"credentials": {
|
|
3701
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
3702
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
3703
|
+
},
|
|
3704
|
+
"requestHandler": {
|
|
3705
|
+
"requestTimeout": 2500,
|
|
3706
|
+
"throwOnRequestTimeout": true
|
|
3707
|
+
}
|
|
3708
|
+
}
|
|
3709
|
+
]
|
|
3710
|
+
]
|
|
3711
|
+
},
|
|
3712
|
+
"mappedRecord": {
|
|
3713
|
+
"title": "Mapped record",
|
|
3714
|
+
"description": "A mapping that produces an object sends that object as the record instead of the full event. Keep the event id in it for deduplication.",
|
|
3715
|
+
"in": {
|
|
3716
|
+
"name": "order complete",
|
|
3717
|
+
"data": {
|
|
3718
|
+
"id": "ORD-400",
|
|
3719
|
+
"total": 99.99,
|
|
3720
|
+
"currency": "EUR"
|
|
3721
|
+
},
|
|
3722
|
+
"context": {
|
|
3723
|
+
"shopping": [
|
|
3724
|
+
"complete",
|
|
3725
|
+
0
|
|
3726
|
+
]
|
|
3727
|
+
},
|
|
3728
|
+
"globals": {
|
|
3729
|
+
"pagegroup": "shop"
|
|
3730
|
+
},
|
|
3731
|
+
"custom": {
|
|
3732
|
+
"completely": "random"
|
|
3733
|
+
},
|
|
3734
|
+
"user": {
|
|
3735
|
+
"id": "us3r",
|
|
3736
|
+
"device": "c00k13",
|
|
3737
|
+
"session": "s3ss10n"
|
|
3738
|
+
},
|
|
3739
|
+
"nested": [
|
|
3740
|
+
{
|
|
3741
|
+
"entity": "product",
|
|
3742
|
+
"data": {
|
|
3743
|
+
"id": "ers",
|
|
3744
|
+
"name": "Everyday Ruck Snack",
|
|
3745
|
+
"color": "black",
|
|
3746
|
+
"size": "l",
|
|
3747
|
+
"price": 420
|
|
3748
|
+
},
|
|
3749
|
+
"context": {
|
|
3750
|
+
"shopping": [
|
|
3751
|
+
"complete",
|
|
3752
|
+
0
|
|
3753
|
+
]
|
|
3754
|
+
},
|
|
3755
|
+
"nested": []
|
|
3756
|
+
},
|
|
3757
|
+
{
|
|
3758
|
+
"entity": "product",
|
|
3759
|
+
"data": {
|
|
3760
|
+
"id": "cc",
|
|
3761
|
+
"name": "Cool Cap",
|
|
3762
|
+
"size": "one size",
|
|
3763
|
+
"price": 42
|
|
3764
|
+
},
|
|
3765
|
+
"context": {
|
|
3766
|
+
"shopping": [
|
|
3767
|
+
"complete",
|
|
3768
|
+
0
|
|
3769
|
+
]
|
|
3770
|
+
},
|
|
3771
|
+
"nested": []
|
|
3772
|
+
},
|
|
3773
|
+
{
|
|
3774
|
+
"entity": "gift",
|
|
3775
|
+
"data": {
|
|
3776
|
+
"name": "Surprise"
|
|
3777
|
+
},
|
|
3778
|
+
"context": {
|
|
3779
|
+
"shopping": [
|
|
3780
|
+
"complete",
|
|
3781
|
+
0
|
|
3782
|
+
]
|
|
3783
|
+
},
|
|
3784
|
+
"nested": []
|
|
3785
|
+
}
|
|
3786
|
+
],
|
|
3787
|
+
"consent": {
|
|
3788
|
+
"functional": true
|
|
3789
|
+
},
|
|
3790
|
+
"id": "ev-1700001001",
|
|
3791
|
+
"trigger": "load",
|
|
3792
|
+
"entity": "order",
|
|
3793
|
+
"action": "complete",
|
|
3794
|
+
"timestamp": 1700001001,
|
|
3795
|
+
"timing": 3.14,
|
|
3796
|
+
"source": {
|
|
3797
|
+
"count": 1,
|
|
3798
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
3799
|
+
"type": "express",
|
|
3800
|
+
"platform": "server"
|
|
3801
|
+
}
|
|
3802
|
+
},
|
|
3803
|
+
"mapping": {
|
|
3804
|
+
"data": {
|
|
3805
|
+
"map": {
|
|
3806
|
+
"id": "id",
|
|
3807
|
+
"name": "name",
|
|
3808
|
+
"order_id": "data.id",
|
|
3809
|
+
"total": "data.total"
|
|
3810
|
+
}
|
|
3811
|
+
}
|
|
3812
|
+
},
|
|
3813
|
+
"out": [
|
|
3814
|
+
[
|
|
3815
|
+
"client.send",
|
|
3816
|
+
{
|
|
3817
|
+
"DeliveryStreamName": "walkeros-events",
|
|
3818
|
+
"Records": [
|
|
3819
|
+
{
|
|
3820
|
+
"Data": {
|
|
3821
|
+
"0": 123,
|
|
3822
|
+
"1": 34,
|
|
3823
|
+
"2": 105,
|
|
3824
|
+
"3": 100,
|
|
3825
|
+
"4": 34,
|
|
3826
|
+
"5": 58,
|
|
3827
|
+
"6": 34,
|
|
3828
|
+
"7": 101,
|
|
3829
|
+
"8": 118,
|
|
3830
|
+
"9": 45,
|
|
3831
|
+
"10": 49,
|
|
3832
|
+
"11": 55,
|
|
3833
|
+
"12": 48,
|
|
3834
|
+
"13": 48,
|
|
3835
|
+
"14": 48,
|
|
3836
|
+
"15": 48,
|
|
3837
|
+
"16": 49,
|
|
3838
|
+
"17": 48,
|
|
3839
|
+
"18": 48,
|
|
3840
|
+
"19": 49,
|
|
3841
|
+
"20": 34,
|
|
3842
|
+
"21": 44,
|
|
3843
|
+
"22": 34,
|
|
3844
|
+
"23": 110,
|
|
3845
|
+
"24": 97,
|
|
3846
|
+
"25": 109,
|
|
3847
|
+
"26": 101,
|
|
3848
|
+
"27": 34,
|
|
3849
|
+
"28": 58,
|
|
3850
|
+
"29": 34,
|
|
3851
|
+
"30": 111,
|
|
3852
|
+
"31": 114,
|
|
3853
|
+
"32": 100,
|
|
3854
|
+
"33": 101,
|
|
3855
|
+
"34": 114,
|
|
3856
|
+
"35": 32,
|
|
3857
|
+
"36": 99,
|
|
3858
|
+
"37": 111,
|
|
3859
|
+
"38": 109,
|
|
3860
|
+
"39": 112,
|
|
3861
|
+
"40": 108,
|
|
3862
|
+
"41": 101,
|
|
3863
|
+
"42": 116,
|
|
3864
|
+
"43": 101,
|
|
3865
|
+
"44": 34,
|
|
3866
|
+
"45": 44,
|
|
3867
|
+
"46": 34,
|
|
3868
|
+
"47": 111,
|
|
3869
|
+
"48": 114,
|
|
3870
|
+
"49": 100,
|
|
3871
|
+
"50": 101,
|
|
3872
|
+
"51": 114,
|
|
3873
|
+
"52": 95,
|
|
3874
|
+
"53": 105,
|
|
3875
|
+
"54": 100,
|
|
3876
|
+
"55": 34,
|
|
3877
|
+
"56": 58,
|
|
3878
|
+
"57": 34,
|
|
3879
|
+
"58": 79,
|
|
3880
|
+
"59": 82,
|
|
3881
|
+
"60": 68,
|
|
3882
|
+
"61": 45,
|
|
3883
|
+
"62": 52,
|
|
3884
|
+
"63": 48,
|
|
3885
|
+
"64": 48,
|
|
3886
|
+
"65": 34,
|
|
3887
|
+
"66": 44,
|
|
3888
|
+
"67": 34,
|
|
3889
|
+
"68": 116,
|
|
3890
|
+
"69": 111,
|
|
3891
|
+
"70": 116,
|
|
3892
|
+
"71": 97,
|
|
3893
|
+
"72": 108,
|
|
3894
|
+
"73": 34,
|
|
3895
|
+
"74": 58,
|
|
3896
|
+
"75": 57,
|
|
3897
|
+
"76": 57,
|
|
3898
|
+
"77": 46,
|
|
3899
|
+
"78": 57,
|
|
3900
|
+
"79": 57,
|
|
3901
|
+
"80": 125,
|
|
3902
|
+
"81": 10
|
|
3278
3903
|
}
|
|
3279
3904
|
}
|
|
3280
3905
|
]
|
|
@@ -3284,7 +3909,7 @@
|
|
|
3284
3909
|
},
|
|
3285
3910
|
"orderEvent": {
|
|
3286
3911
|
"title": "Order record",
|
|
3287
|
-
"description": "An order complete event is serialized and delivered to Firehose as
|
|
3912
|
+
"description": "An order complete event is serialized and delivered to Firehose as one newline-terminated record.",
|
|
3288
3913
|
"in": {
|
|
3289
3914
|
"name": "order complete",
|
|
3290
3915
|
"data": {
|
|
@@ -4266,7 +4891,8 @@
|
|
|
4266
4891
|
"882": 114,
|
|
4267
4892
|
"883": 34,
|
|
4268
4893
|
"884": 125,
|
|
4269
|
-
"885": 125
|
|
4894
|
+
"885": 125,
|
|
4895
|
+
"886": 10
|
|
4270
4896
|
}
|
|
4271
4897
|
}
|
|
4272
4898
|
]
|
|
@@ -4834,7 +5460,8 @@
|
|
|
4834
5460
|
"500": 114,
|
|
4835
5461
|
"501": 34,
|
|
4836
5462
|
"502": 125,
|
|
4837
|
-
"503": 125
|
|
5463
|
+
"503": 125,
|
|
5464
|
+
"504": 10
|
|
4838
5465
|
}
|
|
4839
5466
|
}
|
|
4840
5467
|
]
|
|
@@ -4850,7 +5477,7 @@
|
|
|
4850
5477
|
"push": {
|
|
4851
5478
|
"AWS": {
|
|
4852
5479
|
"FirehoseClient": {
|
|
4853
|
-
"$code": "class{config;constructor(e){this.config=e}async send(e){return{
|
|
5480
|
+
"$code": "class{config;constructor(e){this.config=e}async send(e){const t=\"input\"in e?e.input:void 0;var i;return{FailedPutCount:0,Encrypted:!1,RequestResponses:(\"object\"==typeof(i=t)&&null!==i&&\"Records\"in i&&Array.isArray(i.Records)?t.Records:[]).map((e,t)=>({RecordId:`mock-record-id-${t}`}))}}destroy(){}}"
|
|
4854
5481
|
},
|
|
4855
5482
|
"PutRecordBatchCommand": {
|
|
4856
5483
|
"$code": "class{input;constructor(e){this.input=e}get[Symbol.toStringTag](){return\"PutRecordBatchCommand\"}}"
|
|
@@ -4864,7 +5491,7 @@
|
|
|
4864
5491
|
"step": {
|
|
4865
5492
|
"firehoseRecord": {
|
|
4866
5493
|
"title": "Page view record",
|
|
4867
|
-
"description": "A page view is sent to
|
|
5494
|
+
"description": "A page view is sent to Firehose as one record: the full event as JSON followed by a newline.",
|
|
4868
5495
|
"in": {
|
|
4869
5496
|
"name": "page view",
|
|
4870
5497
|
"data": {
|
|
@@ -5441,7 +6068,8 @@
|
|
|
5441
6068
|
"518": 114,
|
|
5442
6069
|
"519": 34,
|
|
5443
6070
|
"520": 125,
|
|
5444
|
-
"521": 125
|
|
6071
|
+
"521": 125,
|
|
6072
|
+
"522": 10
|
|
5445
6073
|
}
|
|
5446
6074
|
}
|
|
5447
6075
|
]
|
|
@@ -5449,13 +6077,241 @@
|
|
|
5449
6077
|
]
|
|
5450
6078
|
]
|
|
5451
6079
|
},
|
|
5452
|
-
"
|
|
5453
|
-
"title": "
|
|
5454
|
-
"description": "
|
|
6080
|
+
"init": {
|
|
6081
|
+
"title": "Initialization",
|
|
6082
|
+
"description": "Init builds one FirehoseClient for the stream region with the credentials from config.credentials and a 2500 ms per-attempt timeout. Nothing is sent until the first event.",
|
|
5455
6083
|
"in": {
|
|
5456
|
-
"
|
|
5457
|
-
|
|
5458
|
-
"
|
|
6084
|
+
"settings": {
|
|
6085
|
+
"streamName": "walkeros-events",
|
|
6086
|
+
"region": "eu-central-1"
|
|
6087
|
+
},
|
|
6088
|
+
"credentials": {
|
|
6089
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
6090
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
6091
|
+
}
|
|
6092
|
+
},
|
|
6093
|
+
"out": [
|
|
6094
|
+
[
|
|
6095
|
+
"new FirehoseClient",
|
|
6096
|
+
{
|
|
6097
|
+
"region": "eu-central-1",
|
|
6098
|
+
"credentials": {
|
|
6099
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
6100
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
6101
|
+
},
|
|
6102
|
+
"requestHandler": {
|
|
6103
|
+
"requestTimeout": 2500,
|
|
6104
|
+
"throwOnRequestTimeout": true
|
|
6105
|
+
}
|
|
6106
|
+
}
|
|
6107
|
+
]
|
|
6108
|
+
]
|
|
6109
|
+
},
|
|
6110
|
+
"mappedRecord": {
|
|
6111
|
+
"title": "Mapped record",
|
|
6112
|
+
"description": "A mapping that produces an object sends that object as the record instead of the full event. Keep the event id in it for deduplication.",
|
|
6113
|
+
"in": {
|
|
6114
|
+
"name": "order complete",
|
|
6115
|
+
"data": {
|
|
6116
|
+
"id": "ORD-400",
|
|
6117
|
+
"total": 99.99,
|
|
6118
|
+
"currency": "EUR"
|
|
6119
|
+
},
|
|
6120
|
+
"context": {
|
|
6121
|
+
"shopping": [
|
|
6122
|
+
"complete",
|
|
6123
|
+
0
|
|
6124
|
+
]
|
|
6125
|
+
},
|
|
6126
|
+
"globals": {
|
|
6127
|
+
"pagegroup": "shop"
|
|
6128
|
+
},
|
|
6129
|
+
"custom": {
|
|
6130
|
+
"completely": "random"
|
|
6131
|
+
},
|
|
6132
|
+
"user": {
|
|
6133
|
+
"id": "us3r",
|
|
6134
|
+
"device": "c00k13",
|
|
6135
|
+
"session": "s3ss10n"
|
|
6136
|
+
},
|
|
6137
|
+
"nested": [
|
|
6138
|
+
{
|
|
6139
|
+
"entity": "product",
|
|
6140
|
+
"data": {
|
|
6141
|
+
"id": "ers",
|
|
6142
|
+
"name": "Everyday Ruck Snack",
|
|
6143
|
+
"color": "black",
|
|
6144
|
+
"size": "l",
|
|
6145
|
+
"price": 420
|
|
6146
|
+
},
|
|
6147
|
+
"context": {
|
|
6148
|
+
"shopping": [
|
|
6149
|
+
"complete",
|
|
6150
|
+
0
|
|
6151
|
+
]
|
|
6152
|
+
},
|
|
6153
|
+
"nested": []
|
|
6154
|
+
},
|
|
6155
|
+
{
|
|
6156
|
+
"entity": "product",
|
|
6157
|
+
"data": {
|
|
6158
|
+
"id": "cc",
|
|
6159
|
+
"name": "Cool Cap",
|
|
6160
|
+
"size": "one size",
|
|
6161
|
+
"price": 42
|
|
6162
|
+
},
|
|
6163
|
+
"context": {
|
|
6164
|
+
"shopping": [
|
|
6165
|
+
"complete",
|
|
6166
|
+
0
|
|
6167
|
+
]
|
|
6168
|
+
},
|
|
6169
|
+
"nested": []
|
|
6170
|
+
},
|
|
6171
|
+
{
|
|
6172
|
+
"entity": "gift",
|
|
6173
|
+
"data": {
|
|
6174
|
+
"name": "Surprise"
|
|
6175
|
+
},
|
|
6176
|
+
"context": {
|
|
6177
|
+
"shopping": [
|
|
6178
|
+
"complete",
|
|
6179
|
+
0
|
|
6180
|
+
]
|
|
6181
|
+
},
|
|
6182
|
+
"nested": []
|
|
6183
|
+
}
|
|
6184
|
+
],
|
|
6185
|
+
"consent": {
|
|
6186
|
+
"functional": true
|
|
6187
|
+
},
|
|
6188
|
+
"id": "ev-1700001001",
|
|
6189
|
+
"trigger": "load",
|
|
6190
|
+
"entity": "order",
|
|
6191
|
+
"action": "complete",
|
|
6192
|
+
"timestamp": 1700001001,
|
|
6193
|
+
"timing": 3.14,
|
|
6194
|
+
"source": {
|
|
6195
|
+
"count": 1,
|
|
6196
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
6197
|
+
"type": "express",
|
|
6198
|
+
"platform": "server"
|
|
6199
|
+
}
|
|
6200
|
+
},
|
|
6201
|
+
"mapping": {
|
|
6202
|
+
"data": {
|
|
6203
|
+
"map": {
|
|
6204
|
+
"id": "id",
|
|
6205
|
+
"name": "name",
|
|
6206
|
+
"order_id": "data.id",
|
|
6207
|
+
"total": "data.total"
|
|
6208
|
+
}
|
|
6209
|
+
}
|
|
6210
|
+
},
|
|
6211
|
+
"out": [
|
|
6212
|
+
[
|
|
6213
|
+
"client.send",
|
|
6214
|
+
{
|
|
6215
|
+
"DeliveryStreamName": "walkeros-events",
|
|
6216
|
+
"Records": [
|
|
6217
|
+
{
|
|
6218
|
+
"Data": {
|
|
6219
|
+
"0": 123,
|
|
6220
|
+
"1": 34,
|
|
6221
|
+
"2": 105,
|
|
6222
|
+
"3": 100,
|
|
6223
|
+
"4": 34,
|
|
6224
|
+
"5": 58,
|
|
6225
|
+
"6": 34,
|
|
6226
|
+
"7": 101,
|
|
6227
|
+
"8": 118,
|
|
6228
|
+
"9": 45,
|
|
6229
|
+
"10": 49,
|
|
6230
|
+
"11": 55,
|
|
6231
|
+
"12": 48,
|
|
6232
|
+
"13": 48,
|
|
6233
|
+
"14": 48,
|
|
6234
|
+
"15": 48,
|
|
6235
|
+
"16": 49,
|
|
6236
|
+
"17": 48,
|
|
6237
|
+
"18": 48,
|
|
6238
|
+
"19": 49,
|
|
6239
|
+
"20": 34,
|
|
6240
|
+
"21": 44,
|
|
6241
|
+
"22": 34,
|
|
6242
|
+
"23": 110,
|
|
6243
|
+
"24": 97,
|
|
6244
|
+
"25": 109,
|
|
6245
|
+
"26": 101,
|
|
6246
|
+
"27": 34,
|
|
6247
|
+
"28": 58,
|
|
6248
|
+
"29": 34,
|
|
6249
|
+
"30": 111,
|
|
6250
|
+
"31": 114,
|
|
6251
|
+
"32": 100,
|
|
6252
|
+
"33": 101,
|
|
6253
|
+
"34": 114,
|
|
6254
|
+
"35": 32,
|
|
6255
|
+
"36": 99,
|
|
6256
|
+
"37": 111,
|
|
6257
|
+
"38": 109,
|
|
6258
|
+
"39": 112,
|
|
6259
|
+
"40": 108,
|
|
6260
|
+
"41": 101,
|
|
6261
|
+
"42": 116,
|
|
6262
|
+
"43": 101,
|
|
6263
|
+
"44": 34,
|
|
6264
|
+
"45": 44,
|
|
6265
|
+
"46": 34,
|
|
6266
|
+
"47": 111,
|
|
6267
|
+
"48": 114,
|
|
6268
|
+
"49": 100,
|
|
6269
|
+
"50": 101,
|
|
6270
|
+
"51": 114,
|
|
6271
|
+
"52": 95,
|
|
6272
|
+
"53": 105,
|
|
6273
|
+
"54": 100,
|
|
6274
|
+
"55": 34,
|
|
6275
|
+
"56": 58,
|
|
6276
|
+
"57": 34,
|
|
6277
|
+
"58": 79,
|
|
6278
|
+
"59": 82,
|
|
6279
|
+
"60": 68,
|
|
6280
|
+
"61": 45,
|
|
6281
|
+
"62": 52,
|
|
6282
|
+
"63": 48,
|
|
6283
|
+
"64": 48,
|
|
6284
|
+
"65": 34,
|
|
6285
|
+
"66": 44,
|
|
6286
|
+
"67": 34,
|
|
6287
|
+
"68": 116,
|
|
6288
|
+
"69": 111,
|
|
6289
|
+
"70": 116,
|
|
6290
|
+
"71": 97,
|
|
6291
|
+
"72": 108,
|
|
6292
|
+
"73": 34,
|
|
6293
|
+
"74": 58,
|
|
6294
|
+
"75": 57,
|
|
6295
|
+
"76": 57,
|
|
6296
|
+
"77": 46,
|
|
6297
|
+
"78": 57,
|
|
6298
|
+
"79": 57,
|
|
6299
|
+
"80": 125,
|
|
6300
|
+
"81": 10
|
|
6301
|
+
}
|
|
6302
|
+
}
|
|
6303
|
+
]
|
|
6304
|
+
}
|
|
6305
|
+
]
|
|
6306
|
+
]
|
|
6307
|
+
},
|
|
6308
|
+
"orderEvent": {
|
|
6309
|
+
"title": "Order record",
|
|
6310
|
+
"description": "An order complete event is serialized and delivered to Firehose as one newline-terminated record.",
|
|
6311
|
+
"in": {
|
|
6312
|
+
"name": "order complete",
|
|
6313
|
+
"data": {
|
|
6314
|
+
"id": "ORD-400",
|
|
5459
6315
|
"total": 99.99,
|
|
5460
6316
|
"currency": "EUR"
|
|
5461
6317
|
},
|
|
@@ -6433,7 +7289,8 @@
|
|
|
6433
7289
|
"882": 114,
|
|
6434
7290
|
"883": 34,
|
|
6435
7291
|
"884": 125,
|
|
6436
|
-
"885": 125
|
|
7292
|
+
"885": 125,
|
|
7293
|
+
"886": 10
|
|
6437
7294
|
}
|
|
6438
7295
|
}
|
|
6439
7296
|
]
|
|
@@ -7001,7 +7858,8 @@
|
|
|
7001
7858
|
"500": 114,
|
|
7002
7859
|
"501": 34,
|
|
7003
7860
|
"502": 125,
|
|
7004
|
-
"503": 125
|
|
7861
|
+
"503": 125,
|
|
7862
|
+
"504": 10
|
|
7005
7863
|
}
|
|
7006
7864
|
}
|
|
7007
7865
|
]
|
|
@@ -7016,25 +7874,25 @@
|
|
|
7016
7874
|
"push": {
|
|
7017
7875
|
"AWS": {
|
|
7018
7876
|
"SNSClient": {
|
|
7019
|
-
"$code": "class{constructor(e){this.config=e}config;async send(e){return e instanceof
|
|
7877
|
+
"$code": "class{constructor(e){this.config=e}config;async send(e){return e instanceof C?{TopicArn:\"arn:aws:sns:eu-central-1:123456789012:walkeros-events\"}:e instanceof _?{MessageId:\"mock-message-id\"}:{}}destroy(){}}"
|
|
7020
7878
|
},
|
|
7021
7879
|
"CreateTopicCommand": {
|
|
7022
|
-
"$code": "class extends
|
|
7880
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"CreateTopicCommand\"}}"
|
|
7023
7881
|
},
|
|
7024
7882
|
"PublishCommand": {
|
|
7025
|
-
"$code": "class extends
|
|
7883
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"PublishCommand\"}}"
|
|
7026
7884
|
},
|
|
7027
7885
|
"GetTopicAttributesCommand": {
|
|
7028
|
-
"$code": "class extends
|
|
7886
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"GetTopicAttributesCommand\"}}"
|
|
7029
7887
|
},
|
|
7030
7888
|
"SubscribeCommand": {
|
|
7031
|
-
"$code": "class extends
|
|
7889
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"SubscribeCommand\"}}"
|
|
7032
7890
|
},
|
|
7033
7891
|
"STSClient": {
|
|
7034
|
-
"$code": "class{constructor(e){this.config=e}config;async send(){return{Account:\"123456789012\"}}}"
|
|
7892
|
+
"$code": "class{constructor(e){this.config=e}config;async send(){return{Account:\"123456789012\",Arn:\"arn:aws:iam::123456789012:user/walkeros\"}}destroy(){}}"
|
|
7035
7893
|
},
|
|
7036
7894
|
"GetCallerIdentityCommand": {
|
|
7037
|
-
"$code": "class extends
|
|
7895
|
+
"$code": "class extends E{get[Symbol.toStringTag](){return\"GetCallerIdentityCommand\"}}"
|
|
7038
7896
|
}
|
|
7039
7897
|
}
|
|
7040
7898
|
},
|
|
@@ -7108,7 +7966,7 @@
|
|
|
7108
7966
|
[
|
|
7109
7967
|
"client.send",
|
|
7110
7968
|
{
|
|
7111
|
-
"TopicArn": "arn:aws:sns:eu-central-1:
|
|
7969
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
7112
7970
|
"Message": "{\"name\":\"product view\",\"data\":{\"id\":\"SKU-1\",\"tenant_id\":\"acme\"},\"context\":{\"shopping\":[\"detail\",0]},\"globals\":{\"pagegroup\":\"shop\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"},\"nested\":[],\"consent\":{\"functional\":true},\"id\":\"ev-1700001002\",\"trigger\":\"load\",\"entity\":\"product\",\"action\":\"view\",\"timestamp\":1700001002,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}",
|
|
7113
7971
|
"MessageAttributes": {
|
|
7114
7972
|
"schema_version": {
|
|
@@ -7124,9 +7982,147 @@
|
|
|
7124
7982
|
]
|
|
7125
7983
|
]
|
|
7126
7984
|
},
|
|
7985
|
+
"init": {
|
|
7986
|
+
"title": "Initialization",
|
|
7987
|
+
"description": "Init builds one SNSClient in the region of the topic ARN with the credentials from config.credentials and a 2500 ms per-attempt timeout. No topic is created and nothing is sent until the first event.",
|
|
7988
|
+
"in": {
|
|
7989
|
+
"settings": {
|
|
7990
|
+
"topicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events"
|
|
7991
|
+
},
|
|
7992
|
+
"credentials": {
|
|
7993
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
7994
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
7995
|
+
}
|
|
7996
|
+
},
|
|
7997
|
+
"out": [
|
|
7998
|
+
[
|
|
7999
|
+
"new SNSClient",
|
|
8000
|
+
{
|
|
8001
|
+
"region": "eu-central-1",
|
|
8002
|
+
"credentials": {
|
|
8003
|
+
"accessKeyId": "$secret.AWS_ACCESS_KEY_ID",
|
|
8004
|
+
"secretAccessKey": "$secret.AWS_SECRET_ACCESS_KEY"
|
|
8005
|
+
},
|
|
8006
|
+
"requestHandler": {
|
|
8007
|
+
"requestTimeout": 2500,
|
|
8008
|
+
"throwOnRequestTimeout": true
|
|
8009
|
+
}
|
|
8010
|
+
}
|
|
8011
|
+
]
|
|
8012
|
+
]
|
|
8013
|
+
},
|
|
8014
|
+
"mappedMessage": {
|
|
8015
|
+
"title": "Mapped message",
|
|
8016
|
+
"description": "A mapping that produces an object publishes that object as the Message instead of the full event. Keep the event id in it for deduplication.",
|
|
8017
|
+
"in": {
|
|
8018
|
+
"name": "order complete",
|
|
8019
|
+
"data": {
|
|
8020
|
+
"id": "ORD-400",
|
|
8021
|
+
"total": 99.99,
|
|
8022
|
+
"currency": "EUR"
|
|
8023
|
+
},
|
|
8024
|
+
"context": {
|
|
8025
|
+
"shopping": [
|
|
8026
|
+
"complete",
|
|
8027
|
+
0
|
|
8028
|
+
]
|
|
8029
|
+
},
|
|
8030
|
+
"globals": {
|
|
8031
|
+
"pagegroup": "shop"
|
|
8032
|
+
},
|
|
8033
|
+
"custom": {
|
|
8034
|
+
"completely": "random"
|
|
8035
|
+
},
|
|
8036
|
+
"user": {
|
|
8037
|
+
"id": "usr-789"
|
|
8038
|
+
},
|
|
8039
|
+
"nested": [
|
|
8040
|
+
{
|
|
8041
|
+
"entity": "product",
|
|
8042
|
+
"data": {
|
|
8043
|
+
"id": "ers",
|
|
8044
|
+
"name": "Everyday Ruck Snack",
|
|
8045
|
+
"color": "black",
|
|
8046
|
+
"size": "l",
|
|
8047
|
+
"price": 420
|
|
8048
|
+
},
|
|
8049
|
+
"context": {
|
|
8050
|
+
"shopping": [
|
|
8051
|
+
"complete",
|
|
8052
|
+
0
|
|
8053
|
+
]
|
|
8054
|
+
},
|
|
8055
|
+
"nested": []
|
|
8056
|
+
},
|
|
8057
|
+
{
|
|
8058
|
+
"entity": "product",
|
|
8059
|
+
"data": {
|
|
8060
|
+
"id": "cc",
|
|
8061
|
+
"name": "Cool Cap",
|
|
8062
|
+
"size": "one size",
|
|
8063
|
+
"price": 42
|
|
8064
|
+
},
|
|
8065
|
+
"context": {
|
|
8066
|
+
"shopping": [
|
|
8067
|
+
"complete",
|
|
8068
|
+
0
|
|
8069
|
+
]
|
|
8070
|
+
},
|
|
8071
|
+
"nested": []
|
|
8072
|
+
},
|
|
8073
|
+
{
|
|
8074
|
+
"entity": "gift",
|
|
8075
|
+
"data": {
|
|
8076
|
+
"name": "Surprise"
|
|
8077
|
+
},
|
|
8078
|
+
"context": {
|
|
8079
|
+
"shopping": [
|
|
8080
|
+
"complete",
|
|
8081
|
+
0
|
|
8082
|
+
]
|
|
8083
|
+
},
|
|
8084
|
+
"nested": []
|
|
8085
|
+
}
|
|
8086
|
+
],
|
|
8087
|
+
"consent": {
|
|
8088
|
+
"functional": true
|
|
8089
|
+
},
|
|
8090
|
+
"id": "ev-1700001001",
|
|
8091
|
+
"trigger": "load",
|
|
8092
|
+
"entity": "order",
|
|
8093
|
+
"action": "complete",
|
|
8094
|
+
"timestamp": 1700001001,
|
|
8095
|
+
"timing": 3.14,
|
|
8096
|
+
"source": {
|
|
8097
|
+
"count": 1,
|
|
8098
|
+
"trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
|
|
8099
|
+
"type": "express",
|
|
8100
|
+
"platform": "server"
|
|
8101
|
+
}
|
|
8102
|
+
},
|
|
8103
|
+
"mapping": {
|
|
8104
|
+
"data": {
|
|
8105
|
+
"map": {
|
|
8106
|
+
"id": "id",
|
|
8107
|
+
"name": "name",
|
|
8108
|
+
"order_id": "data.id",
|
|
8109
|
+
"total": "data.total"
|
|
8110
|
+
}
|
|
8111
|
+
}
|
|
8112
|
+
},
|
|
8113
|
+
"out": [
|
|
8114
|
+
[
|
|
8115
|
+
"client.send",
|
|
8116
|
+
{
|
|
8117
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
8118
|
+
"Message": "{\"id\":\"ev-1700001001\",\"name\":\"order complete\",\"order_id\":\"ORD-400\",\"total\":99.99}"
|
|
8119
|
+
}
|
|
8120
|
+
]
|
|
8121
|
+
]
|
|
8122
|
+
},
|
|
7127
8123
|
"orderEvent": {
|
|
7128
8124
|
"title": "Order publish with FIFO group (path-resolved)",
|
|
7129
|
-
"description": "An order complete event is published
|
|
8125
|
+
"description": "An order complete event is published to a FIFO topic with a messageGroupId resolved from the event via the mapping path \"user.id\". The deduplication id defaults to the event id.",
|
|
7130
8126
|
"in": {
|
|
7131
8127
|
"name": "order complete",
|
|
7132
8128
|
"data": {
|
|
@@ -7222,9 +8218,10 @@
|
|
|
7222
8218
|
[
|
|
7223
8219
|
"client.send",
|
|
7224
8220
|
{
|
|
7225
|
-
"TopicArn": "arn:aws:sns:eu-central-1:
|
|
8221
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events.fifo",
|
|
7226
8222
|
"Message": "{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-400\",\"total\":99.99,\"currency\":\"EUR\"},\"context\":{\"shopping\":[\"complete\",0]},\"globals\":{\"pagegroup\":\"shop\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"usr-789\"},\"nested\":[{\"entity\":\"product\",\"data\":{\"id\":\"ers\",\"name\":\"Everyday Ruck Snack\",\"color\":\"black\",\"size\":\"l\",\"price\":420},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"product\",\"data\":{\"id\":\"cc\",\"name\":\"Cool Cap\",\"size\":\"one size\",\"price\":42},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]},{\"entity\":\"gift\",\"data\":{\"name\":\"Surprise\"},\"context\":{\"shopping\":[\"complete\",0]},\"nested\":[]}],\"consent\":{\"functional\":true},\"id\":\"ev-1700001001\",\"trigger\":\"load\",\"entity\":\"order\",\"action\":\"complete\",\"timestamp\":1700001001,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}",
|
|
7227
|
-
"MessageGroupId": "usr-789"
|
|
8223
|
+
"MessageGroupId": "usr-789",
|
|
8224
|
+
"MessageDeduplicationId": "ev-1700001001"
|
|
7228
8225
|
}
|
|
7229
8226
|
]
|
|
7230
8227
|
]
|
|
@@ -7283,7 +8280,7 @@
|
|
|
7283
8280
|
[
|
|
7284
8281
|
"client.send",
|
|
7285
8282
|
{
|
|
7286
|
-
"TopicArn": "arn:aws:sns:eu-central-1:
|
|
8283
|
+
"TopicArn": "arn:aws:sns:eu-central-1:123456789012:walkeros-events",
|
|
7287
8284
|
"Message": "{\"name\":\"page view\",\"data\":{\"title\":\"Home\",\"url\":\"https://example.com/\"},\"context\":{\"dev\":[\"test\",1]},\"globals\":{\"pagegroup\":\"docs\"},\"custom\":{\"completely\":\"random\"},\"user\":{\"id\":\"us3r\",\"device\":\"c00k13\",\"session\":\"s3ss10n\"},\"nested\":[{\"entity\":\"child\",\"data\":{\"is\":\"subordinated\"}}],\"consent\":{\"functional\":true},\"id\":\"ev-1700001000\",\"trigger\":\"load\",\"entity\":\"page\",\"action\":\"view\",\"timestamp\":1700001000,\"timing\":3.14,\"source\":{\"count\":1,\"trace\":\"0a1b2c3d4e5f60718293a4b5c6d7e8f9\",\"type\":\"express\",\"platform\":\"server\"}}"
|
|
7288
8285
|
}
|
|
7289
8286
|
]
|
|
@@ -7291,5 +8288,210 @@
|
|
|
7291
8288
|
}
|
|
7292
8289
|
}
|
|
7293
8290
|
}
|
|
8291
|
+
},
|
|
8292
|
+
"exportSchemas": {
|
|
8293
|
+
"destinationFirehose": {
|
|
8294
|
+
"settings": {
|
|
8295
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8296
|
+
"type": "object",
|
|
8297
|
+
"properties": {
|
|
8298
|
+
"streamName": {
|
|
8299
|
+
"type": "string",
|
|
8300
|
+
"minLength": 1,
|
|
8301
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
8302
|
+
},
|
|
8303
|
+
"region": {
|
|
8304
|
+
"type": "string",
|
|
8305
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
8306
|
+
},
|
|
8307
|
+
"newline": {
|
|
8308
|
+
"type": "boolean",
|
|
8309
|
+
"description": "Append a newline to every record (default true). Set false when the stream adds its own new line delimiter."
|
|
8310
|
+
},
|
|
8311
|
+
"config": {
|
|
8312
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
8313
|
+
},
|
|
8314
|
+
"client": {
|
|
8315
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
8316
|
+
},
|
|
8317
|
+
"firehose": {
|
|
8318
|
+
"type": "object",
|
|
8319
|
+
"properties": {
|
|
8320
|
+
"streamName": {
|
|
8321
|
+
"type": "string",
|
|
8322
|
+
"minLength": 1,
|
|
8323
|
+
"description": "Name of the Firehose stream (like walkeros-events). Required."
|
|
8324
|
+
},
|
|
8325
|
+
"client": {
|
|
8326
|
+
"description": "A FirehoseClient of your own. Used as is and never closed by the destination."
|
|
8327
|
+
},
|
|
8328
|
+
"region": {
|
|
8329
|
+
"type": "string",
|
|
8330
|
+
"description": "AWS region of the stream (like eu-central-1). Default: AWS_REGION or the active profile, else eu-central-1."
|
|
8331
|
+
},
|
|
8332
|
+
"config": {
|
|
8333
|
+
"description": "Raw FirehoseClient options passed to the SDK (like { endpoint, maxAttempts }). Put keys in config.credentials instead."
|
|
8334
|
+
}
|
|
8335
|
+
},
|
|
8336
|
+
"additionalProperties": false,
|
|
8337
|
+
"description": "Deprecated: use the flat fields streamName, region, config and client.",
|
|
8338
|
+
"title": "firehose"
|
|
8339
|
+
}
|
|
8340
|
+
},
|
|
8341
|
+
"additionalProperties": false
|
|
8342
|
+
},
|
|
8343
|
+
"mapping": {
|
|
8344
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8345
|
+
"type": "object",
|
|
8346
|
+
"properties": {},
|
|
8347
|
+
"additionalProperties": false
|
|
8348
|
+
}
|
|
8349
|
+
},
|
|
8350
|
+
"destinationSNS": {
|
|
8351
|
+
"settings": {
|
|
8352
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8353
|
+
"type": "object",
|
|
8354
|
+
"properties": {
|
|
8355
|
+
"topicArn": {
|
|
8356
|
+
"type": "string",
|
|
8357
|
+
"description": "Topic ARN (like arn:aws:sns:eu-central-1:123456789012:walkeros-events). Region and topic name derive from it. Required unless topicName is set."
|
|
8358
|
+
},
|
|
8359
|
+
"topicName": {
|
|
8360
|
+
"type": "string",
|
|
8361
|
+
"minLength": 1,
|
|
8362
|
+
"description": "Topic name (like walkeros-events). Used by walkeros setup; without topicArn the ARN is completed with the account id at the first publish."
|
|
8363
|
+
},
|
|
8364
|
+
"region": {
|
|
8365
|
+
"type": "string",
|
|
8366
|
+
"description": "AWS region (like eu-central-1). Default: the region in topicArn, AWS_REGION or the active profile, else eu-central-1."
|
|
8367
|
+
},
|
|
8368
|
+
"client": {
|
|
8369
|
+
"description": "An SNSClient of your own. Used as is and never closed by the destination."
|
|
8370
|
+
},
|
|
8371
|
+
"config": {
|
|
8372
|
+
"description": "Raw SNSClient options passed to the SDK. Put keys in config.credentials instead."
|
|
8373
|
+
}
|
|
8374
|
+
},
|
|
8375
|
+
"additionalProperties": false
|
|
8376
|
+
},
|
|
8377
|
+
"mapping": {
|
|
8378
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8379
|
+
"type": "object",
|
|
8380
|
+
"properties": {
|
|
8381
|
+
"messageAttributes": {
|
|
8382
|
+
"type": "object",
|
|
8383
|
+
"propertyNames": {
|
|
8384
|
+
"type": "string"
|
|
8385
|
+
},
|
|
8386
|
+
"additionalProperties": {}
|
|
8387
|
+
},
|
|
8388
|
+
"messageGroupId": {},
|
|
8389
|
+
"messageDeduplicationId": {}
|
|
8390
|
+
},
|
|
8391
|
+
"additionalProperties": false
|
|
8392
|
+
},
|
|
8393
|
+
"setup": {
|
|
8394
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8395
|
+
"type": "object",
|
|
8396
|
+
"properties": {
|
|
8397
|
+
"region": {
|
|
8398
|
+
"type": "string"
|
|
8399
|
+
},
|
|
8400
|
+
"displayName": {
|
|
8401
|
+
"type": "string"
|
|
8402
|
+
},
|
|
8403
|
+
"fifoTopic": {
|
|
8404
|
+
"type": "boolean"
|
|
8405
|
+
},
|
|
8406
|
+
"kmsMasterKeyId": {
|
|
8407
|
+
"type": "string"
|
|
8408
|
+
},
|
|
8409
|
+
"tags": {
|
|
8410
|
+
"type": "object",
|
|
8411
|
+
"propertyNames": {
|
|
8412
|
+
"type": "string"
|
|
8413
|
+
},
|
|
8414
|
+
"additionalProperties": {
|
|
8415
|
+
"type": "string"
|
|
8416
|
+
}
|
|
8417
|
+
},
|
|
8418
|
+
"subscriptions": {
|
|
8419
|
+
"type": "array",
|
|
8420
|
+
"items": {
|
|
8421
|
+
"type": "object",
|
|
8422
|
+
"properties": {
|
|
8423
|
+
"protocol": {
|
|
8424
|
+
"type": "string",
|
|
8425
|
+
"enum": [
|
|
8426
|
+
"sqs",
|
|
8427
|
+
"lambda",
|
|
8428
|
+
"https",
|
|
8429
|
+
"http",
|
|
8430
|
+
"email",
|
|
8431
|
+
"sms"
|
|
8432
|
+
]
|
|
8433
|
+
},
|
|
8434
|
+
"endpoint": {
|
|
8435
|
+
"type": "string",
|
|
8436
|
+
"minLength": 1
|
|
8437
|
+
},
|
|
8438
|
+
"rawMessageDelivery": {
|
|
8439
|
+
"type": "boolean"
|
|
8440
|
+
},
|
|
8441
|
+
"filterPolicy": {
|
|
8442
|
+
"type": "object",
|
|
8443
|
+
"propertyNames": {
|
|
8444
|
+
"type": "string"
|
|
8445
|
+
},
|
|
8446
|
+
"additionalProperties": {}
|
|
8447
|
+
},
|
|
8448
|
+
"deadLetterTargetArn": {
|
|
8449
|
+
"type": "string"
|
|
8450
|
+
}
|
|
8451
|
+
},
|
|
8452
|
+
"required": [
|
|
8453
|
+
"protocol",
|
|
8454
|
+
"endpoint"
|
|
8455
|
+
],
|
|
8456
|
+
"additionalProperties": false
|
|
8457
|
+
}
|
|
8458
|
+
}
|
|
8459
|
+
},
|
|
8460
|
+
"additionalProperties": false
|
|
8461
|
+
}
|
|
8462
|
+
}
|
|
8463
|
+
},
|
|
8464
|
+
"hints": {
|
|
8465
|
+
"minimal-config": {
|
|
8466
|
+
"text": "Firehose needs settings.streamName (plus settings.region when the stream is not in AWS_REGION or eu-central-1). SNS needs settings.topicArn; region and topic name derive from it. Off AWS, add config.credentials. Nothing is sent and no credentials are loaded until the first event.",
|
|
8467
|
+
"code": [
|
|
8468
|
+
{
|
|
8469
|
+
"lang": "json",
|
|
8470
|
+
"code": "{ \"settings\": { \"streamName\": \"walkeros-events\", \"region\": \"eu-central-1\" }, \"credentials\": { \"accessKeyId\": \"$secret.AWS_ACCESS_KEY_ID\", \"secretAccessKey\": \"$secret.AWS_SECRET_ACCESS_KEY\" } }"
|
|
8471
|
+
},
|
|
8472
|
+
{
|
|
8473
|
+
"lang": "json",
|
|
8474
|
+
"code": "{ \"settings\": { \"topicArn\": \"arn:aws:sns:eu-central-1:123456789012:walkeros-events\" } }"
|
|
8475
|
+
}
|
|
8476
|
+
]
|
|
8477
|
+
},
|
|
8478
|
+
"auth-credentials": {
|
|
8479
|
+
"text": "On AWS compute an attached IAM role needs no config at all. Elsewhere, config.credentials ({ accessKeyId, secretAccessKey, sessionToken? }, or the same as a JSON string) wins over settings.config.credentials, which wins over the AWS default chain (AWS_* variables, AWS_PROFILE, ECS, EC2 and web identity roles; Kubernetes can go keyless with AWS_ROLE_ARN plus AWS_WEB_IDENTITY_TOKEN_FILE). Back every value with $secret; never write a literal key. Credentials are shape-checked at init and loaded only at the first send.",
|
|
8480
|
+
"code": [
|
|
8481
|
+
{
|
|
8482
|
+
"lang": "json",
|
|
8483
|
+
"code": "{ \"credentials\": { \"accessKeyId\": \"$secret.AWS_ACCESS_KEY_ID\", \"secretAccessKey\": \"$secret.AWS_SECRET_ACCESS_KEY\" } }"
|
|
8484
|
+
}
|
|
8485
|
+
]
|
|
8486
|
+
},
|
|
8487
|
+
"firehose-records": {
|
|
8488
|
+
"text": "Each record is the mapped data object, or the full event when the mapping produced none, followed by a newline. Set settings.newline: false when the stream adds its own new line delimiter. Batching is on by default (500 records or 1 s); calls carry at most 500 records and 2,900,000 bytes, and a record over 1,000,000 bytes fails as RecordTooLarge without being sent."
|
|
8489
|
+
},
|
|
8490
|
+
"delivery-guarantee": {
|
|
8491
|
+
"text": "Delivery is at least once: deduplicate downstream on event.id, and keep id in mapped data. A record AWS rejects is reported as failed with code, status and retryable. There is no retry beyond the built-in AWS SDK retry: a rejected record goes to the in-memory dead letter queue of the collector, which nothing replays yet. On SNS FIFO topics MessageDeduplicationId defaults to event.id."
|
|
8492
|
+
},
|
|
8493
|
+
"troubleshoot-errors": {
|
|
8494
|
+
"text": "Every failure carries code, status and retryable, and its message names the stream or topic and the region. ResourceNotFoundException: wrong settings.streamName or region. AccessDeniedException / AuthorizationErrorException: the credentials lack firehose:PutRecordBatch or sns:Publish. UnrecognizedClientException, InvalidSignatureException, ExpiredTokenException or no credentials found: check config.credentials or the environment. SNS NotFoundException: the topic does not exist; run walkeros setup or set settings.topicArn. NULL rows in Athena: the stream adds its own new line delimiter too, so set newline: false. InvalidConfig at start: a missing or conflicting setting, named in the message."
|
|
8495
|
+
}
|
|
7294
8496
|
}
|
|
7295
8497
|
}
|