Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI/CDプロセスにCloudFormationを本気導入するために考えるべきこと

 CI/CDプロセスにCloudFormationを本気導入するために考えるべきこと

AWSリソースのプロビジョニングとして幅広く利用されているCloudFormation。みなさん、利用していますか?コードでインフラを管理する上で避けては通れないサービスですが、これをCI/CDプロセスに組み込み、インフラの自動的な追加〜更新運用するためには、考えないといけないことが山のようにあります。

このセッションでは、手元のクライアントやEC2からCloudFormationを実行している運用から一歩踏み出して、CI/CDプロセスにCloudFormationを組み込むために考えないといけないことをお話します。

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

March 20, 2021
Tweet

Transcript

  1. CI/CDプロセスにCloudFormationを 本気導⼊するために考えるべきこと 濱⽥孝治(ハマコー) 1

  2. 2 ⾃⼰紹介

  3. #jawsdays2021 #jawsdays2021_C 3 ⾃⼰紹介 濱⽥孝治(ハマコー) • CX事業本部 MADチーム マネージャー •

    Japan APN Ambassador 2020 • JAWS-UG コンテナ⽀部運営 • 好きなサービス︓ECS, EKS, CloudFormation • 好きな⾔葉「わっしょい」
  4. #jawsdays2021 #jawsdays2021_C 4 @hamako9999 ハマコー

  5. #jawsdays2021 #jawsdays2021_C 5 #jawsdays2021 #jawsdays2021_C 常にでてるよ︕

  6. #jawsdays2021 #jawsdays2021_C 6

  7. 7 今⽇お集まりの皆さんへ

  8. 8 みなさん好きですか︖ CloudFormation

  9. 9 好きそうな顔してる︕︕ 😍

  10. 10 どのへんが好きですか︖

  11. #jawsdays2021 #jawsdays2021_C 11 CloudFormation

  12. #jawsdays2021 #jawsdays2021_C 12 CloudFormationの位置付け CloudFormation VPC Public subnet Amazon EMR

    Amazon Kinesis Data Firehose Amazon Athena Amazon Simple Notification Service Amazon Simple Queue Service Amazon EC2 Amazon Elastic Container Service AWS Lambda AWS Fargate Amazon WorkSpaces AWS IoT Core Amazon Personalize Amazon CloudWatch Amazon Simple Storage Service (S3) Amazon RDS
  13. 13 めちゃくちゃ強⼒ だけど、つかいこなしが難しい

  14. 14 これをさらにCI/CDにのっけて うまく運⽤できるんだろうか︖ 正直⾃分も最近まで 若⼲諦めてました

  15. #jawsdays2021 #jawsdays2021_C 15 2019年11⽉3⽇の⾃社イベント

  16. #jawsdays2021 #jawsdays2021_C 16 その時のお品書き

  17. #jawsdays2021 #jawsdays2021_C 17 今⽇のメインはコレ ここの拡⼤版

  18. #jawsdays2021 #jawsdays2021_C 18 今⽇の趣旨 CloudFormationをCI/CDプロセスに組み込む にあたって、考えるべきこと、取り⼊れるべき ツールなどを把握していただき、 CloudFormationによるAWSアカウントの⾃動 プロビジョニングを⾃信をもって実⾏していただ きたい

  19. 19 本⽇のAgenda

  20. #jawsdays2021 #jawsdays2021_C 20 Agenda • IaCとは︖CloudFormationの基礎 • CloudFormationをCI/CDに組み込むことの意味 • CloudFormationにおけるCIとCDの違い

    • CIで実施すべきこと • CDで実施すべきこと • まとめ
  21. 21 IaCとは︖ CloudFormationの基礎

  22. #jawsdays2021 #jawsdays2021_C 22 Infrastructure as Codeとはなにか︖ コードでインフラを定義する⼿法 Resources: FirstVPC: Type:

    AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 FirstVPC 10.0.0.0/16 template (YAML形式)
  23. #jawsdays2021 #jawsdays2021_C 23 Infrastructure as Codeとはなにか︖ テンプレートファイルにはリソースの状態を定義するた め、同じテンプレートを複数回実⾏しても、インフラは 更新されない Resources:

    FirstVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 FirstVPC 10.0.0.0/16 template (YAML形式) 何度実⾏しても AWS側は変わらない
  24. #jawsdays2021 #jawsdays2021_C 24 Infrastructure as Codeとはなにか︖ aws cliで作成する場合 $aws ec2

    create-vpc -- cidr-block 10.0.0.0/16 VPC 10.0.0.0/16 create-vpc.sh (Shell形式)
  25. #jawsdays2021 #jawsdays2021_C VPC 10.0.0.0/16 VPC 10.0.0.0/16 VPC 10.0.0.0/16 25 Infrastructure

    as Codeとはなにか︖ aws cliは処理を定義するため、複数回実⾏した場合、 その処理が毎回実⾏され、そのたびにインフラ側が更新 される $aws ec2 create-vpc -- cidr-block 10.0.0.0/16 VPC 10.0.0.0/16 create-vpc.sh (Shell形式) 実⾏するだけ インフラは増えていく
  26. #jawsdays2021 #jawsdays2021_C 26 CloudFormationの概要 • テンプレートファイルでAWSリソースをプロビジョ ニングするサービス • テンプレートベースで作成〜変更〜削除も可能 •

    CloudFormation⾃体の追加料⾦なし AWS CloudFormation template (JSON/YAML) Stack (リソース) Amazon EC2 AWS Lambda Amazon RDS Amazon Simple Storage Service (S3)
  27. #jawsdays2021 #jawsdays2021_C 27 CloudFormationの概要 • テンプレート • CloudFormationの最も要となる部分 AWSTemplateFormatVersion: '2010-09-09'

    Description: codecommit and ecr Parameters: accountAllias: Type: String accountAlliasLowerCase: Type: String Resources: ecr: Type: AWS::ECR::Repository Properties: RepositoryName: !Sub ${accountAlliasLowerCase}-ecr Outputs: ecr: Value: !GetAtt ecr.Arn Export: Name: ecr • テキストファイルで記述 • JSON/YAML • スタックのリソース状態 を記述 • リソースを記載する順番 は関係なし (CloudFormationが⾃動 的に解決)
  28. #jawsdays2021 #jawsdays2021_C 28 CloudFormationを使う主なメリット • インフラの管理を簡略化 • ⼀度テンプレートからスタックを作成しておくと変更が簡 単。また、スタック単位でのリソース⼀括削除も可能 •

    インフラを簡単に複製可能 • テンプレートを使い回すことで、複数リージョンへのイン フラ展開が簡単 • インフラの変更管理が可能 • テンプレートのテキストファイルをベースにすることで バージョン管理システムによるインフラ管理が可能
  29. 29 CloudFormationを CI/CDに組み込むことの意味

  30. 30 そもそも 皆さん CloudFormationを どこで実⾏していますか︖

  31. #jawsdays2021 #jawsdays2021_C 31 CloudFormation実⾏環境例とPros and Cons 構成 内容 Pros and

    Cons マネジメントコン ソール • AWSのマネジメントコンソールからポ チポチと操作する • 誰でも簡単。特に準備がいらない • 処理の冪等性を担保することが難しい 作業⽤ クライアントPC • インフラ管理者のクライアントPCから コード実⾏ • 柔軟性は⾼いが実⾏環境を統⼀しづらい • 往々にして実⾏コードとリポジトリがずれ る EC2 (SSH接続) • EC2にSSHでログインして、コード実⾏ • IaC実⾏権限の管理が煩雑(SSH秘密鍵と IAMの2重管理) • EC2の料⾦が気になる EC2 (セッションマネー ジャー接続) • EC2にセッションマネージャーでログイ ンして、コード実⾏ • SSH接続よりマシ • EC2の料⾦が気になる リポジトリから ⾃動適⽤ • プルリクエストでコードのテスト • エラーなければ特定ブランチマージから ⾃動デプロイ • アプリケーションデプロイフローの流れ をインフラコードに適⽤ • 実⾏コードがリポジトリと同⼀なのはすご く安⼼ • 構築が⼤変 • 柔軟な運⽤ができない
  32. 32 そもそも なぜCI/CDに組み込むのか︖

  33. 33 GitOpsの考え⽅を IaCにも取り込むことで 安定した運⽤を可能にする

  34. #jawsdays2021 #jawsdays2021_C 34 IaCにおけるGitOpsの定義 参照︓re:Invent GPSTEC410 GitOps compliance on AWS

    Enforcing immutable infrastructure
  35. #jawsdays2021 #jawsdays2021_C 35 GitOpsのメリット • 変更履歴が強制的にリポジトリに残る • 変更承認の強制などガバナンスを強制できる • 強制ときくと聞こえが悪いが、仕組みにすることで安⼼

    できる • ⾃動化により⼈的コストが削減できる • ヒューマンエラーを撲滅できる
  36. #jawsdays2021 #jawsdays2021_C 36 CloudFormation実⾏環境例とPros and Cons 構成 内容 Pros and

    Cons マネジメントコン ソール • AWSのマネジメントコンソールからポ チポチと操作する • 誰でも簡単。特に準備がいらない • 処理の冪等性を担保することが難しい 作業⽤ クライアントPC • インフラ管理者のクライアントPCから コード実⾏ • 柔軟性は⾼いが実⾏環境を統⼀しづらい • 往々にして実⾏コードとリポジトリがずれ る EC2 (SSH接続) • EC2にSSHでログインして、コード実⾏ • IaC実⾏権限の管理が煩雑(SSH秘密鍵と IAMの2重管理) • EC2の料⾦が気になる EC2 (セッションマネー ジャー接続) • EC2にセッションマネージャーでログイ ンして、コード実⾏ • SSH接続よりマシ • EC2の料⾦が気になる リポジトリから ⾃動適⽤ • プルリクエストでコードのテスト • エラーなければ特定ブランチマージから ⾃動デプロイ • アプリケーションデプロイフローの流れ をインフラコードに適⽤ • 実⾏コードがリポジトリと同⼀なのはすご く安⼼ • 構築が⼤変 • 柔軟な運⽤ができない
  37. #jawsdays2021 #jawsdays2021_C 37 CloudFormation実⾏環境例とPros and Cons 構成 内容 Pros and

    Cons マネジメントコン ソール • AWSのマネジメントコンソールからポ チポチと操作する • 誰でも簡単。特に準備がいらない • 処理の冪等性を担保することが難しい 作業⽤ クライアントPC • インフラ管理者のクライアントPCから コード実⾏ • 柔軟性は⾼いが実⾏環境を統⼀しづらい • 往々にして実⾏コードとリポジトリがずれ る EC2 (SSH接続) • EC2にSSHでログインして、コード実⾏ • IaC実⾏権限の管理が煩雑(SSH秘密鍵と IAMの2重管理) • EC2の料⾦が気になる EC2 (セッションマネー ジャー接続) • EC2にセッションマネージャーでログイ ンして、コード実⾏ • SSH接続よりマシ • EC2の料⾦が気になる リポジトリから ⾃動適⽤ • プルリクエストでコードのテスト • エラーなければ特定ブランチマージから ⾃動デプロイ • アプリケーションデプロイフローの流れ をインフラコードに適⽤ • 実⾏コードがリポジトリと同⼀なのはすご く安⼼ • 構築が⼤変 • 柔軟な運⽤ができない 皆さんには⾃信をもって ここに踏み込んでもらいたい
  38. 38 CloudFormationにおける CIとCDの違い

  39. #jawsdays2021 #jawsdays2021_C 39 基本的な考え⽅ CI(Continuous Integration) • テンプレートの静的解析 CD(Continuous Delivery)

    • CloudFormationのスタックのデプロイ(AWSリ ソースの変更)
  40. #jawsdays2021 #jawsdays2021_C 40 CloudFormationにおけるCI/CD基本構成 CI CD

  41. 41 CIで実施すべきこと

  42. #jawsdays2021 #jawsdays2021_C 42 CI部分 CI CD

  43. #jawsdays2021 #jawsdays2021_C 43 CloudFormationのCIで実施すべきこと アーティファクトを作成する前に、組織ポリシーや異常なテ ンプレートを排除し、後続処理の⼿間を省略する • CloudFormation Linter(VisualStudio Code

    プラグ イン) • cfn-python-lint • AWS CloudFormation Guard • cfn-nag • CFripper
  44. #jawsdays2021 #jawsdays2021_C 44 CloudFormationのCIで実施すべきこと アーティファクトを作成する前に、組織ポリシーや異常なテ ンプレートを排除し、後続処理の⼿間を省略する • CloudFormation Linter(VisualStudio Code

    プラグ イン) • cfn-python-lint • AWS CloudFormation Guard • cfn-nag • CFripper 今使うならこれ
  45. 45 CloudFormation Linter (VSCodeプラグイン)

  46. #jawsdays2021 #jawsdays2021_C 46 CloudFormation Linter(VSCode Plugin) https://marketplace.visualstudio.com/items?itemName=kddejong.vscode-cfn-lint

  47. #jawsdays2021 #jawsdays2021_C 47 CloudFormation Linter(VSCode Plugin) CI/CDとは関係ないが、CloudFormationのテンプ レートを書く全⼈類が⼊れておくべきプラグイン • cfn-lint埋め込みによるリアルタイムエラー表⽰

    • AWSリソースに応じたプロパティ補完 • リソースの関連を⽰すグラフ
  48. #jawsdays2021 #jawsdays2021_C 48 プロパティ補完の様⼦ 該当するAWSリソースのプロパ ティ⼀覧の表⽰ 該当ドキュメントのURL

  49. #jawsdays2021 #jawsdays2021_C 49 リソース関連グラフの様⼦ テンプレートを解析して、リソース名とAWSリソースタイプと それぞれの依存関係(DependsOn、Ref、GetAtt)を図⽰し てくれる 例)ALB、ECSサービス、ECSタスク

  50. #jawsdays2021 #jawsdays2021_C 50 リソース関連グラフの様⼦ 例) • CodePipeline • CloudWatchE vents

    • CodeBuild • S3Bucket • 関連ロール
  51. #jawsdays2021 #jawsdays2021_C 51 Linterの解説記事 https://dev.classmethod.jp/articles/use-linter-to-notice-mistakes-of-cloudformation/

  52. 52 cfn-python-lint

  53. #jawsdays2021 #jawsdays2021_C 53 AWS CloudFormation Linter https://github.com/aws-cloudformation/cfn-python-lint

  54. #jawsdays2021 #jawsdays2021_C 54 CloudFormation Linter AWS謹製のテンプレート静的解析ツール • 各種エディタのプラグイン豊富 • 122個のルールがデフォルトで組み込まれている

    • Error 101、Worning 21 • カスタムルールの作成も可能 • Dockerfileが⽤意されているのでCI/CDへの組み込 みが容易(公式イメージはなし)
  55. #jawsdays2021 #jawsdays2021_C 55 ルール例(ERROR) • E1001: Basic CloudFormation Template Configuration

    • E1002: Template size limit • E1003: Template description limit • E1004: Template description can only be a string • E1010: GetAtt validation of parameters • E1011: FindInMap validation of configuration • E1012: Check if Refs exist • E1015: GetAz validation of parameters • E1016: ImportValue validation of parameters
  56. #jawsdays2021 #jawsdays2021_C 56 ルール例(WORNING) • W1019: Sub validation of parameters

    • W1020: Sub isn't needed if it doesn't have a variable defined • W2001: Check if Parameters are Used • W2030: Check if parameters have a valid value • W2031: Check if parameters have a valid value based on an allowed pattern • W2501: Check if Password Properties are correctly configured • W2506: Check if ImageId Parameters have the correct type • W2510: Parameter Memory Size attributes should have max and min • W2511: Check IAM Resource Policies syntax • W2531: Check if EOL Lambda Function Runtimes are used
  57. #jawsdays2021 #jawsdays2021_C 57 カスタムルール適⽤例(Custome_rule.txt) こういうテンプレートを書くと、 Warningがでる

  58. #jawsdays2021 #jawsdays2021_C 58 cfn-lintの利⽤(Dockerfile) FROM python:3.8-alpine RUN pip install cfn-lint

    RUN pip install pydot ENTRYPOINT ["cfn-lint"] CMD ["--help"] • 公式イメージは提供されていないため、⾃分の CI/CDプロセスで使うには⾃前ビルド or 都度pipイ ンストールを実施 • ⾃前ビルドはECR Publicに置くのもあり pipで簡単にインストール可能
  59. #jawsdays2021 #jawsdays2021_C 59 cfn-lintの利⽤(gitlab-ci.yml例) cfn-lint: stage: iac-static-test image: python:3.8-alpine script:

    - pip install --upgrade pip - pip install cfn-lint - pip install pydot - cfn-lint template/*.yml ベースイメージにpython:3.8-alpineを利⽤して、pipインス トール後、cfn-lintを実⾏
  60. 60 AWS CloudFormation Guard

  61. #jawsdays2021 #jawsdays2021_C 61 AWS CloudFormation Guard https://aws.amazon.com/jp/about-aws/whats-new/2020/06/introducing-aws-cloudformation-guard-preview/

  62. #jawsdays2021 #jawsdays2021_C 62 AWS CloudFormation Guard https://github.com/aws-cloudformation/cloudformation-guard

  63. #jawsdays2021 #jawsdays2021_C 63 AWS CloudFormation Guard 2020年10⽉にGAされた、AWS謹製のテンプレート解 析アンドセキュリティポリシー評価ツール • 独⾃のポリシー記述⾔語を利⽤し、企業のポリシー

    ガイドラインに反するCloudFormationテンプレー トを排除可能 • デフォルト定義されているルールは無し • 既存のテンプレートからルールセットを作成可能 • GitHubにExampleのルールが⽤意されている
  64. #jawsdays2021 #jawsdays2021_C 64 Example ルールセット DynamoDBやセキュリティ関連 のルールセットがExample提供 されている

  65. #jawsdays2021 #jawsdays2021_C 65 ddb(DynamoDB).ruleset タグに「PROD」が含まれている場合、.DeletionPolicyを Retainに強制する

  66. #jawsdays2021 #jawsdays2021_C 66 AWSにおけるガードレールの考え⽅と実装⽅法 AWSはガードレール概念の実装としてControl Towerで利⽤ するガードレールリファレンスを提唱している Organizationsが必須なControl TowerやSCP(サービスコ ントロールポリシー)などと共に、CloudFormation

    Guard を利⽤したガードレール実装も検討の余地あり
  67. #jawsdays2021 #jawsdays2021_C 67 cfn-guardの利⽤(gitlab-ci.yml例) ベースイメージにubuntu:20.04を利⽤して、wgetからバイ ナリダウンロードして配置して実⾏ cfn-guard: stage: iac-static-test image:

    ubuntu:20.04 script: - apt-get update - apt-get install -y wget - wget https://github.com/aws-cloudformation/cloudformation- guard/releases/download/1.0.0/cfn-guard-linux-1.0.0.tar.gz - tar -xvf cfn-guard-linux-1.0.0.tar.gz - cd ./cfn-guard-linux - ./cfn-guard --version
  68. #jawsdays2021 #jawsdays2021_C 68 参考ブログ デプロイ前のコンプライアンスチェック︕CloudFormation Guardを試してみた | DevelopersIO CloudFormation GuardをGitHub

    Actionsに組み込んでみ た | DevelopersIO
  69. 69 選外になったもの cfn-nag CFripper

  70. #jawsdays2021 #jawsdays2021_C 70 選外になったもの • cfn-nag • AWS謹製のテンプレートセキュリティポリシー準拠確認ツール • 以前はよく使われていたようだが、今はCloudFormation

    Guard が上位互換の扱いにみえるのでこちらを使う必要性はなさそう • ポリシーの定義がテンプレートへのメタデータ埋め込み⽅式なの で、正直だいぶ使いづらい • CFripper • Skyscanner社が出している静的解析ツール • セキュリティポリシーを別のルールセットで評価可能 • スター数も多く開発は活発そうでcfn-nagより良さそうだが、こ れもCloudFormation Guardが出てきたので必要なさそう
  71. #jawsdays2021 #jawsdays2021_C 71 CI成果物のアーティファクト格納 CDで利⽤する形態に合わせてアーティファクトを作成する • 通常のCloudFormationの場合 • CloudFormationのテンプレート •

    パラメータ設定ファイル • 設定ファイルはCDの形態によってフォーマットが異なる • SAM(Serverless Application Model)の場合 • Lambdaのコード(zip化されたもの)と、パラメータが アーティファクト⽤に変換されたテンプレート • cloudformation packageコマンドを使うと、そのあたり CloudFormationがよしなにやってくれる
  72. 72 CDで実施すべきこと

  73. #jawsdays2021 #jawsdays2021_C 73 CD部分 CI CD

  74. #jawsdays2021 #jawsdays2021_C 74 CloudFormationのCDで実施すべきこと CloudFormationのCDで実施したほうがよいこと 1. ChangeSetの作成 2. 承認 3.

    ChangeSetの実⾏
  75. #jawsdays2021 #jawsdays2021_C 75 CloudFormationのCDの実装⽅法 CD実装⽅法は⼤きく2つ 1. CodePipelineにClooudFormationを組み込む 2. CodeBuildからCLIで実⾏

  76. #jawsdays2021 #jawsdays2021_C 76 CloudFormationのCDの実装⽅法 CD実装⽅法は⼤きく2つ 1. CodePipelineにClooudFormationを組み込む 2. CodeBuildからCLIで実⾏ それぞれのメリット・デメリットを

    把握する必要あり
  77. 77 CloudFormationのCD実装⽅法 ①CodePipelineに CloudFormationを組み込む

  78. #jawsdays2021 #jawsdays2021_C 78 ①CodePipelineにCloudFormationを組み込む CodePipelineのアクションプロバイダーに CloudFormationを利⽤ CloudFormationを指定

  79. #jawsdays2021 #jawsdays2021_C 79 ①CodePipelineにCloudFormationを組み込む アクションモードで、スタックに対する操作を設定する 変更セットの作成だけなのか、実 ⾏なのか、指定が可能

  80. 80 CodePipelineに組み込んだとして テンプレートに パラメータを与えている場合 どうするの︖

  81. #jawsdays2021 #jawsdays2021_C 81 ①CodePipelineにCloudFormationを組み込む ⼊⼒アーティファクトにテ ンプレート設定ファイルを 指定でき、パラメータやス タックポリシーやタグを JSON形式で指定可能 これにより、テンプレート

    は共通で環境ごとによりパ ラメータを変えた上での CloudFormationの実⾏な んかも
  82. #jawsdays2021 #jawsdays2021_C 82 ①CodePipelineにCloudFormationを組み込む このチュートリアルをやると実装イメージがつかめます https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline.html

  83. #jawsdays2021 #jawsdays2021_C 83 ①CodePipelineにCloudFormationを組み込む • S3を起点としたアーティ ファクトの指定 • テスト環境でのスタック作 成と承認〜環境削除

    • 本番環境でのチェンジセッ ト作成 → 承認 → デ プロイ
  84. 84 CloudFormationのCD実装⽅法 ②CodeBuildから CLIで実⾏

  85. #jawsdays2021 #jawsdays2021_C 85 ②CodeBuildからCLIで実⾏ CodeBuild(その他⼀般的なCI/CDツール)からCLIで実⾏ • Terraformとかでは⼀般的な⽅法 • terraform plan、terraform

    apply • CloudFormationは⾟い • CLI体系が本当にイケてない(createとupdateの使い分けが必 要) • スタック展開の進捗がわからない • deployコマンドもそこまで柔軟ではない • CloudFormationのCDが普及しづらい⼤きな原因はこれだと 思ってる
  86. #jawsdays2021 #jawsdays2021_C 86 ②CodeBuildからCLIで実⾏ CodeBuild(その他⼀般的なCI/CDツール)からCLIで実⾏ • Terraformとかでは⼀般的な⽅法 • terraform plan、terraform

    apply • CloudFormationは⾟い • CLI体系が本当にイケてない(createとupdateの使い分けが必 要) • スタック展開の進捗がわからない • deployコマンドもそこまで柔軟ではない • CloudFormationのCDが普及しづらい⼤きな原因はこれだと思っ てる そんな悩めるあなたに舞い降りた奇跡︕︕
  87. 87 Rain

  88. #jawsdays2021 #jawsdays2021_C 88 Rain https://github.com/aws-cloudformation/rain

  89. #jawsdays2021 #jawsdays2021_C 89 Rain AWS謹製CloudFormationのCLIツール • 今までのAWS CLIベースのコマンドのつらみをもろもろ 解消してくれる •

    インタラクティブなデプロイが可能 • CFnテンプレートの⽣成ができる • 既存スタックの有無によるコマンド使い分けももちろん 不要 • 削除も簡単 • Go製なので、コンテナ利⽤も超簡単
  90. #jawsdays2021 #jawsdays2021_C 90 参考情報(雰囲気はこれでつかめます︕) https://dev.classmethod.jp/articles/aws-cloudformation-rain/

  91. #jawsdays2021 #jawsdays2021_C 91 CLIじゃないと無理なパターン こういうクロスアカウントでのデプロイはCLIじゃない と無理

  92. 92 実際どちらが良いのか︖ 2つの⽅法のPros and Cons ① CodePipelineにClooudFormationを組み込む ② CodeBuildからCLIで実⾏

  93. #jawsdays2021 #jawsdays2021_C 93 CloudFormationのCD実装のPros and Cons ⼿法 Pros Cons ①CodePipelineに

    CloudFormationを 組み込む • 作るものが少なくシンプル に構築できる • 処理の⾒通しが良い • パラメータ内容の動的変更な ど融通が効かせづらい • CodePipelineでしか動かない ②CodeBuildから CLIで実⾏ • マルチなCI/CDプラット フォームで動作可能 (CodeBuild、GitHub Actions、CircleCI、 GitLab CI) • 冪等性が重要な領域に「処 理」を組み込んでしまいがち • 前段の処理結果を受けてパラ メータを変更するなどを過度 にやりだすと、⾒通しが悪く なりCI/CDプロセス保守性が 下がる
  94. 94 まとめ

  95. #jawsdays2021 #jawsdays2021_C 95 まとめ CloudFormationをGitOpsとして運⽤することには⼤ いなるメリットがある CIツールが⾮常に充実してきた CLI体系が洗練されつつあるので、CD部分も柔軟にで きるようになってきた

  96. #jawsdays2021 #jawsdays2021_C 96 まとめ CloudFormationをGitOpsとして運⽤することには⼤ いなるメリットがある CIツールが⾮常に充実してきた CLI体系が洗練されつつあるので、CD部分も柔軟にで きるようになってきた 今こそCloudFormationの

    GitOps時代︕︕
  97. 97 みなさんのこれからの CloudFormationライフがより良いものに なることを願って