[Outputs] (出力)
オプションの Outputs
セクションは、他のスタックにインポートする (クロススタック参照を作成)、応答として返す (スタック呼び出しについて記述)、または、AWS CloudFormation コンソールで表示する出力値を宣言します。たとえば、見つけやすいバケットを作成するスタックの S3 バケット名を出力できます。
CloudFormation は、[Outputs] (出力) セクションに含める情報の編集または難読化を行いません。このセクションを使用して、パスワードやシークレットなどの機密情報を出力しないことを強くお勧めします。
出力値は、スタックオペレーションの完了後に使用できます。スタックのステータスが IN_PROGRESS
ステータスのいずれかの場合は、スタックの出力値を使用できません。出力値が常に利用できない場合があるため、サービスランタイムとスタック出力値の間の依存関係を確立することはお勧めしません。
構文
Outputs
セクションは、キー名 Outputs
とそれに続くスペースおよび単一のコロンで構成されます。1 つのテンプレートで宣言できる出力は最大 200 個です。
次の例は、Outputs
セクションの構造を示します。
JSON
出力の宣言全体を中括弧で囲みます。複数の出力をカンマで区切ります。
"Outputs" : { "
Logical ID
" : { "Description" : "Information about the value
", "Value" : "Value to return
", "Export" : { "Name" : "Name of resource to export
" } } }
YAML
Outputs:
Logical ID
: Description:Information about the value
Value:Value to return
Export: Name:Name of resource to export
出力フィールド
Outputs
セクションでは、次のフィールドを含めることができます。
- 論理 ID
-
現在の出力の識別子。論理 ID は英数字 (
a–z
、A–Z
、0–9
) とし、テンプレート内で一意である必要があります。 - Description (オプション)
-
出力値について説明する
String
型。説明の宣言の値は、長さ 0~1024 バイトのリテラル文字列である必要があります。説明の指定には、パラメータまたは機能を使用できません。説明には長さ最大 4K の文字列が使用できます。 - Value (必須)
-
aws cloudformation describe-stacks
コマンドから返されるプロパティの値。出力の値には、リテラル、パラメーター参照、疑似パラメーター、マッピング値、および組み込み関数を含めることができます。 - エクスポート (オプション)
-
クロススタック参照にエクスポートされるリソース出力の名前。
注記 クロススタック参照には以下の制限があります。
-
AWS アカウントごとに、
Export
名前がリージョン内で一意である必要があります。 -
リージョン間でクロススタック参照を作成することはできません。組み込み関数
Fn::ImportValue
を使用して、同じリージョン内にエクスポートされた値のみをインポートできます。 -
出力の場合、
Export
のName
プロパティの値は、リソースに依存するRef
またはGetAtt
の関数を使用できません。同様に、
ImportValue
関数にリソースに依存するRef
またはGetAtt
関数を含めることはできません。 -
別のスタックがその出力の 1 つを参照している場合、スタックを削除することはできません。
-
別のスタックによって参照されている出力値を変更または削除することはできません。
組み込み関数を使用して、エクスポートの
Name
の値をカスタマイズできます。次の例では、Fn::Join
関数を使用します。JSON
"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }
YAML
Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]
-
出力と条件を関連付けるには、テンプレートの Conditions
セクションで条件を定義します。
例
以下の例では、スタック出力のしくみを示しています。
スタック出力
次の例では、BackupLoadBalancerDNSName
という名前の出力によって、論理 ID が BackupLoadBalancer
であるリソースの DNS 名が CreateProdResources
条件が true の場合に返されます。(2 番目の出力は、複数の出力を指定する方法を示しています。)
JSON
"Outputs" : { "BackupLoadBalancerDNSName" : { "Description": "The DNSName of the backup load balancer", "Value" : { "Fn::GetAtt" : [ "BackupLoadBalancer", "DNSName" ]}, "Condition" : "CreateProdResources" }, "InstanceID" : { "Description": "The Instance ID", "Value" : { "Ref" : "EC2Instance" } } }
YAML
Outputs: BackupLoadBalancerDNSName: Description: The DNSName of the backup load balancer Value: !GetAtt BackupLoadBalancer.DNSName Condition: CreateProdResources InstanceID: Description: The Instance ID Value: !Ref EC2Instance
クロススタック出力
次の例では、StackVPC
という名前の出力が VPC の ID を返し、スタック名の先頭に VPCID
が追加された名前でクロススタックリファレンスの値をエクスポートします。
JSON
"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }
YAML
Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"