Questa è la nuova guida AWS CloudFormation di riferimento per i modelli. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida per l'AWS CloudFormation utente.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Fn::ImportValue
La funzione intrinseca Fn::ImportValue restituisce il valore di un output esportato da un altro stack. In genere è possibile utilizzare questa funzione per creare riferimenti tra stack. Per ulteriori informazioni, consultate Procedura dettagliata: fate riferimento agli output di risorse in un altro stack nella Guida per l'utente. CloudFormation AWS CloudFormation
Nei frammenti di modello di esempio seguenti Stack A esporta i valori del gruppo di sicurezza VPC e Stack B li importa.
Nota
Ai riferimenti tra stack si applicano le seguenti limitazioni:
-
Per ognuna di esse Account AWS,
Exporti nomi devono essere univoci all'interno di una regione. -
Non puoi creare riferimenti tra stack tra Regioni. Puoi utilizzare la funzione intrinseca
Fn::ImportValueper importare solo valori che sono stati esportati all'interno della stessa Regione. -
Per gli output, il valore della proprietà
Namedi unExportnon può utilizzare le funzioniRefoGetAttche dipendono da una risorsa.Allo stesso modo, la funzione
ImportValuenon può includere le funzioniRefoGetAttche dipendono da una risorsa. -
Quando un altro stack importa un valore di output, non puoi eliminare lo stack che esporta il valore di output o modificare il valore di output esportato. Tutte le importazioni devono essere eliminate prima di poter eliminare lo stack di esportazione o di modificare il valore di output.
JSON
Esportazione di Stack 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" }} } }
YAML
Esportazione di Stack 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'
JSON
Importazione di Stack 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"}} }] } } }
YAML
Importazione di Stack 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'
Dichiarazione
JSON
{ "Fn::ImportValue" :sharedValueToImport}
YAML
È possibile utilizzare il nome completo della funzione:
Fn::ImportValue:sharedValueToImport
In alternativa, si può utilizzare il formato breve:
!ImportValuesharedValueToImport
Importante
Non è possibile utilizzare il formato breve di !ImportValue se contiene il formato breve di !Sub.
# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'
È necessario utilizzare il nome di funzione completo, ad esempio:
Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"
Parametri
- sharedValueToImporta
-
Il valore di output dello stack che si desidera importare.
Valore restituito
Il valore di output dello stack.
Esempio
JSON
{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }
YAML
Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"
Funzioni supportate
È possibile utilizzare le funzioni seguenti nella funzione Fn::ImportValue. Il valore di queste funzioni non può dipendere da una risorsa.
-
Fn::Base64 -
Fn::FindInMap -
Fn::If -
Fn::Join -
Fn::Select -
Fn::Sub -
Ref