10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シンプルなAWS Lambdaのデプロイ管理

Last updated at Posted at 2017-06-12

AWS Lambdaのデプロイ管理についての記事が、Serverlessなど他のアプリを使ったものが多かったのですが、AWSのコマンドだけでシンプルに実現する方法を考えました。

フローとしては、GithubにコードをPushすると、CIがシェルをたたき、CloudFormation経由でLambdaにデプロイするというふうになっています。(私の場合はCIはCircleCIを使っていますが、なんでも大丈夫だと思います)

CIがたたくシェルはこんな感じです。当方Rubyを使っているので、erbコマンドでyamlファイルに書くLambdaの環境変数を、ベタで書かずCIの環境変数で指定できるようにしています。(erbはrubyをインストールしてたら使えるはず)

deploy.sh
#/bin/sh

erb template-base.yml > template.yml
zip hoge.zip hoge.py
aws cloudformation package --template-file ./template.yml --s3-bucket "S3バケット名" --output-template-file ./packaged-template.yml
aws cloudformation deploy --template-file ./packaged-template.yml --stack-name "cloudformationスタック名" --capabilities CAPABILITY_IAM
template-base.yml
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  Hoge:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: 'hoge'
      Runtime: 'hoge'
      Role: 'hoge'
      CodeUri: 'hoge.zip'
      Environment:
        Variables:
          ACCESS_KEY_ID: <%= ENV['AWS_ACCESS_KEY_ID'] %>
          SECRET_ACCESS_KEY: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?