CodePipelineを使用したCloudformationによるLambdaデプロイ

CodePipelineを使用したCloudformationによるLambdaデプロイ

CodePipelineのデプロイステージをCloudFormationにしてLambdaデプロイをします。

ソースステージ

ソースプロバイダーは「CodeCommit」を指定します。

あらかじめリポジトリは作成しておく必要があります。このリポジトリにsamテンプレート(cfn)やLambdaのソース、CodeBuildで使用するbuildspec.ymlをプッシュしておきます。

CodePipelineを使用したCloudformationによるデプロイ

CodePipelineを使用したCloudformationによるLambdaデプロイ

samテンプレート

cfn_in.ymlファイルで、deploytestというLambdaをデプロイします。

AWSTemplateFormatVersion: "2010-09-09"
Transform: "AWS::Serverless-2016-10-31"
Resources:
  TestFunction:
    Type: "AWS::Serverless::Function"
    Properties:
      FunctionName: deploytest
      Handler: index.handler
      Runtime: nodejs18.x
      CodeUri: ../src
      MemorySize: 128
      Timeout: 15

ビルドステージ

ビルドプロバイダーは「AWS CodeBuild」を指定します。

ビルドプロジェクトはあらかじめ作成しておくか、この画面から別ウィンドウを開いて作成することができます。

デフォルトでは、CodeCommitリポジトリ直下のbuildspec.ymlを読み込んでビルドします。

CodePipelineを使用したCloudformationによるLambdaデプロイ

buildspec.yml

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 16.x
    commands:
      - npm install
  build:
    commands:
      - sam package --template-file ./cfn_in.yml --s3-bucket バケット名 --output-template-file cfn_out.yml
artifacts:
  files:
    - 'cfn_out.yml'
  discard-paths: yes

artifactsでアーティファクトを書いておくと、アーティファクトストア(S3)にアーティファクトが作成されます。

ここではctn_out.ymlファイルがs3にアップロードされ、デプロイステージのインプットとして使用することができるようになります。

CodePipelineを使用したCloudformationによるデプロイ

CodePipelineを使用したCloudformationによるデプロイ

sam deploy が sam package の機能を暗黙的に実行するようになりました。sam deploy コマンドを直接使用して、アプリケーションをパッケージ化およびデプロイできます。

コチラ参照

デプロイステージ

デプロイプロバイダーは「AWS Cloudformation」を指定します。

CodePipelineを使用したCloudformationによるデプロイ

アクションモードは「変更セットを作成または更新する」を指定します。

スタック名:codedeploy-sample1
変更セット:aaa
テンプレート:cfn_out.yml

CodePipelineを使用したCloudformationによるLambdaデプロイ

一旦CodePipelineを作成して、デプロイステージの後続アクションに「変更セットの実行」を追加します。

変更セットを作成しただけだとLambdaデプロイはされず、変更セットを実行する必要があります。

変更セットを使用したスタックの更新 - AWS CloudFormation
変更セットを実行して AWS CloudFormation スタックを更新する方法について説明します。それにより、スタックを更新する前に AWS CloudFormation が実行する変更をプレビューできます。

CloudFormationのマネジメントコンソールを見ると、スタックは作成されますが「REVIEW_IN_PROGRESS」となっていることがわかります。

CodePipelineを使用したCloudformationによるLambdaデプロイ

変更セットの実行

変更セット作成後に変更セットを実行するために、CodePipelineを編集して、デプロイステージの「変更セットを作成または更新する」の後続処理に「変更セットの実行」を追加します。

「アクショングループを追加する」をクリックします。

CodePipelineを使用したCloudformationによるLambdaデプロイ

設定する内容は以下の通りです。

スタック名:codedeploy-sample1
変更セット:aaa

CodePipelineを使用したCloudformationによるLambdaデプロイ

デプロイステージにアクションが追加されました。

CodePipelineを使用したCloudformationによるLambdaデプロイ

これでCodePipelineがCodeCommitのソース変更を検知すると一連の流れが実行されます。

そして最後のデプロイステージで「変更セットを作成または更新する」→「変更セットの実行」が実行され、Lambdaがデプロイされるようになります。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました