-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.yml
152 lines (145 loc) · 4.53 KB
/
template.yml
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
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Reproducing the aws lambda webapp reference architecture - a todo app - but with java.
Resources:
TodoTable:
Type: AWS::Serverless::SimpleTable
Properties:
TableName: todo-table
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
SSESpecification:
SSEEnabled: true
TodoApi:
Type: AWS::Serverless::Api
MethodSettings:
DataTraceEnabled: true
MetricsEnabled: true
HttpMethod: '*'
LoggingLevel: INFO
AccessLogSetting:
DestinationArn: !Sub 'arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:${ApiAccessLogGroup}'
Format: '$context.identity.sourceIp $context.authorizer.claims.sub [$context.requestTime] "$context.httpMethod $context.resourcePath $context.protocol" $context.status $context.requestId $context.awsEndpointRequestId $context.xrayTraceId $context.responseLatency $context.integrationLatency "$context.error.message"'
Properties:
Name: TodoApi
StageName: prod
TracingEnabled: true
Cors:
AllowOrigin: "'*'"
AllowMethods: "'OPTIONS,HEAD,GET,PUT,POST,DELETE'"
AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
# Auth:
# Authorizers:
# CognitoAuthorizer:
# UserPoolArn: !GetAtt "TodoUserPool.Arn"
ApiAccessLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub /aws/apigateway/AccessLog-${TodoApi}
RetentionInDays: 7
getAllTodos:
Type: "AWS::Serverless::Function"
Properties:
CodeUri: target/webapp-refarch-todo-java-0.0.1-SNAPSHOT.jar
Handler: todo.getall.GetAllTodosHandler
Runtime: java11
Description: Java function
FunctionName: todo-getall
MemorySize: 512
Timeout: 10
# Function's execution role
Policies:
- AWSLambdaBasicExecutionRole
- AWSLambdaReadOnlyAccess
- AWSXrayWriteOnlyAccess
- AWSLambdaVPCAccessExecutionRole
Tracing: Active
Events:
GetItems:
Type: Api
Properties:
Path: /items
Method: get
RestApiId: !Ref TodoApi
createTodo:
Type: "AWS::Serverless::Function"
Properties:
CodeUri: target/webapp-refarch-todo-java-0.0.1-SNAPSHOT.jar
Handler: todo.create.CreateTodoHandler
Runtime: java11
Description: Java function
FunctionName: todo-create
MemorySize: 512
Timeout: 10
# Function's execution role
Policies:
- AWSLambdaBasicExecutionRole
- AWSLambdaReadOnlyAccess
- AWSXrayWriteOnlyAccess
- AWSLambdaVPCAccessExecutionRole
- DynamoDBCrudPolicy:
TableName: !Ref TodoTable
Tracing: Active
Events:
GetItems:
Type: Api
Properties:
Path: /items
Method: post
RestApiId: !Ref TodoApi
deleteTodo:
Type: "AWS::Serverless::Function"
Properties:
CodeUri: target/webapp-refarch-todo-java-0.0.1-SNAPSHOT.jar
Handler: todo.delete.DeleteTodoHandler
Runtime: java11
Description: Java function
FunctionName: todo-delete
MemorySize: 512
Timeout: 10
# Function's execution role
Policies:
- AWSLambdaBasicExecutionRole
- AWSLambdaReadOnlyAccess
- AWSXrayWriteOnlyAccess
- AWSLambdaVPCAccessExecutionRole
- DynamoDBCrudPolicy:
TableName: !Ref TodoTable
Tracing: Active
Events:
GetItems:
Type: Api
Properties:
Path: /items/{id}
Method: DELETE
RestApiId: !Ref TodoApi
completeTodo:
Type: "AWS::Serverless::Function"
Properties:
CodeUri: target/webapp-refarch-todo-java-0.0.1-SNAPSHOT.jar
Handler: todo.complete.CompleteTodoHandler
Runtime: java11
Description: Java function
FunctionName: todo-complete
MemorySize: 512
Timeout: 10
# Function's execution role
Policies:
- AWSLambdaBasicExecutionRole
- AWSLambdaReadOnlyAccess
- AWSXrayWriteOnlyAccess
- AWSLambdaVPCAccessExecutionRole
- DynamoDBCrudPolicy:
TableName: !Ref TodoTable
Tracing: Active
Events:
GetItems:
Type: Api
Properties:
Path: /items/{id}/complete
Method: PUT
RestApiId: !Ref TodoApi