ヤマムギ

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

  関連記事

T2.microからT3.nanoに変更(メモリエラーも対応)

このブログのEC2インスタンスをT2.micro 1インスタンスからT3.nan …

Amazon EC2 インスタンスメタデータサービス(IMDS) v2のみにしました

今さらながらですが、EC2 インスタンスメタデータサービス(IMDS) v2を確 …

RocketChatからOutgoing Webhookで呼び出されたAPI Gatewayでtokenをリクエスト検証する

本来はWAFでやったほうがよさそうですが、追加料金を発生させたくない場合にAPI …

Amazon Elasticsearch ServiceにMySQLのデータを投入してkibanaで可視化してみる

MySQLのデータの可視化にAmazon Elasticsearch Servi …

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

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

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

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

AWS Organizationsからアカウントを新規作成してみて

AWS Organizationsでアカウントを新規作成することがありましたので …

PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる

JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …

AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認

グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …

Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)

やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …