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が設定されていました。
1 2 3 4 5 6 7 8 |
Globals: Function: AutoPublishAlias: live DeploymentPreference: Enabled: true Type: Canary10Percent5Minutes Role: !Ref CodeDeployRole |
これにより、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にブラウザからアクセスすると、以下の結果が返ってきます。
1 2 3 4 5 |
{ output: "Hello World", timestamp: "2021-06-07T10:40:54.930811" } |
これを変更しようと思います。
Cloud9で、index.pyとtests/test_handler.pyの’Hello World’を’Hello World Yamashita’に変更しました。
test_handler.pyも変更しておかないとBuildのテストで失敗します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ git add . $ git commit -m "update" [master a8bf7fb] update 2 files changed, 2 insertions(+), 2 deletions(-) $ git push Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 417 bytes | 417.00 KiB/s, done. Total 5 (delta 3), reused 0 (delta 0) To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Lambda-Python 2452d28..a8bf7fb master -> master |
これで、CodePipelineが実行されます。
Build、変更セットの作成が無事成功して、変更セットの実行まで来ました。
CloudFormationスタックでは、Lambdaのバージョンが作成されて、liveエイリアスへの重み付け設定が始まりました。
Lambda関数のliveエイリアスには、バージョン2に10%の重みが設定されています。
残り90%はまだバージョン1です。
5分後にCloudFormationではエイリアスの設定が完了しました。
Lambda関数のliveエイリアスでもバージョン2が100%になりました。
API GatewayのprodステージURLにブラウザでアクセスすると更新されていました。
1 2 3 4 5 |
{ output: "Hello World Yamashita", timestamp: "2021-06-07T10:59:01.630638" } |
CodeStarを使うことで、まずは一通りのパイプラインと開発環境を作ってしまえるので、非常に便利でした。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

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

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

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

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


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く未来~」に行ってきました
「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く …
-
-
S3リクエストメトリクスをプレフィックスを指定して有効化
検証でどのリクエストがどれぐらい発生しているのか、さっと知りたくなったので、特定 …
-
-
AWS Organizationsからメンバーアカウントを直接「閉じる」ことができるようになりました
これまでは、メンバーアカウントはOrganizations組織から「除外」して独 …
-
-
AWS Organizationsからアカウントを新規作成してみて
AWS Organizationsでアカウントを新規作成することがありましたので …
-
-
AWS SSOのパスワードリマインダーでADのパスワードを変更
AWS Managed Microsoft ADを構築してユーザー追加までで構築 …
-
-
AWS Cloud9で環境を共有する
(特にリモート環境では)画面共有をしたり、リポジトリを共有したり、コーディング環 …
-
-
AWSアカウントのルートユーザーのセキュリティ認証情報
アカウント作成時にはMFA設定するためにIAMダッシュボードからアクセスするので …
-
-
S3バケットにWebフォントをアップロードしてCORSを設定する
Webフォントファイルは、モジワク研究さんのマメロンを使用させていただきました。 …
-
-
T3.nanoで仮想メモリ割当をユーザーデータで実行する
T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …
-
-
Amazon CloudSearchからAmazon Elasticsearch Serviceへ変えました
全文検索をする必要がありまして、本当はCloudSearchを使い続けたいのです …