LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-26

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のテンプレートに設定するか)

0
0
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
0
0