ヤマムギ

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


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

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

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

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

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

 - AWS , , , , ,

ad

ad

  関連記事

東京リージョンの1つのAZ(apne1-az2)でt3.nanoスポットインスタンスが拒否されちゃいました

拒否されちゃいました ちょっとした検証をしようとしてて、t3.nanoのスポット …

CodeCommitリポジトリの復号化のCloudTrailログ確認

ユーザーガイドAWS Key Management Service と AWS …

AWS Summit 2016 Tokyoに参加してきました (Day2)

馬込は非常に良い天気です。 泊まっている部屋が2Fでしたので窓を明けると歩いてい …

S3署名付きURL(GetObject)生成後にオブジェクトを上書きアップロードしたら

ダウンロードリクエストを実行したタイミングのオブジェクトがダウンロードされるので …

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

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

Windows EC2インスタンスでEBSとインスタンスストアを使用する

Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …

AWS Lambda KMSを使って環境変数を暗号化、復号化する(Python)

Lambda内で外部APIを使用する場合などをユースケースとして、環境変数をKM …

AWS Systems Manager Session Managerでログを有効にする

AWS Systems Manager Session Managerでのコマン …

VPCピア接続した先のVPCインターフェイスエンドポイントを使用する

VPC1とVPC2でピア接続しています。 VPC2にはKMSのインターフェイスエ …

Amazon API Gatewayでモックを作る

超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …