Help us understand the problem. What is going on with this article?

JavaのLambdaをCodePipelineでリリースするサンプル周辺の豆知識

More than 3 years have passed since last update.

TL;DR

こんな記事を書きました。
JavaによるLambdaをCodepipelineで自動リリースする最小構成サンプル

この記事で書かれているCodePipelineの周辺情報の私的メモです。

CodePipeline全体の流れ

1. Source ステージ

githubリポジトリの定時監視と更新があったらコードを取得する。

2. Build ステージ

CodeBuild によるビルド。buildspec.ymlの記載通りビルドが実行される。

  1. gradlew でjarファイルの作成がされる。
  2. aws cloudformation package が実行され、以下の処理が実行される。
    1. 生成された jarファイルを S3::auto-release-sample に配置される。
    2. テンプレートファイル(packaged-minimum-lambda-java-model.yaml)を生成され、Codepipeline用に作られたS3バケットに配置される。

3. Staging ステージ

テンプレートファイルとjarファイルから、Lambda関数が構築される。

  1. 前回実行結果との差分の抽出。(アクションモード:変更セットの作成または置換)
  2. 差分から実際にLambda関数の構築を行う。(アクションモード:変更セットの実行)

雑駁な周辺知識

S3

CodePipeline作成時にS3バケットが作られる。命名パターンは
codepipeline-<リージョン名>-<乱数値>
例: codepipeline-ap-northeast-1-?????????????/

内容としては、githubからダウンロードしたファイルすべてや、ビルド実行で生成されたテンプレートファイルが、それぞれzipで圧縮されて保存される。各ステップでの入出力アーティファクト名でフォルダが内部に作られる。

関連するロール

  • cloudformation-lambda-execution-role

Staging ステージでのCloudFormationが動作するためのロール。予め開発者が準備するロール。s3:GetObject lambda:* cloudformation:CreateChangeSetなど。

  • code-build-<ビルドプロジェクト名>-service-role

CodeBuild が動作できるようにするためのロール。 S3::auto-release-samples3:PutObjectができること。codepipeline-ap-northeast-1-121111111111/へ、s3:PutObject s3:GetObject ができることなど。

参考:
http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/setting-up.html?icmpid=docs_acb_console#setting-up-service-role

  • AWS-CodePipeline-Service

AWS CodePipeline が動作するためのロール。ポリシーの中身を見るに、codecommitや、codedeploy elasticbeanstalk, autoscalingなど、今回やりたい処理以外の設定も入っているので、典型的な設定が全て入っているものと思われる。

  • <スタックの名前>-AutoReleasedLambdaRole-<乱数値>

Lambda が実行されるときのロール。CloudFormationでLambdaが作成される際に自動的に生成される。AutoReleasedLambdaRoleはおそらく固定文字列。
内容は、AWSLambdaBasicExecutionRole が付いているもの。(詳細未検証)

Lambdaの実行に色々なロール設定が必要な場合は別途用意必要かも。(未検証)(予め用意するか、CloudFormationのテンプレートに設定するか)

kazurof
がんばりましょう。
http://kazurof.hateblo.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away