-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig_management.asl.json
123 lines (123 loc) · 2.99 KB
/
config_management.asl.json
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
{
"Comment": "A description of an example IoT Config Management State Machine",
"StartAt": "DescribeThing",
"States": {
"DescribeThing": {
"Type": "Task",
"Parameters": {
"ThingName.$": "$.thingName"
},
"Resource": "arn:aws:states:::aws-sdk:iot:describeThing",
"Next": "3Party_GetUserProfileForDevice",
"ResultPath": "$.thing",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"BackoffRate": 2,
"IntervalSeconds": 2,
"MaxAttempts": 2
}
]
},
"3Party_GetUserProfileForDevice": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${3PartyGetUserProfileForDeviceArn}"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException",
"Lambda.TooManyRequestsException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Next": "SetConfigurationOnDevice"
},
"SetConfigurationOnDevice": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${SetConfigurationFunctionArn}"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException",
"Lambda.TooManyRequestsException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Next": "WaitForConfirmationEventFromDevice"
},
"WaitForConfirmationEventFromDevice": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:dynamodb:putItem.waitForTaskToken",
"Parameters": {
"TableName": "CMTaskTokens",
"Item": {
"deviceId": {
"S.$": "$.thingName"
},
"operationId": {
"S.$": "$.operationId"
},
"token": {
"S.$": "$$.Task.Token"
},
"name": {
"S.$": "$.name"
},
"status": {
"S": "ACTIVE"
}
}
},
"Next": "InterpretResult",
"ResultPath": "$.result",
"HeartbeatSeconds": 12
},
"InterpretResult": {
"Type": "Choice",
"Choices": [
{
"And": [
{
"Variable": "$.result",
"IsPresent": true
},
{
"Variable": "$.result.status",
"StringMatches": "SUCCESS"
}
],
"Next": "Success"
}
],
"Default": "Fail"
},
"Success": {
"Type": "Succeed"
},
"Fail": {
"Type": "Fail"
}
}
}