From dcf923e2c2b7b4dcab792016b5cef1959ba554d3 Mon Sep 17 00:00:00 2001 From: Abbas Khan Date: Thu, 23 Jan 2025 13:02:55 +0000 Subject: [PATCH] add propagation check to layer update script --- .../workflows/base-lambdas-reusable-deploy.yml | 3 --- lambdas/scripts/lambda_layer_update.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/base-lambdas-reusable-deploy.yml b/.github/workflows/base-lambdas-reusable-deploy.yml index a6f24144b..306409d17 100644 --- a/.github/workflows/base-lambdas-reusable-deploy.yml +++ b/.github/workflows/base-lambdas-reusable-deploy.yml @@ -87,9 +87,6 @@ jobs: - name: Upload Lambda Function zip to ${{ inputs.lambda_aws_name }} run: | - sleep 3 - export AWS_RETRY_MODE=standard - export AWS_MAX_ATTEMPTS=5 aws lambda update-function-code \ --function-name ${{ inputs.sandbox }}_${{ inputs.lambda_aws_name }} \ --zip-file fileb://build/lambdas/${{ inputs.lambda_handler_name }}/${{ inputs.lambda_handler_name }}.zip diff --git a/lambdas/scripts/lambda_layer_update.py b/lambdas/scripts/lambda_layer_update.py index d6cb05b28..f876b469e 100644 --- a/lambdas/scripts/lambda_layer_update.py +++ b/lambdas/scripts/lambda_layer_update.py @@ -1,5 +1,6 @@ import re import sys +import time import boto3 @@ -27,6 +28,7 @@ def start(self): self.extract_default_layer_arns() self.extract_updated_layer_arns() self.update_lambda() + self.propagate_lambda_update() def extract_default_layer_arns(self): response = self.client.get_function(FunctionName=self.function_name_aws) @@ -63,6 +65,22 @@ def update_lambda(self): Layers=list(self.updated_lambda_arns.values()), ) + def propagate_lambda_update(self): + retry_count = 3 + for i in range(retry_count): + time.sleep(3) + print(f"Propagating lambda layer update attempt {i}...") + response = self.client.client.get_function_configuration( + FunctionName=self.function_name_aws + ) + if ( + response["State"] == "Active" + and response["LastUpdateStatus "] == "Successful" + ): + break + + print("Lambda state is not ready, retrying...") + if __name__ == "__main__": layer_update = LambdaLayerUpdate()