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à.
Ottieni gli output esportati da uno stack di CloudFormation distribuito
Quando disponi di più stack nella stessa Regione e nello stesso Account AWS, potresti voler condividere informazioni tra di loro. Questo è utile quando uno stack deve utilizzare le risorse create da un altro stack.
Ad esempio, potresti avere uno stack che crea risorse di rete, come sottoreti e gruppi di sicurezza, per i tuoi server web. Gli altri stack che creano i server Web effettivi possono quindi utilizzare le risorse di rete create dal primo stack. Non è necessario effettuare l'hard coding degli ID delle risorse nel modello di stack o passare gli ID come parametri di input.
Per condividere informazioni tra stack, esporta i valori di output da uno stack e importali in un altro stack. Come funziona:
-
Nel modello del primo stack (ad esempio, lo stack di rete), definisci determinati valori da esportare utilizzando il campo
Exportnella sezioneOutputs. Per ulteriori informazioni, consulta Sintassi Outputs del modello CloudFormation. -
Quando crei o aggiorni quello stack, CloudFormation esporta i valori di output, rendendoli disponibili ad altri stack nella stessa Regione e nello stesso Account AWS.
-
Nel modello dell’altro stack, utilizza la funzione Fn::ImportValue per importare i valori esportati dal primo stack.
-
Quando crei o aggiorni il secondo stack (ad esempio, lo stack del server web), CloudFormation recupera automaticamente i valori esportati dal primo stack e li utilizza.
Per una procedura guidata e modelli di esempio, consulta Fare riferimento a output di risorse in un altro stack CloudFormation.
Esportazione dei valori di output di uno stack e utilizzo di stack nidificati
Uno stack nidificato è uno stack creato all’interno di un altro stack utilizzando la risorsa AWS::CloudFormation::Stack. Con gli stack nidificati, puoi distribuire e gestire tutte le risorse da un singolo stack. Puoi utilizzare output da uno stack nel gruppo di stack nidificati come input per un altro stack del gruppo. Ciò è diverso dall'esportazione di valori.
Se desideri isolare la condivisione delle informazioni all'interno di un gruppo di stack nidificati, è consigliabile utilizzare stack nidificati. Per condividere le informazioni con altri stack (non solo nel gruppo di stack nidificati), esporta i valori. Ad esempio, puoi creare un singolo stack con una sottorete ed esportarne l'ID. Altri stack possono utilizzare questa sottorete importandone l’ID. Non è necessario che ogni stack crei una sottorete propria. Finché gli stack importano l'ID della sottorete, non è possibile modificarlo o eliminarlo.
Per ulteriori informazioni sugli stack nidificati, consulta Dividi un modello in pezzi riutilizzabili usando stack nidificati.
Considerazioni
Ai riferimenti tra stack si applicano le seguenti limitazioni:
-
Per ogni Account AWS, i nomi
Exportdevono essere univoci in 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.
Elencazione dei valori di output esportati
Se devi visualizzare i valori di output esportati dagli stack, utilizza uno dei metodi seguenti:
Per elencare i valori di output esportati (console)
-
Apri la console di CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Nella barra di navigazione nella parte superiore della schermata, scegli la tua Regione AWS.
-
Nel riquadro di navigazione a sinistra, scegli Esportazioni.
Per elencare i valori di output esportati (AWS CLI)
Utilizza il seguente comando list-exports. Sostituisci us-east-1 con la tua Regione AWS.
aws cloudformation list-exports --regionus-east-1
Di seguito è riportato un output di esempio.
{
"Exports": [
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-subnet-a",
"Value": "subnet-07b410xmplddcfa03"
},
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-subnet-b",
"Value": "subnet-075ed3xmplebd2fb1"
},
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-vpcid",
"Value": "vpc-011d7xmpl100e9841"
}
]
}
CloudFormation mostra i nomi e i valori degli output esportati per la Regione corrente, nonché lo stack da cui vengono esportati gli output. Per utilizzare un valore di output esportato in un modello di stack, puoi farvi riferimento utilizzando il nome di esportazione e la funzione Fn::ImportValue.
Creazione di elenchi di stack che importano un valore di output esportato
Per eliminare o modificare i valori di output esportati, devi prima scoprire quali stack li stanno importando.
Per visualizzare gli stack che importano un valore di output esportato, utilizza uno dei metodi seguenti:
Per elencare gli stack che importano un valore di output esportato (console)
-
Apri la console di CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Nel riquadro di navigazione a sinistra, scegli Esportazioni.
-
Per vedere quali stack importano un dato valore di esportazione, scegli Export Name (Esporta nome) per quel valore di esportazione. CloudFormation visualizza la pagina dei dettagli di esportazione in cui sono elencati tutti gli stack che importano il valore.
Per elencare gli stack che importano un valore di output esportato (AWS CLI)
Utilizza il comando list-imports. Sostituisci us-east-1 con la tua Regione AWS e con il nome del valore di output esportato.private-vpc-vpcid
aws cloudformation list-imports --regionus-east-1\ --export-nameprivate-vpc-vpcid
CloudFormation restituisce un elenco degli stack che stanno importando il valore.
{
"Imports": [
"my-app-stack"
]
}
Una volta che sai quali stack importano un particolare valore esportato, devi modificare tali stack per rimuovere le funzioni Fn::ImportValue che fanno riferimento ai valori di output. Prima di poter eliminare o modificare i valori di output esportati, è necessario rimuovere tutte le importazioni che fanno riferimento a tali valori.