-
Notifications
You must be signed in to change notification settings - Fork 0
/
snf.tf
126 lines (119 loc) · 3.31 KB
/
snf.tf
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
resource "aws_sfn_state_machine" "sfn_state_machine_prefix_false" {
count = var.bucket_prefix == "" ? 1 : 0
name = var.project
role_arn = aws_iam_role.sfn.arn
definition = <<EOF
{
"Comment": "A description of my state machine",
"StartAt": "S3 object keys",
"States": {
"S3 object keys": {
"Type": "Map",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "DISTRIBUTED",
"ExecutionType": "STANDARD"
},
"StartAt": "Lambda Invoke",
"States": {
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${module.lambda_batch_ingestion.lambda_function_arn}:$LATEST"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException",
"Lambda.TooManyRequestsException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"End": true
}
}
},
"ItemReader": {
"Resource": "arn:aws:states:::s3:listObjectsV2",
"Parameters": {
"Bucket": "${var.bucket_name}"
},
"ReaderConfig": {}
},
"MaxConcurrency": ${var.lambda_invoke_max_concurrency},
"Label": "S3objectkeys",
"End": true,
"ResultPath": null
}
}
}
EOF
}
resource "aws_sfn_state_machine" "sfn_state_machine_prefix_true" {
count = length(var.bucket_prefix) > 0 ? 1 : 0
name = var.project
role_arn = aws_iam_role.sfn.arn
definition = <<EOF
{
"Comment": "A description of my state machine",
"StartAt": "S3 object keys",
"States": {
"S3 object keys": {
"Type": "Map",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "DISTRIBUTED",
"ExecutionType": "STANDARD"
},
"StartAt": "Lambda Invoke",
"States": {
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${module.lambda_batch_ingestion.lambda_function_arn}:$LATEST"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException",
"Lambda.TooManyRequestsException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"End": true
}
}
},
"ItemReader": {
"Resource": "arn:aws:states:::s3:listObjectsV2",
"Parameters": {
"Bucket": "${var.bucket_name}",
"Prefix": "${var.bucket_prefix}"
},
"ReaderConfig": {}
},
"MaxConcurrency": ${var.lambda_invoke_max_concurrency},
"Label": "S3objectkeys",
"End": true,
"ResultPath": null
}
}
}
EOF
}