AWS Lambdaですが、今までは手動でzipに固めて、AWSコンソールからUpload、デプロイ!なんてことをしていたのですが、いい加減自動化したく、ささっとCircleCIで簡単に自動デプロイが実装できたのでご紹介したいと思います。言語はNode.jsになります。
Environment
- Node.js 14.x
- index.handler
- aws-cli v2
- 関数名:lambda-test
Repository
- Lambda
1 2 3 4 5 6 |
$ tree lambda-test lambda-test ├── developers.json ├── index.js ├── package-lock.json └── package.json |
自動化したいこと
- リポジトリをクローン
- npm install を実行
- ZIP圧縮してAWS Lambdaにデプロイ
ちなみにLambdaにデプロイするためにはaws-cliで aws lambda update-function-code
を利用すればOKです。
https://awscli.amazonaws.com/v2/documentation/api/2.0.33/reference/lambda/update-function-code.html
1 |
aws lambda update-function-code --function-name lambda-test --zip-file fileb://lambda-test.zip |
CircleCI
- .circleci/config.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
version: 2.1 orbs: aws-cli: circleci/aws-cli@2.0.0 slack: circleci/slack@3.4.2 references: default_config: &default_config docker: - image: node:14-alpine3.12 ## Deploy lambda-test jobs: deploy_lambda-test: working_directory: ~/app <<: *default_config steps: - checkout - run: name : install package command: | apk add bash curl zip - aws-cli/setup: aws-region: AWS_REGION aws-access-key-id: AWS_ACCESS_KEY_ID_STG aws-secret-access-key: AWS_SECRET_ACCESS_KEY_STG override-installed: false - run: name : deploy lambda-test command: | cd lambda-test/ \ && npm install \ && zip -r lambda-test.zip . \ && aws lambda update-function-code --function-name lambda-test --zip-file fileb://lambda-test.zip - slack/status: fail_only: true mentions: 'here' failure_message: 'Error Deploy lambda-test 🚨 \n :innocent: ${CIRCLE_USERNAME} :branch: ${CIRCLE_BRANCH}' webhook: ${SLACK_WEBHOOK} - slack/notify: title: Stg 👍 color: '#42f486' message: 'lambda-test is deploy OK ✨ \n :grin: ${CIRCLE_USERNAME} :branch: ${CIRCLE_BRANCH}' webhook: ${SLACK_WEBHOOK} workflows: version: 2 deploy_lambda: jobs: - deploy_lambda-test: filters: branches: only: master |
今回は Orbsの aws-cli@2.0.0
コンテナを利用しました。Orbsを使えばaws-cliをわざわざインストールしなくて済みます。masterマージで nodejs
をインストール、 npm install
、zipコマンドでの圧縮、aws-cliでデプロイで完了でございます。
https://circleci.com/developer/ja/orbs/orb/circleci/aws-cli?version=2.0.2
なるほど circleci/aws-cli@2.0.2
出ていたのか….バージョンアップしましょう!
Deploy
AWS Lambdaのコンソール画面から Last modified
が最新になっていればOKです!
まとめ
簡単!自動化最高!と言ってもシェル芸ですな。LambdaのCIとか作ってみようかな…
余談だけどSophosいいな。
— adachin👾SRE (@adachin0817) May 25, 2021
0件のコメント