ヤマムギ

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入門ガイド」という本を書きました。

i

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

 - AWS , , , , ,

ad

ad

  関連記事

AWS Toolkit for Eclipseをセットアップする

AWSでそろそろ課金がされつつありますので、夜中はインスタンスを自動停止して朝自 …

Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました

過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …

AWS Summit Tokyo 2017 Day3 開場~基調講演~Dev Day Night

AWS Summit Tokyo 2017 参加2日目のDay3です。 基調講演 …

AWS EC2 Amazon Linuxにmauticをインストールする(Sendgrid, Nginx, MySQL on RDS)

mauticをAmazon LinuxとNginx,MySQL on RDSにイ …

AWS WAF Web ACLとルールをv1(Classic)からv2に自動移行しました

新しいものは、課題が解決されていたり、機能追加されたりするのでいいものです。 長 …

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

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

Amazon EC2のAMIイメージを自動取得して保持日数が過ぎたら削除

画像の保存をEC2に戻した事もあってEC2のバックアップの自動取得を勉強がてらや …

AWS Cloud9でJavaサンプルを実行する

リモートで共有開発ができるCloud9便利ですね。 Cloud9でJavaのサン …

Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(1)AWS編~

Pepperの機能を使えるところは使って、何かしたいなあと思ってまして。 目(カ …

SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する

SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …