-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSitecoreStreamingRedshiftDestinationStack.yaml
153 lines (153 loc) · 4.8 KB
/
SitecoreStreamingRedshiftDestinationStack.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Parameters:
DeliveryStreamName:
Description: Enter the name for Kinesis Firehose delivery stream
Type: String
CheckpointTableName:
Description: Enter the name for DynamoDB checkpoint table
Type: String
StagingS3BucketName:
Description: Enter the name for S3 bucket used as staging area
Type: String
RedshiftConnectionString:
Description: The Redshift JDBC connection string (e.g. jdbc:redshift://clustername.cuezkggje6fl.region.redshift.amazonaws.com:5439/databasename)
Type: String
RedshiftUsername:
Description: The Redshift user name
Type: String
RedshiftPassword:
Description: The Redshift user password
Type: String
NoEcho: true
RedshiftDestinationTable:
Description: The Redshift destination table
Type: String
Resources:
KinesisDeliveryStream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: !Ref DeliveryStreamName
DeliveryStreamType: DirectPut
RedshiftDestinationConfiguration:
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref CloudWatchLogGroup
LogStreamName: !Ref RedshiftDeliveryLogStream
ClusterJDBCURL: !Ref RedshiftConnectionString
Username: !Ref RedshiftUsername
Password: !Ref RedshiftPassword
CopyCommand:
DataTableName: !Ref RedshiftDestinationTable
CopyOptions:
!Join
- ""
- - "json"
- " "
- "'"
- "s3://"
- !Ref StagingS3BucketName
- "/redshift-jsonpaths.json"
- "'"
- " "
- "region"
- " "
- "'"
- !Ref 'AWS::Region'
- "'"
- "\n"
- "timeformat 'YYYY-MM-DD HH:MI:SSZ'"
RoleARN: !GetAtt KinesisDataDeliveryRole.Arn
S3Configuration:
BucketARN: !GetAtt S3StagingBucket.Arn
RoleARN: !GetAtt KinesisDataDeliveryRole.Arn
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref CloudWatchLogGroup
LogStreamName: !Ref S3DeliveryLogStream
CompressionFormat: UNCOMPRESSED
S3StagingBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref StagingS3BucketName
CheckpointTable:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
-
AttributeName: DeliveryStreamName
AttributeType: S
KeySchema:
-
AttributeName: DeliveryStreamName
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
TableName: !Ref CheckpointTableName
CloudWatchLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName:
!Join
- ''
- - '/aws/kinesisfirehose/'
- !Ref DeliveryStreamName
RedshiftDeliveryLogStream:
Type: AWS::Logs::LogStream
Properties:
LogGroupName: !Ref CloudWatchLogGroup
LogStreamName: RedshiftDelivery
S3DeliveryLogStream:
Type: AWS::Logs::LogStream
Properties:
LogGroupName: !Ref CloudWatchLogGroup
LogStreamName: S3Delivery
KinesisDataDeliveryRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Sid: ''
Effect: Allow
Principal:
Service: firehose.amazonaws.com
Action:
- 'sts:AssumeRole'
Policies:
- PolicyName: firehouse_data_delivery_policy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- 's3:AbortMultipartUpload'
- 's3:GetBucketLocation'
- 's3:GetObject'
- 's3:ListBucket'
- 's3:ListBucketMultipartUploads'
- 's3:PutObject'
Resource:
- !Join
- ''
- - 'arn:aws:s3:::'
- !Ref StagingS3BucketName
- !Join
- ''
- - 'arn:aws:s3:::'
- !Ref StagingS3BucketName
- '/*'
- Effect: Allow
Action: 'logs:PutLogEvents'
Resource:
- !Join
- ''
- - 'arn:aws:logs:'
- !Ref 'AWS::Region'
- ':'
- !Ref 'AWS::AccountId'
- 'log-group:/aws/kinesisfirehose/'
- !Ref DeliveryStreamName
- ':log-stream:*'