メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

出力

オプションの Outputs セクションは 他のスタックにインポートする (クロススタック参照を作成)、応答として返す (スタック呼び出しについて記述)、または、AWS CloudFormation コンソールで表示する出力値を宣言します。たとえば、見つけやすいバケットを作成するスタックの S3 バケット名を出力できます。

構文

Outputs セクションは、キー名 Outputs とそれに続くスペースおよび単一のコロンで構成されます。1 つのテンプレートで宣言できる出力は最大 60 個です。

次の例は、Outputs セクションの構造を示します。

JSON

出力の宣言全体を中括弧で囲みます。複数の出力をカンマで区切ります。

Copy
"Outputs" : { "Logical ID" : { "Description" : "Information about the value", "Value" : "Value to return", "Export" : { "Name" : "Value to export" } } }

YAML

Copy
Outputs: Logical ID: Description: Information about the value Value: Value to return Export: Name: Value to export

出力フィールド

Outputs セクションでは、次のフィールドを含めることができます。

論理 ID

現在の出力の識別子。論理 ID は英数字 (a-zA-Z0-9) とし、テンプレート内で一意である必要があります。

Description (オプション)

出力値について説明する String 型。説明には長さ最大 4K の文字列が使用できます。

Value (必須)

aws cloudformation describe-stacks コマンドから返されるプロパティの値。出力の値には、リテラル、パラメーター参照、疑似パラメーター、マッピング値、および組み込み関数を含めることができます。

エクスポート (オプション)

クロススタック参照にエクスポートされるリソース出力の名前。

注記

次の制限はクロス スタックの参照に適用されます:

  • 各 AWS アカウントの場合Export、名前はリージョン内で一意である必要があります。

  • リージョンにわたるクロス スタックの参照を作成することはできません。同じリージョンFn::ImportValue内では、エクスポートされた値のみインポートするのに組み込み関数を使用できます。

  • 出力では、Name プロパティ (Export に属す) の値で、リソースに依存する Ref または GetAtt 関数を使うことはできません。

    同様に、ImportValue 関数に、リソースに依存する Ref または GetAtt 関数を含むことはできません。

  • 他のスタックから参照されている出力が存在する場合は、スタックを削除することはできません。

  • 別のスタックで参照した出力値を変更したり削除することはできません。

組み込み関数を使用して、エクスポートの Name の値をカスタマイズできます。次の例では、Fn::Join 関数を使用します。

JSON

Copy
"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }

YAML

Copy
Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]

出力と条件を関連付けるには、テンプレートの Conditions セクションで条件を定義します。

以下の例では、スタック出力のしくみを示しています。

スタック出力

次の例では、BackupLoadBalancerDNSName という名前の出力によって、論理 ID が BackupLoadBalancer であるリソースの DNS 名が CreateProdResources 条件が true の場合に返されます。(2 番目の出力は、複数の出力を指定する方法を示しています。)

JSON

Copy
"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

Copy
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

Copy
"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }

YAML

Copy
Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"

このページの内容: