LoginSignup
13
11

More than 5 years have passed since last update.

CircleCIからAWS Lambdaファンクションをデプロイしてみた

Last updated at Posted at 2015-11-23

前提条件

AWS LambdaファンクションをGulpでデプロイでローカルでデプロイできている前提

IAMの設定

Lambda実行用のロール

  • ロール名(例)
    • sampleLambdaExecureRole
  • アタッチするポリシー
    • AWSLambdaExecute

作成したロールARNをメモっておく

  • ロールARN(例)
    • arn:aws:iam::000000000000:role/sampleLambdaExecureRole

デプロイ用のポリシー

  • ポリシー名(例)

    • sampleLambdaDeployPolicy
  • ポリシードキュメント(例)

    • iam:PassRoleのResourceはLambda実行用のロールのARNを指定する
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:GetFunction",
                "lambda:UpdateFunctionConfiguration",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateEventSourceMapping",
                "lambda:CreateEventSourceMapping",
                "lambda:ListEventSourceMappings"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::000000000000:role/sampleLambdaExecureRole"
            ]
        }
    ]
}

デプロイ用のユーザー

  • ユーザー名(例)
    • sampleLambdaDeployUser
  • ユーザーごとにアクセスキーを生成
    • チェックを入れる
  • 認証情報をダウンロードする
  • ポリシーのアタッチ(先ほどさくせいしたポリシー)
    • sampleLambdaDeployPolicy

ソースコード

AWS LambdaファンクションをGulpでデプロイを参考に下記の点を変更する

変更後のソースはこちら
https://github.com/tomiyan/lambda-gulp-sample

circle.ymlを追加

circle.yml
deployment:
  production:
    branch: master
    commands:
      - gulp deploy

lambda-config.jsのroleをenvから取得するように修正

lambda-config.js
module.exports = {
  region: 'ap-northeast-1',
  handler: 'index.handler',
  role: process.env.ROLE,
  functionName: 'api_v1_hoge',
  timeout: 10,
  memorySize: 128,
  runtime: 'nodejs'
  // eventSource: {
  //  EventSourceArn: <event source such as kinesis ARN>,
  //  BatchSize: 200,
  //  StartingPosition: "TRIM_HORIZON"
  //}
}

githubにホスティングする

CircleCI

すでにSign Upしている前提

プロジェクトの追加

  • Add Projects
    • GitHubアカウントを選択
    • 今回作成したProjectを選択
  • Project Settings
    • Environment variables
      • Name
        • ROLE
      • Value(例)
        • arn:aws:iam::000000000000:role/sampleLambdaExecureRole
    • AWS keys
      • デプロイ用のユーザーで作成した認証情報Access Key ID/Secret Access Keyを登録

参考文献

13
11
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
13
11