AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

前提

AWS CodeCommitに「test」リポジトリ作成済み。

gulpでzip圧縮、aws cloudformation packageしてaws cloudformation deployするような仕組みとしている。

"deploy": "gulp --gulpfile gulpfile.js deploy"

このnpm scriptsが実行できればCloudFormationのスタックが作成され、Lambdaが作成される。

今回は、CodeBuildをマネジメントコンソールから「ビルドを開始」でビルドする。

buildspec.yml

npmプロジェクト直下にbuildspec.ymlファイルを作成します。

このファイルをCodeCommitのリポジトリ直下に配置します。

リモートリポジトリ作成されました。

git add buildspec.yml
git commit -m "commit"
git push origin master

今回はnpm scriptsが実行できればよいのでnpm installしてnode_modulesを作成し、そのあとnpm scriptsを実行しています。

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 16.x
    commands:
      - npm install
  build:
    commands:
      - npm run deploy

buildspec.ymlの仕様はコチラ参照ください。

CodeCommitのリポジトリはこんな感じです。node_modulesはありません。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

ビルドプロジェクトを作成する

ビルドプロジェクトを作成します。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

ロールにアタッチしているポリシーは以下です。

  • IAMFullAccess
  • AmazonS3FullAccess
  • AWSCloudFormationFullAccess
  • AWSLambda_FullAccess

aws lambda packageでS3にアップロードされるのでS3へのアクセス、aws cloudformation deployでスタックが作成されるのでCloudFormationへのアクセス、LambdaデプロイするのでLambdaへのアクセス、その際にIAMを作るようなCloudFormationにしている場合はIAMへのアクセスが必要です。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

CodeBuild のデフォルトでは、buildspec.yml という名前のファイルがソースコードルートディレクトリで検索されます。buildspec ファイルに別の名前または場所を使用している場合は、ここにソースルートからのパス (buildspec-two.yml や configuration/buildspec.yml など) を入力します。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

「ビルドプロジェクトを作成する」をクリックして作成されます。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

ビルドを開始

ビルドプロジェクトが作成されたので、ビルドを開始します。

buildspec.ymlに基づいて実行されるだけなので

  • npm install
  • npm run deploy

これが実行されるだけです。

2~4分くらいかかりますが、ステータスが成功になればスタック、Lambda作成されます。

AWS CodeBuildでCodeCommitリポジトリのLambdaをデプロイする

コメント

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