-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.yaml
155 lines (144 loc) · 4.95 KB
/
template.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
154
155
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
LogSubGenApp
Sample SAM Template for LogSubGenApp
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 20
MemorySize: 128
Tags:
Publisher: AWS
Department: IT
CostCenter: "12345"
Owner: "PBKN"
Project: "LogSubGenApp"
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: HelloWorldFunction
Handler: helloworld.App::handleRequest
Runtime: java8.al2
Architectures:
- x86_64
MemorySize: 512
Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
Variables:
PARAM1: VALUE
JAVA_TOOL_OPTIONS: -XX:+TieredCompilation -XX:TieredStopAtLevel=1 # More info about tiered compilation https://aws.amazon.com/blogs/compute/optimizing-aws-lambda-function-performance-for-java/
HelloWorldFunctionLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub "/aws/lambda/${HelloWorldFunction}"
RetentionInDays: 7
Tags:
- Key: Publisher
Value: AWS
- Key: Department
Value: IT
- Key: CostCenter
Value: "12345"
- Key: Owner
Value: "PBKN"
- Key: Project
Value: "LogSubGenApp"
ErrorSNSTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: "ErrorNotification-SNS"
Tags:
- Key: Publisher
Value: AWS
- Key: Department
Value: IT
- Key: CostCenter
Value: "12345"
- Key: Owner
Value: "PBKN"
- Key: Project
Value: "LogSubGenApp"
ErrorSubscription1:
Type: AWS::SNS::Subscription
Properties:
Endpoint: email1@google.com
Protocol: email
TopicArn: !Ref 'ErrorSNSTopic'
ErrorSubscription2:
Type: AWS::SNS::Subscription
Properties:
Endpoint: email2@yahoo.com
Protocol: email
TopicArn: !Ref 'ErrorSNSTopic'
ErrorFunctionRole:
Type: AWS::IAM::Role
Properties:
RoleName: "ErrorFunction-Role"
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
- arn:aws:iam::aws:policy/AmazonSNSFullAccess
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "lambda.amazonaws.com"
Action:
- "sts:AssumeRole"
ErrorFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: ErrorFunction
Handler: error.ErrorNotif::handleRequest
Role: !GetAtt ErrorFunctionRole.Arn
Runtime: java8.al2
Architectures:
- x86_64
MemorySize: 512
Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
Variables:
PARAM1: VALUE
JAVA_TOOL_OPTIONS: -XX:+TieredCompilation -XX:TieredStopAtLevel=1 # More info about tiered compilation https://aws.amazon.com/blogs/compute/optimizing-aws-lambda-function-performance-for-java/
SNS_TOPIC_ARN: !Ref ErrorSNSTopic
Events: #LogSubscription filter will be automatically added by SAM using this event
CWLog:
Type: CloudWatchLogs
Properties:
LogGroupName:
Ref: HelloWorldFunctionLogGroup
FilterPattern: '?Error ?error ?Fail ?fail ?Invalid ?invalid ?Exception ?exception'
ErrorFunctionLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub "/aws/lambda/${ErrorFunction}"
RetentionInDays: 7
Tags:
- Key: Publisher
Value: AWS
- Key: Department
Value: IT
- Key: CostCenter
Value: "12345"
- Key: Owner
Value: "PBKN"
- Key: Project
Value: "LogSubGenApp"
Outputs:
HelloWorldFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt HelloWorldFunction.Arn
HelloWorldFunctionIamRole:
Description: "Implicit IAM Role created for Hello World function"
Value: !GetAtt HelloWorldFunctionRole.Arn
ErrorFunction:
Description: "Error Lambda Function ARN"
Value: !GetAtt ErrorFunction.Arn
ErrorFunctionIamRole:
Description: "Explicit IAM Role created for Error function"
Value: !GetAtt ErrorFunctionRole.Arn
ErrorSNSTopic:
Description: The ARN of the created SNS topic
Value: !Ref ErrorSNSTopic