JavaのLambdaをCodePipelineでリリースするサンプル周辺の豆知識
TL;DR
こんな記事を書きました。
JavaによるLambdaをCodepipelineで自動リリースする最小構成サンプル
この記事で書かれているCodePipelineの周辺情報の私的メモです。
CodePipeline全体の流れ
1. Source ステージ
githubリポジトリの定時監視と更新があったらコードを取得する。
2. Build ステージ
CodeBuild によるビルド。buildspec.ymlの記載通りビルドが実行される。
-
gradlew
でjarファイルの作成がされる。 -
aws cloudformation package
が実行され、以下の処理が実行される。- 生成された jarファイルを
S3::auto-release-sample
に配置される。 - テンプレートファイル(
packaged-minimum-lambda-java-model.yaml
)を生成され、Codepipeline用に作られたS3バケットに配置される。
- 生成された jarファイルを
3. Staging ステージ
テンプレートファイルとjarファイルから、Lambda関数が構築される。
- 前回実行結果との差分の抽出。(アクションモード:変更セットの作成または置換)
- 差分から実際に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-sample
へ s3:PutObject
ができること。codepipeline-ap-northeast-1-121111111111/
へ、s3:PutObject
s3:GetObject
ができることなど。
AWS-CodePipeline-Service
AWS CodePipeline が動作するためのロール。ポリシーの中身を見るに、codecommit
や、codedeploy
elasticbeanstalk
, autoscaling
など、今回やりたい処理以外の設定も入っているので、典型的な設定が全て入っているものと思われる。
<スタックの名前>-AutoReleasedLambdaRole-<乱数値>
Lambda が実行されるときのロール。CloudFormationでLambdaが作成される際に自動的に生成される。AutoReleasedLambdaRole
はおそらく固定文字列。
内容は、AWSLambdaBasicExecutionRole
が付いているもの。(詳細未検証)
Lambdaの実行に色々なロール設定が必要な場合は別途用意必要かも。(未検証)(予め用意するか、CloudFormationのテンプレートに設定するか)
Author And Source
この問題について(JavaのLambdaをCodePipelineでリリースするサンプル周辺の豆知識), 我々は、より多くの情報をここで見つけました https://qiita.com/kazurof/items/c2f20d885d661e484efd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .