-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverless.yml
136 lines (120 loc) · 3.45 KB
/
serverless.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
service: onicatakehometest
provider:
name: aws
runtime: python3.8
stage: dev
package:
exclude:
- venv/**
- test*
- node_modules/**
- formations/**
- package*
include:
- src/**
functionEnvironmentVariables: &default_environment_variables
DYNAMODB_TABLE_NAME: !Ref DynamoDBTable
functions:
onicaLambdaGetUsersList:
handler: src/handler.get_user_list_handler
events:
- http:
path: /id
method: get
environment:
<<: *default_environment_variables
onicaLambdaGetUserDetails:
handler: src/handler.get_user_handler
events:
- http:
path: /id/{id}
method: get
environment:
<<: *default_environment_variables
resources:
Resources:
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
ApiGatewayDeployment:
Type: AWS::ApiGateway::Deployment
DependsOn:
- ApiGatewayMethodIdGet
- ApiGatewayMethodIdIdVarGet
Properties:
RestApiId: !Ref ApiGatewayRestApi
StageName: dev
ApiGatewayStageProd:
Type: AWS::ApiGateway::Stage
Properties:
DeploymentId: !Ref ApiGatewayDeployment
RestApiId: !Ref ApiGatewayRestApi
StageName: prod
OnicaLambdaGetUsersListLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: "/aws/lambda/onicatakehometest-dev-onicaLambdaGetUsersList"
RetentionInDays: 30
OnicaLambdaGetUserDetailsLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: "/aws/lambda/onicatakehometest-dev-onicaLambdaGetUserDetails"
RetentionInDays: 30
IamRoleLambdaExecution:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- sts:AssumeRole
Policies:
- PolicyName:
Fn::Join:
- "-"
- - dev
- onicatakehometest
- lambda
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- logs:CreateLogStream
- logs:CreateLogGroup
Resource:
- Fn::Sub: arn:aws:logs:#{AWS::Region}:#{AWS::AccountId}:log-group:/aws/lambda/onicatakehometest-dev*:*
- Effect: Allow
Action:
- logs:PutLogEvents
Resource:
- Fn::Sub: arn:aws:logs:#{AWS::Region}:#{AWS::AccountId}:log-group:/aws/lambda/onicatakehometest-dev*:*:*
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Scan
- dynamodb:GetItem
Resource:
- Fn::GetAtt: DynamoDBTable.Arn
Path: "/"
RoleName:
Fn::Join:
- "-"
- - onicatakehometest
- dev
- Ref: AWS::Region
- lambdaRole
plugins:
- serverless-python-requirements
- serverless-pseudo-parameters