ヤマムギ

growing hard days.

*

AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの

   

勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+Pythonを使用しました。

AWS Codeサービス(CodeCommit, CodeBuild, CodeDeploy, CodePipeline)で何ができるかを知るのに非常に有効なテンプレートだと思いましたので、このテンプレートによって生成されたものを書き残しておきます。

AWS CodeStarでプロジェクト作成

まずCodeStarでLambda Pythonのプロジェクトを選択して作成しました。

プロジェクト名を入力しました。

作成中になりました。
ついでにIDEはCloud9を作成しました。

Cloud9で起動するEC2インスタンスを設定しました。

AWS CodeCommit

  • index.py – Lambda関数のコード
  • tests – テストコード
  • buildspec.yml – CodeBuildで実行されるビルド仕様
  • template.yml – DeployプロセスのSAMテンプレート
  • template-configuration.json – CloudFormationスタックのタグ

リポジトリに各ファイルができていました。

AWS CodeBuild

CodeBuildの環境設定、環境変数、IAMロール、Buildspecの設定ができていました。

AWS CodeDeploy

CodeDeployはSAMのテンプレートのDeploymentPreferenceで、CodeDeployDefault.LambdaCanary10Percent5Minutesが設定されていました。

これにより、Lamdaのバージョンとエイリアスを使って、段階的(10%のトラフィックだけ先にリリース、残り90%は5分後)なBlue/Greenデプロイを実行していました。

AWS CodePipeline

Source, Build, Deployがそれぞれ設定されています。

Source

CodeCommitのリポジトリとmasterブランチが設定されています。

CloudWatch Eventsには、CodePipelineを起動するトリガーイベントが設定されていました。
ブランチの作成、更新がイベントルールに定義されています。

Build

CodeBuildのプロジェクトが指定されていました。

Deploy

デプロイは2つ設定されていて、1つ目はCloudFormation変更セットの作成でした。
テンプレートはbuildspec.ymlで aws cloudformation packageコマンドで作成された、template-export.ymlとオプション設定ファイルのtemplate-configuration.json が指定されていました。

CloudFormationのパラメーターは[高度]セクションで指定されていました。

Cloud9

AWS SettingsでCredentialsが有効になっていますので、アクセスキーID、シークレットアクセスキーが設定済です。
CodeCommitにはCLI認証情報ヘルパーが使用されていますので、HTTPS接続が可能になっていて、リポジトリはクローン済でした。

コードを変更してパイプラインを確認する

このままの状態で、API GatewayのProdステージURLにブラウザからアクセスすると、以下の結果が返ってきます。

これを変更しようと思います。

Cloud9で、index.pyとtests/test_handler.pyの’Hello World’を’Hello World Yamashita’に変更しました。
test_handler.pyも変更しておかないとBuildのテストで失敗します。

これで、CodePipelineが実行されます。

Build、変更セットの作成が無事成功して、変更セットの実行まで来ました。

CloudFormationスタックでは、Lambdaのバージョンが作成されて、liveエイリアスへの重み付け設定が始まりました。

Lambda関数のliveエイリアスには、バージョン2に10%の重みが設定されています。
残り90%はまだバージョン1です。

5分後にCloudFormationではエイリアスの設定が完了しました。

Lambda関数のliveエイリアスでもバージョン2が100%になりました。

API GatewayのprodステージURLにブラウザでアクセスすると更新されていました。

CodeStarを使うことで、まずは一通りのパイプラインと開発環境を作ってしまえるので、非常に便利でした。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , , , , ,

ad

ad

  関連記事

NATインスタンスを作成する

プライベートサブネットのEC2インスタンスからカスタムメトリクスとCloudWa …

IAMユーザーのマネジメントコンソールログインパスワードを変更してDynamoDBに記録するLambda(Python)

やりたいこと IAMユーザーのマネジメントコンソールへのサインインパスワードを動 …

RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもできるようになってました

RDSスナップショットをS3にエクスポートする新機能を試そうかと思ったのときは、 …

EC2 Windows インスタンス PowerShellでメタデータを見る

Linuxインスタンスならcurlコマンドで確認すればいいのですが、Window …

S3バケットのデフォルト暗号化はデフォルトだったことを確認しました

S3バケットのデフォルト暗号化は名前のとおりだとデフォルトなので、暗号化を指定し …

オンプレミスに見立てたオハイオリージョンにVyOSインスタンスを起動して東京リージョンからVPN接続

AWSクイックスタートのActive Directory Domain Serv …

AWS Cost Explorerの履歴を38ヶ月とリソース別コストを見られるように設定しました

AWS Cost Explorer がより詳細な履歴データの提供を開始 知らなか …

CloudFormationで起動テンプレートのバージョン更新をした際にAuto ScalingのEC2インスタンスを置き換える

やりたいこと タイトルのとおり、起動テンプレートのバージョン変更(AMIの置換) …

AWS Lambda(Python)からZoom投票作成

以前、Zoomの投票(アンケート)をAPI経由で作成するというブログで書きました …

ブログの画像を別アカウントのS3に移動するためにIAMロールでクロスアカウントアクセス

ずっと先延ばしにしていたのですが、このブログの画像はEC2から直接配信しています …