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

AWS CloudFormationによる Infrastructure as Codeの実現

HIRA
August 01, 2019

AWS CloudFormationによる Infrastructure as Codeの実現

2019.8.1 社内勉強会発表資料
2022.5.21 SlideShareから移行

HIRA

August 01, 2019
Tweet

More Decks by HIRA

Other Decks in Technology

Transcript

  1. AWS CloudFormation - テンプレート構成 AWSTemplateFormatVersion: 2010-09-09 Description : sample stack

    Parameters: Env: Type: String AllowedValues: - “prd” - “stg” - “dev” Resources: VPC: Type: AWS::EC2::VPC ・・・・ Outputs: OutVPC: Value: !Ref VPC Parameters: スタック作成時のパラメータ Resources: 作成対象のリソース Outputs: テンプレート間で共有する値 他にもあるが、大きく3つの構成となる
  2. AWS CloudFormation - テンプレート構成 AWSTemplateFormatVersion: 2010-09-09 Description : sample stack

    Parameters: Env: Type: String AllowedValues: - “prd” - “stg” - “dev” Resources: VPC: Type: AWS::EC2::VPC ・・・・ Outputs: OutVPC: Value: !Ref VPC パラメータ値の指定 Typeに型を定義 AllowedValuesで選択項目を設定することで実行時に選択させること ができる
  3. AWS CloudFormation - テンプレート構成 AWSTemplateFormatVersion: 2010-09-09 Description : sample stack

    Parameters: Env: Type: String AllowedValues: - “prd” - “stg” - “dev” Resources: VPC: Type: AWS::EC2::VPC ・・・・ Outputs: OutVPC: Value: !Ref VPC リソースタイプを指定 下に各種設定のパラメータを指定する
  4. AWS CloudFormation - テンプレート構成 AWSTemplateFormatVersion: 2010-09-09 Description : sample stack

    Parameters: Env: Type: String AllowedValues: - “prd” - “stg” - “dev” Resources: VPC: Type: AWS::EC2::VPC ・・・・ Outputs: OutVPC: Value: !Ref VPC Resourcesで作成した情報を他のテンプレートから 参照できるようにするための出力
  5. AWS CloudFormation – デプロイ • AWS コンソール:CloudFormationスタック作成画面 • AWS CLI

    デプロイ方法 デプロイの特徴 • エラーを検出するとロールバックされる • 変更分だけを適用できる
  6. 実演 - 今回作るもの VPC Availability Zone 1a Private subnet EC2

    Instance Availability Zone 1c Private subnet EC2 Instance Auto Scaling group SQS DynamoDB S3 SNS IAM • VPC×1 • ルートテーブル×1 • プライベートサブネット×2 • EC2×2 • セキュリティグループ×1 • AutoScaling×1 • セキュリティポリシー • IAMロール×1 • 各VPCエンドポイント • その他各サービス情報
  7. 今後やりたいこと バージョン管理 CI/CDツール AWS環境 コミット webhook スタック 作成・更新 AWS CLI

    ジョブ実行 テンプレート アプリケーションと同じように人の手ではなくCI/CDを通してデプロイしたい。
  8. 他の選択肢 AWS CDK(Cloud Development Kit) プログラム言語(JavaScript, TypeScript, Python, Java, .NETなど)を使ってスタック

    作成を実現できる。 もちろんifやループが自由に使える。効率よく実装可能。 CloudFormationができることはほとんどできる。 最近正式リリースされたばかりであるため、実現できないこともあるよう・・ 今後はこちらにシフトしていきたい。 https://github.com/aws/aws-cdk