@@ -17,14 +17,20 @@ provider:
17
17
Resource :
18
18
- ' *'
19
19
region : ${env:AWS_REGION}
20
- ecr :
21
- # In this section you can define images that will be built locally and uploaded to ECR
22
- images :
23
- pythonMicroservices :
24
- path : ../
25
20
26
21
custom :
27
22
currentStage : ${opt:stage, self:provider.stage} # 'staging' is default unless overriden by --stage flag
23
+ scripts :
24
+ hooks :
25
+ # The psycopg2-3.8 folder contains the psycopg2 package compiled for the lambda environment.
26
+ # If it is installed using pip it only works when a linux machine has done the install.
27
+ # We change the name to psycopg2 so lambda will use the folder as the psycopg2 package.
28
+ # We need to rename because if it lives named as psycopg2 it overwrites the psycopg2 installation
29
+ # that one might have in local, and thus functions cannot be invoked locally since the package
30
+ # might not be compatible with our system.
31
+ ' package:initialize ' : cp -r psycopg2-3.8 psycopg2
32
+ ' deploy:finalize ' : rm -rf psycopg2
33
+
28
34
localstack :
29
35
host : ${env:LOCALSTACK_HOSTNAME}
30
36
stages :
@@ -48,18 +54,8 @@ constructs:
48
54
batchSize : 1 # Lambda will receive 1 message at a time
49
55
worker :
50
56
timeout : 900
51
- image : ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
57
+ handler : handler_scheduled.worker
52
58
environment :
53
- DD_ENV : ${env:NODE_ENV}
54
- DD_LAMBDA_HANDLER : serverless.handler_scheduled.worker
55
- DD_LOGS_ENABLED : true
56
- DD_CAPTURE_LAMBDA_PAYLOAD : true
57
- DD_SITE : datadoghq.eu
58
- DD_API_KEY_SECRET_ARN : ${env:DATADOG_API_KEY_SECRET_ARN}
59
- DD_TRACE_ENABLED : true
60
- DD_TAGS : ' context:pythonMicroservices'
61
- DD_SERVICE : ' pythonMicroservices'
62
- DD_LOGS_INJECTION : true
63
59
NODE_ENV : ${env:NODE_ENV}
64
60
LOCALSTACK_HOSTNAME : ${env:LOCALSTACK_HOSTNAME}
65
61
LOCALSTACK_PORT : ${env:LOCALSTACK_PORT}
@@ -72,7 +68,7 @@ constructs:
72
68
73
69
functions :
74
70
coordinator :
75
- image : ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
71
+ handler : handler_scheduled.coordinator
76
72
events :
77
73
- schedule :
78
74
rate : rate(2 hours)
@@ -83,19 +79,6 @@ functions:
83
79
input :
84
80
service : check_merge
85
81
environment :
86
- DD_ENV : ${env:NODE_ENV}
87
- DD_LAMBDA_HANDLER : serverless.handler_scheduled.coordinator
88
- DD_LOGS_ENABLED : true
89
- DD_CAPTURE_LAMBDA_PAYLOAD : true
90
- DD_SITE : datadoghq.eu
91
- DD_API_KEY_SECRET_ARN : ${env:DATADOG_API_KEY_SECRET_ARN}
92
- DD_TRACE_ENABLED : true
93
- DD_TAGS : ' context:pythonMicroservices'
94
- DD_SERVICE : ' pythonMicroservices'
95
- DD_LOGS_INJECTION : true
96
- DD_FLUSH_TO_LOG : true
97
- DD_LOG_LEVEL : ' debug'
98
- DD_ENHANCED_METRICS : true
99
82
NODE_ENV : ${env:NODE_ENV}
100
83
EDITION : ${env:EDITION}
101
84
SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
@@ -111,18 +94,8 @@ functions:
111
94
PYTHON_MICROSERVICES_SQS_URL : ${env:PYTHON_MICROSERVICES_SQS_URL}
112
95
113
96
testSqs :
114
- image : ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
97
+ handler : handler_scheduled.worker
115
98
environment :
116
- DD_ENV : ${env:NODE_ENV}
117
- DD_LAMBDA_HANDLER : serverless.handler_scheduled.worker
118
- DD_LOGS_ENABLED : true
119
- DD_CAPTURE_LAMBDA_PAYLOAD : true
120
- DD_SITE : datadoghq.eu
121
- DD_API_KEY_SECRET_ARN : ${env:DATADOG_API_KEY_SECRET_ARN}
122
- DD_TRACE_ENABLED : true
123
- DD_TAGS : ' context:pythonMicroservices'
124
- DD_SERVICE : ' pythonMicroservices'
125
- DD_LOGS_INJECTION : true
126
99
NODE_ENV : ${env:NODE_ENV}
127
100
EDITION : ${env:EDITION}
128
101
SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
@@ -133,11 +106,106 @@ functions:
133
106
DB_OPERATIONS_SQS_URL : ${env:DB_OPERATIONS_SQS_URL}
134
107
PYTHON_MICROSERVICES_SQS_URL : ${env:PYTHON_MICROSERVICES_SQS_URL}
135
108
109
+ gitHubOnboardingCoordinator :
110
+ handler : handler_github.onboarding_coordinator
111
+ environment :
112
+ NODE_ENV : ${env:NODE_ENV}
113
+ EDITION : ${env:EDITION}
114
+ SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
115
+ LOCALSTACK_HOSTNAME : ${env:LOCALSTACK_HOSTNAME}
116
+ LOCALSTACK_PORT : ${env:LOCALSTACK_PORT}
117
+ DATABASE_USERNAME : ${env:DATABASE_USERNAME}
118
+ DATABASE_PASSWORD : ${env:DATABASE_PASSWORD}
119
+ DATABASE_DATABASE : ${env:DATABASE_DATABASE}
120
+ DATABASE_HOST_READ : ${env:DATABASE_HOST_WRITE}
121
+ DB_OPERATIONS_SQS_URL : ${env:DB_OPERATIONS_SQS_URL}
122
+ AWS_ACCESS_KEY_ID_CROWD : ${env:AWS_ACCESS_KEY_ID, false}
123
+ AWS_SECRET_ACCESS_KEY_CROWD : ${env:AWS_SECRET_ACCESS_KEY, false}
124
+ ONBOARDING_STATE_MACHINE_ARN : ${self:resources.Outputs.OnboardingStateMachine.Value}
125
+
126
+ gitHubOnboardingWorker :
127
+ handler : handler_github.onboarding_worker
128
+ environment :
129
+ NODE_ENV : ${env:NODE_ENV}
130
+ EDITION : ${env:EDITION}
131
+ SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
132
+ LOCALSTACK_HOSTNAME : ${env:LOCALSTACK_HOSTNAME}
133
+ LOCALSTACK_PORT : ${env:LOCALSTACK_PORT}
134
+ DATABASE_USERNAME : ${env:DATABASE_USERNAME}
135
+ DATABASE_PASSWORD : ${env:DATABASE_PASSWORD}
136
+ DATABASE_DATABASE : ${env:DATABASE_DATABASE}
137
+ DATABASE_HOST_READ : ${env:DATABASE_HOST_WRITE}
138
+ DB_OPERATIONS_SQS_URL : ${env:DB_OPERATIONS_SQS_URL}
139
+ AWS_ACCESS_KEY_ID_CROWD : ${env:AWS_ACCESS_KEY_ID, false}
140
+ AWS_SECRET_ACCESS_KEY_CROWD : ${env:AWS_SECRET_ACCESS_KEY, false}
141
+
142
+ gitHubOnboardingStatus :
143
+ handler : handler_github.onboarding_status
144
+ environment :
145
+ NODE_ENV : ${env:NODE_ENV}
146
+ EDITION : ${env:EDITION}
147
+ SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
148
+ LOCALSTACK_HOSTNAME : ${env:LOCALSTACK_HOSTNAME}
149
+ LOCALSTACK_PORT : ${env:LOCALSTACK_PORT}
150
+ AWS_ACCOUNT_ID : ${env:AWS_ACCOUNT_ID}
151
+ CROWD_AWS_REGION : ${env:AWS_REGION}
152
+ DATABASE_USERNAME : ${env:DATABASE_USERNAME}
153
+ DATABASE_PASSWORD : ${env:DATABASE_PASSWORD}
154
+ DATABASE_DATABASE : ${env:DATABASE_DATABASE}
155
+ DATABASE_HOST_READ : ${env:DATABASE_HOST_WRITE}
156
+ DB_OPERATIONS_SQS_URL : ${env:DB_OPERATIONS_SQS_URL}
157
+ AWS_ACCESS_KEY_ID_CROWD : ${env:AWS_ACCESS_KEY_ID, false}
158
+ AWS_SECRET_ACCESS_KEY_CROWD : ${env:AWS_SECRET_ACCESS_KEY, false}
159
+
160
+ stepFunctions :
161
+ stateMachines :
162
+ # Onboarding state machine
163
+ onboardingStateMachine :
164
+ name : OnboardingStateMachine${self:custom.currentStage}
165
+ definition :
166
+ Comment : ' State machine that coordinates GitHub onboarding'
167
+ StartAt : WaitState
168
+ States :
169
+ WaitState :
170
+ Type : Wait
171
+ SecondsPath : ' $.wait'
172
+ Next : MapState
173
+ MapState :
174
+ Type : Map
175
+ Iterator :
176
+ StartAt : WorkerState
177
+ States :
178
+ WorkerState :
179
+ Type : Task
180
+ Resource :
181
+ Fn::GetAtt : [gitHubOnboardingWorker, Arn]
182
+ End : true
183
+ ItemsPath : ' $.events'
184
+ Next : StatusState
185
+ StatusState :
186
+ Type : Task
187
+ Resource :
188
+ Fn::GetAtt : [gitHubOnboardingStatus, Arn]
189
+ End : true
190
+
191
+ resources :
192
+ Outputs :
193
+ OnboardingStateMachine :
194
+ Description : The ARN of the onboarding state machine
195
+ Value :
196
+ Ref : OnboardingStateMachine${self:custom.currentStage}
197
+
136
198
package :
199
+ include :
200
+ - ' ../crowd-backend/**'
201
+ - ' ../crowd-github/**'
202
+ - ' ../crowd-members-score/**'
203
+ - ' ../crowd-check-merge-members/**'
137
204
patterns :
138
205
- ' !venv*/**'
139
206
140
207
plugins :
141
208
- serverless-lift
142
209
- serverless-step-functions
210
+ - serverless-plugin-scripts
143
211
- serverless-localstack
0 commit comments