@@ -166,14 +166,24 @@ jobs:
166166 - name : Create New Task Definition with Updated Image
167167 id : update-task-def
168168 run : |
169- TASK_DEF=$(aws ecs describe-task-definition --task-definition "${{ steps.get-prod-info.outputs.task_definition_arn }}" --query "taskDefinition")
170-
169+ TASK_DEF=$(aws ecs describe-task-definition \
170+ --task-definition "${{ steps.get-prod-info.outputs.task_definition_arn }}" \
171+ --query "taskDefinition")
172+
171173 NEW_TASK_DEF=$(echo "$TASK_DEF" | jq --arg IMAGE "${{ steps.build-image.outputs.image_uri }}" '
174+ .family = "api-migration" |
172175 .containerDefinitions[0].image = $IMAGE |
173- del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints, .compatibilities, .registeredAt, .registeredBy)
176+ (.containerDefinitions[0].command) |= map(
177+ if test("prod$") then sub("prod$"; "migration") else . end
178+ ) |
179+ del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints,
180+ .compatibilities, .registeredAt, .registeredBy)
174181 ')
175-
176- NEW_TASK_DEF_ARN=$(aws ecs register-task-definition --cli-input-json "$NEW_TASK_DEF" --query "taskDefinition.taskDefinitionArn" --output text)
182+
183+ NEW_TASK_DEF_ARN=$(aws ecs register-task-definition \
184+ --cli-input-json "$NEW_TASK_DEF" \
185+ --query "taskDefinition.taskDefinitionArn" \
186+ --output text)
177187 echo "new_task_definition_arn=$NEW_TASK_DEF_ARN" >> $GITHUB_OUTPUT
178188
179189 - name : Invoke Pre-processing Lambda
@@ -191,10 +201,21 @@ jobs:
191201 run : |
192202 MIGRATION_RDS_URL="jdbc:mysql://${{ env.CLONED_RDS_ADDRESS }}/eatda?useUnicode=true&characterEncoding=UTF-8"
193203 TASK_ARN=$(aws ecs run-task \
194- --cluster ${{ env.PROD_ECS_CLUSTER_NAME }} \
204+ --cluster migration-cluster \
195205 --task-definition ${{ steps.update-task-def.outputs.new_task_definition_arn }} \
196206 --launch-type EC2 \
197- --overrides '{ "containerOverrides": [ { "name": "${{ steps.get-prod-info.outputs.container_name }}", "environment": [ { "name": "SPRING_PROFILES_ACTIVE", "value": "migration" }, { "name": "MIGRATION_RDS_URL", "value": "'"${MIGRATION_RDS_URL}"'" }, { "name": "MIGRATION_S3_BUCKET", "value": "${{ env.CLONED_S3_BUCKET_NAME }}" } ] } ] }' \
207+ --overrides '{
208+ "containerOverrides": [
209+ {
210+ "name": "${{ steps.get-prod-info.outputs.container_name }}",
211+ "environment": [
212+ { "name": "SPRING_PROFILES_ACTIVE", "value": "migration" },
213+ { "name": "MIGRATION_RDS_URL", "value": "'"${MIGRATION_RDS_URL}"'" },
214+ { "name": "MIGRATION_S3_BUCKET", "value": "${{ env.CLONED_S3_BUCKET_NAME }}" }
215+ ]
216+ }
217+ ]
218+ }' \
198219 --query "tasks[0].taskArn" --output text)
199220 echo "task_arn=$TASK_ARN" >> $GITHUB_OUTPUT
200221 if [ -z "$TASK_ARN" ] || [ "$TASK_ARN" = "None" ]; then
@@ -203,11 +224,44 @@ jobs:
203224
204225 - name : Wait for ECS Task to Complete
205226 run : |
206- aws ecs wait tasks-stopped --cluster ${{ env.PROD_ECS_CLUSTER_NAME }} --tasks ${{ steps.ecs-run-task.outputs.task_arn }}
227+ aws ecs wait tasks-stopped --cluster migration-cluster --tasks ${{ steps.ecs-run-task.outputs.task_arn }}
228+
229+ - name : Get DB Credentials from SSM
230+ id : get-db-creds
231+ run : |
232+ DB_USER=$(aws ssm get-parameter --name "/prod/MYSQL_USER_NAME" --with-decryption --query "Parameter.Value" --output text)
233+ DB_PASS=$(aws ssm get-parameter --name "/prod/MYSQL_PASSWORD" --with-decryption --query "Parameter.Value" --output text)
234+
235+ echo "::add-mask::$DB_USER"
236+ echo "::add-mask::$DB_PASS"
237+
238+ echo "DB_USER=$DB_USER" >> $GITHUB_ENV
239+ echo "DB_PASS=$DB_PASS" >> $GITHUB_ENV
207240
208241 - name : Invoke Post-processing Lambda
209242 run : |
210- aws lambda invoke --function-name ${{ env.LAMBDA_FUNCTION_NAME }} --payload '{"task": "postprocess"}' response.json
243+ PAYLOAD=$(jq -n \
244+ --arg task "postprocess" \
245+ --arg bucket "${{ env.CLONED_S3_BUCKET_NAME }}" \
246+ --arg db_endpoint "${{ env.CLONED_RDS_ADDRESS }}" \
247+ --arg db_username "${{ env.DB_USER }}" \
248+ --arg db_password "${{ env.DB_PASS }}" \
249+ '{
250+ task: $task,
251+ target_bucket_for_realignment: $bucket,
252+ db_endpoint: $db_endpoint,
253+ db_username: $db_username,
254+ db_password: $db_password
255+ }')
256+
257+ echo "Invoking Lambda with payload: $PAYLOAD"
258+
259+ aws lambda invoke \
260+ --function-name "${{ env.LAMBDA_FUNCTION_NAME }}" \
261+ --payload "$PAYLOAD" \
262+ --cli-binary-format raw-in-base64-out \
263+ response.json
264+
211265
212266# notify:
213267# name: Send Discord Notification (Migration)
0 commit comments