出力 - AWS CloudFormation

出力

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

重要

CloudFormation は、[Outputs] (出力) セクションに含める情報の編集または難読化を行いません。このセクションを使用して、パスワードやシークレットなどの機密情報を出力しないことを強くお勧めします。

出力値は、スタックオペレーションの完了後に使用できます。スタックのステータスが IN_PROGRESS ステータスのいずれかの場合は、スタックの出力値を使用できません。出力値が常に利用できない場合があるため、サービスランタイムとスタック出力値の間の依存関係を確立することはお勧めしません。

Syntax

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–zA–Z0–9) とし、テンプレート内で一意である必要があります。

Description (オプション)

出力値について説明する String 型。説明の宣言の値は、長さ 0~1024 バイトのリテラル文字列である必要があります。説明の指定には、パラメータまたは機能を使用できません。

Value (必須)

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

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

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

注記

クロススタック参照には以下の制限があります。

  • AWS アカウント ごとに、Export 名がリージョン内で一意である必要があります。

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

  • 出力の場合、ExportName プロパティの値は、リソースに依存する 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"