俺のアウトプット

調べたこと、試したことを書きます

CloudFormationテンプレートの擬似パラメータ

擬似パラメータは、CloudFormation側で事前定義されているパラメータです。 Parametersセクションで定義する必要はありません。
現在ログインしているAWSアカウントIDや選択しているリージョンなど、主に現在のコンテキスト情報を参照するために利用します。

擬似パラメータ

擬似パラメータは AWS:: から始まります。

擬似パラメータ 説明 よく使う組み込み関数 出力例
AWS::AccountId AWSアカウントID Ref 123456789012
AWS::NotificationARNs スタックの通知 Amazon リソースネーム Ref arn:aws:sns:ap-northeast-1:871728391824:topic1
AWS::NoValue 組み込み関数 Fn::If で使用すると対象プロパティを削除 Fn::If
AWS::Partition パーティション Fn::Sub aws
AWS::Region リージョン Fn::Sub ap-northeast-1
AWS::StackId スタックのID Ref arn:aws:cloudformation:ap-northeast-1:123456789012:stack/test/12345678-8b4e-9abc-def0-123456789abc
AWS::StackName スタック名 Ref test
AWS::URLSuffix ドメインのサフィックス Fn::Sub amazonaws.com

AWS::NotificationARNs

[スタックの作成]-[オプション]のアドバンストで設定したトピック。

AWS::NoValue

少し特殊な疑似パラメータです。組み込み関数 Fn::If 内で使用します。
定義されている場合はプロパティに設定し、未定義ならプロパティに設定したくない場合に利用します。

DBSnapshotIdentifier:
  !If:
    - UseDBSnapshot
    - Ref: DBSnapshotName
    - Ref: AWS::NoValue

サンプル

パラメータでアベイラビリティゾーンを選択し、サブネット作成時に入力値を設定するサンプルです。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
Outputs:
  Output1:
    Value: !Sub "arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${MyVPC}"
    Description: VPC ARN
  Output2:
    Value: !Sub "https://dynamodb.${AWS::Region}.${AWS::URLSuffix}"
    Description: DynamoDB endpoint

出力 (Outputs)

  • 組み込み関数 Fn::Sub を利用すると、文字列内にパラメータを埋め込むことができます。
  • パラメータは ${パラメータ名} で表現。
  • Sub は substitute の略。置換。

f:id:kitsugi:20180720060559p:plain

参考