LoginSignup
5
1

More than 5 years have passed since last update.

AWS Lambdaデプロイ方法を求めて: Codeship

Posted at

このドキュメントレベル:初めて学ぶ人向け

Lambdaの良いデプロイフローはないかと思って調べた記録です。
Lambdaのデプロイにはいくつか種類があるようです。

Serveless
Apex
Lamvery
LambCI
CodeShip

前回は「Serveless」AWS Lambdaデプロイ方法を求めて:Serverlessフレームワーク - Qiitaについて調べましたが、
今回は「CodeShip」について、どんなものかを触りだけ調べています。

Codeship

stackshareのDevOpsでなかなか人気もののようです

Codeship

無料枠で使いましょう。

スクリーンショット 2017-05-11 7.16.13.png

■ 注意しないといけない点

Codeshipでは Lambda関数を事前に作っておかなくてはいけません!
あと、エイリアス「PROD」も作っておかないと、後半のデプロイで失敗してしまいます。

■ AWSコンソールで、lambda関数を作成

ここで、コミットするハンドラー名称と関数名と合わせておくようにしましょう

lambda関数

  • sample-lambda関数
  • handler.jsのhelloを呼び出します、なのでハンドラ名は「handler.hello」にします
  • エイリアス「PROD」を作成
  • テスト実行

use strict';

module.exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Good Good Morning CodeShip!!Your function executed successfully!',
      input: event,
    }),
  };

  callback(null, response);

};

■ Codeshipにサインアップでプロジェクトを作成します

プロジェクトタイプはBasicを選択

プロジェクトタイプの洗濯

今回はGitHubと連携してデプロイします
GitLabとも連携できますね!

GitHub連携

テストのパイプラインも設定できます。
今回は、「npm test」だけ実行します

なので、「package.json」側にとりあえず通るダミーを設定しています。

テストパイプライン

package.json


{
  "name": "sample-lambda",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"OK\" && exit 0" ★無理やりテスト通していますw
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/bohebohe/sample-lambda.git"
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/bohebohe/sample-lambda/issues"
  },
  "homepage": "https://github.com/bohebohe/sample-lambda#readme"
}

gitHubのsample-lambdaリポジトリのマスターと連携します

gitHubのマスターと連携します

連携するgitHub
今回はserverless.ymlは不要です・・・。前回の実験の名残です。

連携するgitHub

準備できました!

sample-lambda

■ Codeshipでのデプロイ設定

デプロイできるIAMユーザーを作成します。
そのユーザーに対して、以下のポリシーをアタッチしてください。
ARNの部分を書き換えてください

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:InvokeFunction",
                "lambda:GetFunction",
                "lambda:PublishVersion",
                "lambda:UpdateAlias"
            ],
            "Resource": [
                "arn:aws:lambda:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:function:YOUR_FUNCTION_NAME"
            ]
        }
    ]
}

作成したユーザーのAWSのアクセスキーをCodeShipの環境変数に設定します

CodeShipの環境変数

デプロイのためのCustomScriptを書きます

CustomScript

CustomScript

■ gitHubにpush

gitHubのpushをトリガーにして、テストが実行され、OKであればデプロイされて、結果が表示されます。

ダッシュボード

感想

お手軽感はありますね。ただ、事前にlambda関数を作成したりと一手間かかるので、全てyamlでというserverless方式とはちょっと違います。
コードを苦手な人向け?なのかな。

参考サイト

5
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
5
1