-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutputTemplate.yaml
132 lines (132 loc) · 3.8 KB
/
outputTemplate.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
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: CD Demo Lambda
Resources:
HelloWorld:
Type: AWS::Serverless::Function
Properties:
Handler: app.lambdaHandler
CodeUri: s3://dh-lambda-ci-cd-demo-bucket/c847f03ebbde68bc81dc0e9c5432157b
Runtime: nodejs10.x
AutoPublishAlias: live
Description: Lambda function for CD Demo
MemorySize: 128
Timeout: 30
DeploymentPreference:
Type: Linear10PercentEvery1Minute
Alarms:
- Ref: AliasErrorMetricGreaterThanZeroAlarm
- Ref: LatestVersionErrorMetricGreaterThanZeroAlarm
Hooks:
PreTraffic:
Ref: PreTrafficHook
PostTraffic:
Ref: PostTrafficHook
Events:
HelloWorldAPI:
Type: Api
Properties:
Path: /
Method: get
Environment:
Variables:
REGION: us-west-1
AliasErrorMetricGreaterThanZeroAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: Lambda Function Error > 0
ComparisonOperator: GreaterThanThreshold
Dimensions:
- Name: Resource
Value:
Fn::Sub: ${HelloWorld}:live
- Name: FunctionName
Value:
Ref: HelloWorld
EvaluationPeriods: 2
MetricName: Errors
Namespace: AWS/Lambda
Period: 60
Statistic: Sum
Threshold: 0
LatestVersionErrorMetricGreaterThanZeroAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: Lambda Function Error > 0
ComparisonOperator: GreaterThanThreshold
Dimensions:
- Name: Resource
Value:
Fn::Sub: ${HelloWorld}:live
- Name: FunctionName
Value:
Ref: HelloWorld
- Name: ExecutedVersion
Value:
Fn::GetAtt:
- HelloWorld
- Version.Version
EvaluationPeriods: 2
MetricName: Errors
Namespace: AWS/Lambda
Period: 60
Statistic: Sum
Threshold: 0
PreTrafficHook:
Type: AWS::Serverless::Function
Properties:
Handler: preTrafficHook.handler
Runtime: nodejs10.x
CodeUri: s3://dh-lambda-ci-cd-demo-bucket/c847f03ebbde68bc81dc0e9c5432157b
FunctionName: CodeDeployHook_PreTrafficHook
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- codedeploy:PutLifecycleEventHookExecutionStatus
Resource:
Fn::Sub: arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- lambda:InvokeFunction
Resource:
Ref: HelloWorld.Version
DeploymentPreference:
Enabled: false
Timeout: 5
Environment:
Variables:
NewVersion:
Ref: HelloWorld.Version
PostTrafficHook:
Type: AWS::Serverless::Function
Properties:
Handler: postTrafficHook.handler
Runtime: nodejs10.x
CodeUri: s3://dh-lambda-ci-cd-demo-bucket/c847f03ebbde68bc81dc0e9c5432157b
FunctionName: CodeDeployHook_PostTrafficHook
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- codedeploy:PutLifecycleEventHookExecutionStatus
Resource:
Fn::Sub: arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- lambda:InvokeFunction
Resource:
Ref: HelloWorld.Version
DeploymentPreference:
Enabled: false
Timeout: 5
Environment:
Variables:
NewVersion:
Ref: HelloWorld.Version