@@ -17,14 +17,20 @@ provider:
1717 Resource :
1818 - ' *'
1919 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 : ../
2520
2621custom :
2722 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+
2834 localstack :
2935 host : ${env:LOCALSTACK_HOSTNAME}
3036 stages :
@@ -48,18 +54,8 @@ constructs:
4854 batchSize : 1 # Lambda will receive 1 message at a time
4955 worker :
5056 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
5258 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
6359 NODE_ENV : ${env:NODE_ENV}
6460 LOCALSTACK_HOSTNAME : ${env:LOCALSTACK_HOSTNAME}
6561 LOCALSTACK_PORT : ${env:LOCALSTACK_PORT}
@@ -72,7 +68,7 @@ constructs:
7268
7369functions :
7470 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
7672 events :
7773 - schedule :
7874 rate : rate(2 hours)
@@ -83,19 +79,6 @@ functions:
8379 input :
8480 service : check_merge
8581 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
9982 NODE_ENV : ${env:NODE_ENV}
10083 EDITION : ${env:EDITION}
10184 SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
@@ -111,18 +94,8 @@ functions:
11194 PYTHON_MICROSERVICES_SQS_URL : ${env:PYTHON_MICROSERVICES_SQS_URL}
11295
11396 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
11598 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
12699 NODE_ENV : ${env:NODE_ENV}
127100 EDITION : ${env:EDITION}
128101 SEGMENT_WRITE_KEY : ${env:SEGMENT_WRITE_KEY}
@@ -133,11 +106,106 @@ functions:
133106 DB_OPERATIONS_SQS_URL : ${env:DB_OPERATIONS_SQS_URL}
134107 PYTHON_MICROSERVICES_SQS_URL : ${env:PYTHON_MICROSERVICES_SQS_URL}
135108
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+
136198package :
199+ include :
200+ - ' ../crowd-backend/**'
201+ - ' ../crowd-github/**'
202+ - ' ../crowd-members-score/**'
203+ - ' ../crowd-check-merge-members/**'
137204 patterns :
138205 - ' !venv*/**'
139206
140207plugins :
141208 - serverless-lift
142209 - serverless-step-functions
210+ - serverless-plugin-scripts
143211 - serverless-localstack
0 commit comments