ヤマムギ

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

  関連記事

DynamoDB Accelerator(DAX)のサンプルアプリケーション(Python)を実行

DynamoDBデベロッパーガイドのDynamoDB Accelerator(D …

Kinesis Data AnalyticsをKinesis Data Streamsに接続してSQL検索する

Amazon Kinesis Data StreamsにTwitter検索データ …

AWS Toolkit for Eclipseをセットアップ(2021年版)

AWS Toolkit for Eclipseをセットアップするで6年前に書いて …

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE + 絶対圧センサーで遊ぼう!」ワークショップにいってきた

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE …

DS18B20センサー+Raspberry Piで取得した温度をAmazon Kinesis FirehoseからS3へ格納してAthenaでクエリーしたのをQuickSightで可視化する

JAWS DAYS 2017でやりますハンズオンの「[IoTハンズオン] Ras …

EFSをEC2(Amazon Linux 2)からマウントする

Amazon Elastic File Systemが東京リージョンに来たことも …

AWS Client VPNの接続ログを確認しました

AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろい …

BearからNotionへの引っ越し(Amazon Q Developer for CLIに丸投げ)

MacとiPhoneでのテキスト管理と共有で長年Bearを使っていましたが、Wi …

Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました

パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …

プライベートサブネットのEC2でセッションマネージャを使うようVPCエンドポイントを構成する

インターネットゲートウェイへのルートがないルートテーブルに関連付けられたプライベ …