0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormationでParameter指定できるようにする

Last updated at Posted at 2024-05-26

はじめに

最近、IaC(Infrastructure as Code)でAWS環境を構築する必要がありましたが、IaCの知見がない私は環境ごとにYAMLファイルを作成するという非効率な方法をとっていました…

正直環境ごとにファイル内の設定を書き換えるのは手間がかかるので、もっと便利な方法がないかと探していてこの方法にたどり着きました!

備忘録としてこの記事では、AWS CloudFormationテンプレートでパラメータを指定し、環境ごとに異なるリソースを作成する方法について説明します!

前提条件

  • AWSアカウント
  • AWS CloudFormationの基本的な知識

CloudFormationテンプレートの例

以下に示すのは、環境ごとに異なるリソースを作成するためのCloudFormationテンプレートの例です。

AWSTemplateFormatVersion: "2010-09-09"
Description: Prefix

Parameters:
  Prefix:
    Type: String
    AllowedValues:
      - dev
      - stg
      - prd
    Description: Prefix
  DevelopAccountId:
    Description: Develop Account ID
    MaxLength: 12
    MinLength: 12
    Type: String
    Default: ************
  StagingAccountId:
    Description: Staging Account ID
    MaxLength: 12
    MinLength: 12
    Type: String
    Default: ************
  ProductionAccountId:
    Description: Production Account ID
    MaxLength: 12
    MinLength: 12
    Type: String
    Default: ************

Conditions:
  CreateDevResources: !Equals [!Ref AWS::AccountId, !Ref DevelopAccountId]
  CreateStagingResources: !Equals [!Ref AWS::AccountId, !Ref StagingAccountId]
  CreateProdResources: !Equals [!Ref AWS::AccountId, !Ref ProductionAccountId]
  CreateDevOrStagingResources:
    !Or [Condition: CreateDevResources, Condition: CreateStagingResources]

パラメータの詳細

このテンプレートでは、以下のパラメータを使用しています。

  • Prefix: 環境のプレフィックスを指定します。dev, stg, prdのいずれかの値を取得
  • DevelopAccountId: 開発用のAWSアカウントIDを指定します。12文字の文字列
  • StagingAccountId: ステージング用のAWSアカウントIDを指定します。12文字の文字列
  • ProductionAccountId: 本番用のAWSアカウントIDを指定します。12文字の文字列

条件の詳細

このテンプレートでは、以下の条件を使用しています。

  • CreateDevResources: 現在のAWSアカウントIDが開発アカウントIDと一致する場合にtrue
  • CreateStagingResources: 現在のAWSアカウントIDがステージングアカウントIDと一致する場合にtrue
  • CreateProdResources: 現在のAWSアカウントIDが本番アカウントIDと一致する場合にtrue
  • CreateDevOrStagingResources: 現在のAWSアカウントIDが開発またはステージングアカウントIDと一致する場合にtrue

おわりに

この記事ではCloudFormationテンプレートでパラメータを使用し、環境ごとに異なるリソースを作成する方法を紹介しました。この方法を使用することで、開発、ステージング、本番環境ごとに異なる設定を1つのYAMLファイルで簡単に管理することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?