IaC を CI/CD パイプラインに統合する
AWS でのデプロイの自動化
Dunieski Otano
Amazon Web Services Solutions Architect
コード優先、インフラは後回し
コードは CodePipeline でデプロイ、インフラは手動更新
開発者は Lambda をスケール、運用担当は SQS キューをリサイズ
コードとインフラのずれが障害の原因に
CloudFormation を同じパイプラインに組み込む
パイプラインアクションとしての CloudFormation
CodePipeline は
CloudFormation デプロイアクション
をサポート
パイプラインは
テンプレートアーティファクト
をアクションに渡す
モード:
CREATEUPDATE、DELETEONLY、REPLACE_ON_FAILURE、CHANGE_SET_REPLACE / EXECUTE
ソース、ビルド、アプリデプロイの各アクションと並行して実行
典型的なエンドツーエンドパイプライン
ソース
: Git push でパイプラインを起動
ビルド
: テンプレートとアプリのアーティファクトを生成
インフラのデプロイ
: CloudFormation がスタックを作成・更新
アプリのデプロイ
: CodeDeploy が新バージョンを配布
スタック失敗時の自動ロールバック
更新失敗時は
自動的に最後の正常な状態へロールバック
パイプラインステージが
失敗
し、後続ステージを停止
第1章で設定した障害アラートが自動的に発火
モジュール化テンプレート向けのネストされたスタック
ネストされたスタック
は型
AWS::CloudFormation::Stack
として宣言
2,000行のテンプレートを
再利用可能なモジュール
に分割
親スタックがパラメータを渡し、出力を読み取る
各モジュールは親の中で独立してデプロイ
マルチアカウント・マルチリージョン向け StackSets
StackSet
は1つのテンプレートを
多数のアカウントとリージョン
にデプロイ
セキュリティベースライン、ガードレール、共有インフラ
に有効
テンプレートを書き換えずに
スタックインスタンス
を追加・削除
中央管理、ローカルデプロイ
適切な構成を選ぶ
単一スタック
: 小規模アプリ、単一環境
ネストされたスタック
: 大規模テンプレート、モジュール構成
StackSets
: 同一テンプレート、多数のアカウントとリージョン
3つとも CodePipeline と相性が良い
練習しましょう!
AWS でのデプロイの自動化
Preparing Video For Download...