AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

Fn::ImportValue

Fn::ImportValue 組み込み関数は、別のスタックによってエクスポートされた出力の値を返します。この関数は通常、クロススタック参照を作成するために使用されます。次のサンプルテンプレートスニペットでは、スタック A は VPC セキュリティグループ値をエクスポートし、スタック B はそれをインポートします。

注記

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

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

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

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

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

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

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

スタック A エクスポート

"Outputs" : { "PublicSubnet" : { "Description" : "The subnet ID to use for public web servers", "Value" : { "Ref" : "PublicSubnet" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SubnetID" }} }, "WebServerSecurityGroup" : { "Description" : "The security group ID to use for public web servers", "Value" : { "Fn::GetAtt" : ["WebServerSecurityGroup", "GroupId"] }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SecurityGroupID" }} } }

スタック B のインポート

"Resources" : { "WebServerInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : "t2.micro", "ImageId" : "ami-a1b23456", "NetworkInterfaces" : [{ "GroupSet" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SecurityGroupID"}}], "AssociatePublicIpAddress" : "true", "DeviceIndex" : "0", "DeleteOnTermination" : "true", "SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SubnetID"}} }] } } }

宣言

JSON

{ "Fn::ImportValue" : sharedValueToImport }

YAML

完全な関数名を使用できます。

Fn::ImportValue: sharedValueToImport

または、短縮形も使用できます。

!ImportValue sharedValueToImport

重要

!ImportValue が含まれている場合、!Sub の短縮形を使用することはできません。次の例は、AWS CloudFormation に対して有効ですが、YAML に対して有効ではありません

!ImportValue !Sub "${NetworkStack}-SubnetID"

代わりに、完全な関数名を使用する必要があります。次に例を示します。

Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"

パラメータ

sharedValueToImport

インポートするスタックの出力値。

戻り値

スタックの出力値。

JSON

{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }

YAML

Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"

サポートされている関数

Fn::ImportValue 関数で以下の関数を使用できます。これらの関数の値はリソースに依存することはできません。

  • Fn::Base64

  • Fn::FindInMap

  • Fn::If

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

  • Ref