-
Notifications
You must be signed in to change notification settings - Fork 0
/
cloudformation.json
130 lines (122 loc) · 3.49 KB
/
cloudformation.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
124
125
126
127
128
129
130
{
"Resources": {
"DockerHubToSlackAPI": {
"Type": "AWS::ApiGateway::RestApi",
"Properties": {
"Name": "DockerHubToSlackAPI"
}
},
"APIStaticPart": {
"Type": "AWS::ApiGateway::Resource",
"Properties": {
"PathPart": "services",
"RestApiId": { "Ref": "DockerHubToSlackAPI" },
"ParentId": { "Fn::GetAtt": ["DockerHubToSlackAPI", "RootResourceId"] }
},
"DependsOn": "DockerHubToSlackAPI"
},
"APIDynamicPart": {
"Type": "AWS::ApiGateway::Resource",
"Properties": {
"PathPart": "{service+}",
"RestApiId": { "Ref": "DockerHubToSlackAPI" },
"ParentId": { "Ref": "APIStaticPart" }
},
"DependsOn": "APIStaticPart"
},
"APIServicePostMethod": {
"Type": "AWS::ApiGateway::Method",
"Properties": {
"AuthorizationType": "NONE",
"HttpMethod": "POST",
"ResourceId": { "Ref": "APIDynamicPart" },
"RestApiId": { "Ref": "DockerHubToSlackAPI" },
"Integration": {
"Type": "AWS_PROXY",
"IntegrationHttpMethod": "POST",
"Uri": { "Fn::Sub":"arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${DockerHubToSlackFunction.Arn}/invocations" }
}
},
"DependsOn": [
"APIDynamicPart",
"DockerHubToSlackFunction"
]
},
"APIDeployment": {
"Type": "AWS::ApiGateway::Deployment",
"Properties": {
"RestApiId": { "Ref": "DockerHubToSlackAPI" }
},
"DependsOn": "APIServicePostMethod"
},
"APIStage": {
"Type": "AWS::ApiGateway::Stage",
"Properties": {
"DeploymentId": { "Ref": "APIDeployment" },
"RestApiId": { "Ref": "DockerHubToSlackAPI" },
"StageName": "v1"
},
"DependsOn": "APIDeployment"
},
"DockerHubToSlackFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Code": {
"S3Bucket": "dockerhubtoslacklambda",
"S3Key": "lambda.zip"
},
"Runtime": "python2.7",
"Handler": "lambda.handler",
"Timeout": "5",
"Role": { "Fn::GetAtt": ["LambdaExecutionRole", "Arn"] },
},
"DependsOn": "LambdaExecutionRole"
},
"LambdaExecutionRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
},
"Path": "/",
"Policies": [
{
"PolicyName": "lambdaexecution",
"PolicyDocument": {
"Version" : "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
}
]
}
},
"LambdaInvokePermission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"Action": "lambda:InvokeFunction",
"FunctionName": { "Fn::GetAtt": ["DockerHubToSlackFunction", "Arn"] },
"Principal": "apigateway.amazonaws.com"
},
"DependsOn": "DockerHubToSlackFunction"
}
}
}