From 7a13f61a87ea297355b47eafa8ecd11353f5c084 Mon Sep 17 00:00:00 2001 From: Allen Chiang Date: Thu, 11 Jul 2024 15:09:41 +0800 Subject: [PATCH] build: create toggle maintenance mode --- .github/workflows/lambda-deploy.yaml | 2 +- .../workflows/maintenance-mode-toggle.yaml | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/maintenance-mode-toggle.yaml diff --git a/.github/workflows/lambda-deploy.yaml b/.github/workflows/lambda-deploy.yaml index 4da03b28..769ff711 100644 --- a/.github/workflows/lambda-deploy.yaml +++ b/.github/workflows/lambda-deploy.yaml @@ -43,7 +43,7 @@ jobs: uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::154471991214:role/github_action - aws-region: ap-northeast-1 + aws-region: us-west-2 - name: Copy files to the s3 with the aws cli run: | diff --git a/.github/workflows/maintenance-mode-toggle.yaml b/.github/workflows/maintenance-mode-toggle.yaml new file mode 100644 index 00000000..bdabb615 --- /dev/null +++ b/.github/workflows/maintenance-mode-toggle.yaml @@ -0,0 +1,55 @@ +name: Toggle Maintenance Mode in Lambda + +on: + workflow_dispatch: + inputs: + name: + description: Who to greet + default: Allen + +permissions: + id-token: write + contents: read + +jobs: + toggle-maintenance-mode: + name: Toggle maintenance mode + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure aws credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::154471991214:role/github_action + aws-region: us-west-2 + + - name: Toggle maintenance mode + run: | + MAINTENANCE_MODE=$(aws lambda get-function-configuration \ + --function-name docfunc-production-web \ + --region us-west-2 | jq -r '.Environment.Variables.MAINTENANCE_MODE') + + ENVIRONMENT=$(aws lambda get-function-configuration \ + --function-name docfunc-production-web \ + --region us-west-2 | jq -r '.Environment') + + if [[ ${MAINTENANCE_MODE} == 0 ]]; then + NEW_ENVIRONMENT=$(echo $ENVIRONMENT | jq -r '.Variables.MAINTENANCE_MODE="1"|tostring') + STATUS="ENABLE" + elif [[ ${MAINTENANCE_MODE} == 1 ]]; then + NEW_ENVIRONMENT=$(echo $ENVIRONMENT | jq -r '.Variables.MAINTENANCE_MODE="0"|tostring') + STATUS="DISABLE" + else + echo 'MAINTENANCE_MODE must be 1 or 0' + exit 1 + fi + + # https://github.com/aws/aws-cli/issues/2638 + aws lambda update-function-configuration \ + --function-name docfunc-production-web \ + --region us-west-2 \ + --environment $NEW_ENVIRONMENT | jq -r '.Environment.Variables.MAINTENANCE_MODE' + + echo "Maintenance mode is $STATUS"