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à.
Esempi di comandi di funzionamento CloudFormation dello stack per AWS CLI e PowerShell
I seguenti esempi da riga di comando mostrano come eseguire CloudFormation azioni individuali con and. AWS CLI PowerShell Questi esempi seguenti includono solo le operazioni più comunemente utilizzate. Per un elenco completo, consulta cloudformation nella AWS CLI Command Reference.
Gli esempi di questa guida utilizzano la convenzione di una barra rovesciata (\) per indicare che una lunga riga di comando continua sulla riga successiva.
Annulla l’aggiornamento di uno stack
Utilizza il comando cancel-update-stack per annullare l’aggiornamento di uno stack. Per ulteriori informazioni, consulta Annulla l’aggiornamento di uno stack.
- CLI
-
- AWS CLI
-
Come annullare un aggiornamento di stack in corso
Il comando cancel-update-stack seguente annulla un aggiornamento di stack nello stack myteststack.
aws cloudformation cancel-update-stack --stack-name myteststack
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: annulla un aggiornamento nello stack specificato.
Stop-CFNUpdateStack -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: annulla un aggiornamento nello stack specificato.
Stop-CFNUpdateStack -StackName "myStack"
Rollback di un aggiornamento
Utilizza il comando continue-update-rollback per continuare il rollback di un aggiornamento. Per ulteriori informazioni, consulta Rollback di un aggiornamento.
- CLI
-
- AWS CLI
-
Come riprovare il rollback dell’aggiornamento
L’esempio continue-update-rollback seguente riprende un’operazione di rollback da un aggiornamento dello stack precedentemente non riuscito.
aws cloudformation continue-update-rollback \
--stack-name my-stack
Questo comando non produce alcun output.
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: continua il rollback dello stack denominato, il cui stato deve essere “UPDATE_ROLLBACK_FAILED”. Se il rollback continuato ha esito positivo, lo stack assumerà lo stato “UPDATE_ROLLBACK_COMPLETE”.
Resume-CFNUpdateRollback -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: continua il rollback dello stack denominato, il cui stato deve essere “UPDATE_ROLLBACK_FAILED”. Se il rollback continuato ha esito positivo, lo stack assumerà lo stato “UPDATE_ROLLBACK_COMPLETE”.
Resume-CFNUpdateRollback -StackName "myStack"
Creare uno stack
Utilizza il comando create-stack per creare uno stack. Devi fornire il nome dello stack, la posizione di un modello valido e i parametri di input. I nomi delle chiavi dei parametri fanno distinzione tra maiuscole e minuscole. Se digiti erroneamente il nome della chiave di un parametro, CloudFormation non crea lo stack e segnala che il modello non contiene quel parametro.
Gli esempi seguenti mostrano come creare un nuovo stack con il nome, il modello e i parametri degli input specificati.
- CLI
-
- AWS CLI
-
Per creare uno stack AWS CloudFormation
Il comando create-stacks seguente crea uno stack denominato myteststack utilizzando il modello sampletemplate.json:
aws cloudformation create-stack --stack-name myteststack --template-body file://sampletemplate.json --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2
Output:
{
"StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
}
Per ulteriori informazioni, consulta Stacks nella Guida per l'AWS CloudFormation utente.
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: crea un nuovo stack con il nome specificato. Il modello viene analizzato a partire dal contenuto fornito con parametri di personalizzazione (“PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel contenuto del modello, mentre “PV1” e “PV2” rappresentano i valori di tali parametri). I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Se la creazione dello stack ha esito negativo, non verrà eseguito il rollback dello stack.
New-CFNStack -StackName "myStack" `
-TemplateBody "{TEMPLATE CONTENT HERE}" `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" }) `
-DisableRollback $true
Esempio 2: crea un nuovo stack con il nome specificato. Il modello viene analizzato a partire dal contenuto fornito con parametri di personalizzazione (“PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel contenuto del modello, mentre “PV1” e “PV2” rappresentano i valori di tali parametri). I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Se la creazione dello stack ha esito negativo, verrà eseguito il rollback dello stack.
$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter
$p1.ParameterKey = "PK1"
$p1.ParameterValue = "PV1"
$p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter
$p2.ParameterKey = "PK2"
$p2.ParameterValue = "PV2"
New-CFNStack -StackName "myStack" `
-TemplateBody "{TEMPLATE CONTENT HERE}" `
-Parameter @( $p1, $p2 ) `
-OnFailure "ROLLBACK"
Esempio 3: crea un nuovo stack con il nome specificato. Il modello è ottenuto dall'URL di Amazon S3 con parametri di personalizzazione («PK1» rappresenta il nome di un parametro dichiarato nel contenuto del modello, «PV1» rappresenta il valore del parametro. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e «». ParameterKey ParameterValue Se la creazione dello stack fallisce, verrà ripristinato (come specificare - DisableRollback $false).
New-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 4: crea un nuovo stack con il nome specificato. Il modello è ottenuto dall'URL di Amazon S3 con parametri di personalizzazione («PK1» rappresenta il nome di un parametro dichiarato nel contenuto del modello, «PV1» rappresenta il valore del parametro. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e «». ParameterKey ParameterValue Se la creazione dello stack fallisce, verrà ripristinato (come specificare - DisableRollback $false). La notifica specificata che i servizi di notifica degli eventi Amazon riceveranno in caso di eventi pubblicati relativi allo stack.
New-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } `
-NotificationARN @( "arn1", "arn2" )
- Strumenti per V5 PowerShell
-
Esempio 1: crea un nuovo stack con il nome specificato. Il modello viene analizzato a partire dal contenuto fornito con parametri di personalizzazione (“PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel contenuto del modello, mentre “PV1” e “PV2” rappresentano i valori di tali parametri). I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Se la creazione dello stack ha esito negativo, non verrà eseguito il rollback dello stack.
New-CFNStack -StackName "myStack" `
-TemplateBody "{TEMPLATE CONTENT HERE}" `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" }) `
-DisableRollback $true
Esempio 2: crea un nuovo stack con il nome specificato. Il modello viene analizzato a partire dal contenuto fornito con parametri di personalizzazione (“PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel contenuto del modello, mentre “PV1” e “PV2” rappresentano i valori di tali parametri). I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Se la creazione dello stack ha esito negativo, verrà eseguito il rollback dello stack.
$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter
$p1.ParameterKey = "PK1"
$p1.ParameterValue = "PV1"
$p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter
$p2.ParameterKey = "PK2"
$p2.ParameterValue = "PV2"
New-CFNStack -StackName "myStack" `
-TemplateBody "{TEMPLATE CONTENT HERE}" `
-Parameter @( $p1, $p2 ) `
-OnFailure "ROLLBACK"
Esempio 3: crea un nuovo stack con il nome specificato. Il modello è ottenuto dall'URL di Amazon S3 con parametri di personalizzazione («PK1» rappresenta il nome di un parametro dichiarato nel contenuto del modello, «PV1» rappresenta il valore del parametro. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e «». ParameterKey ParameterValue Se la creazione dello stack fallisce, verrà ripristinato (come specificare - DisableRollback $false).
New-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 4: crea un nuovo stack con il nome specificato. Il modello è ottenuto dall'URL di Amazon S3 con parametri di personalizzazione («PK1» rappresenta il nome di un parametro dichiarato nel contenuto del modello, «PV1» rappresenta il valore del parametro. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e «». ParameterKey ParameterValue Se la creazione dello stack fallisce, verrà ripristinato (come specificare - DisableRollback $false). La notifica specificata che i servizi di notifica degli eventi Amazon riceveranno in caso di eventi pubblicati relativi allo stack.
New-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } `
-NotificationARN @( "arn1", "arn2" )
Puoi utilizzare l' AWS CLI --template-urlopzione per specificare una posizione del file modello in Amazon S3 o. AWS Systems Manager
Per Amazon S3, l’URL deve iniziare con https://. Gli URL statici dei siti web S3 non sono supportati.
--template-url https://s3.region-code.amazonaws.com/bucket-name/template-name
Per AWS Systems Manager, utilizza il seguente formato:
--template-url "ssm-doc://arn:aws:ssm:region-code:account-id:document/document-name"
modalità Express
Per creare uno stack utilizzando la modalità express, aggiungete il --deployment-config parametro. La modalità Express completa l'operazione dello stack non appena CloudFormation applica la configurazione delle risorse. Per ulteriori informazioni, consulta modalità Express.
aws cloudformation create-stack --stack-name myteststack \
--template-body file://sampletemplate.json \
--deployment-config '{"mode": "EXPRESS"}'
Crea uno stack che includa le trasformazioni
Usa il comando deploy per creare uno stack che includa le trasformazioni. Quando crei uno stack da un modello che include trasformazioni, devi utilizzare un set di modifiche. Il comando deploy combina due passaggi (creazione di un set di modifiche e relativa esecuzione) in un unico comando.
- AWS CLI
-
Il comando deploy seguente crea uno stack con il nome, il modello e i parametri di input specificati.
aws cloudformation deploy --stack-name myteststack \
--template /path_to_template/my-template.json \
--parameter-overrides Key1=Value1 Key2=Value2
Eliminazione di uno stack
Utilizza il comando delete-stack per eliminare uno stack. Per ulteriori informazioni, consulta Eliminazione di uno stack.
- CLI
-
- AWS CLI
-
Come eliminare uno stack
L’esempio delete-stack seguente elimina lo stack specificato.
aws cloudformation delete-stack \
--stack-name my-stack
Questo comando non produce alcun output.
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: elimina lo stack specificato.
Remove-CFNStack -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: elimina lo stack specificato.
Remove-CFNStack -StackName "myStack"
Se l’eliminazione fallisce e restituisce uno stato DELETE_FAILED, puoi scegliere di eliminare lo stack con la forza utilizzando l’opzione --deletion-mode. Questi sono i seguenti valori che possono essere usati con deletion-mode:
- AWS CLI
-
La forza per il comando delete-stack seguente elimina lo stack myteststack utilizzando il valore FORCE_DELETE_STACK con il parametro deletion-mode:
aws cloudformation delete-stack --stack-name myteststack \
--deletion-mode FORCE_DELETE_STACK
Questo comando non produce alcun output.
Dopo l’utilizzo di FORCE_DELETE_STACK, puoi utilizzare il comando list-stack-resources per elencare le risorse che sono state ignorate durante il processo di eliminazione dello stack. Le risorse conservate mostreranno lo stato DELETE_SKIPPED. Per ulteriori informazioni, consulta Elenca le risorse dello stack.
Modalità Express
Per eliminare uno stack utilizzando la modalità express, aggiungi il --deployment-config parametro:
aws cloudformation delete-stack --stack-name myteststack \
--deployment-config '{"mode": "EXPRESS"}'
Per ulteriori informazioni, consulta modalità Express.
Descrivi gli eventi dello stack
Usa il comando describe-stack-events per descrivere gli eventi dello stack. Per ulteriori informazioni, consulta Monitoraggio dell’avanzamento dello stack.
- CLI
-
- AWS CLI
-
Come descrivere gli eventi dello stack
L’esempio describe-stack-events seguente visualizza i 2 eventi più recenti per lo stack specificato.
aws cloudformation describe-stack-events \
--stack-name my-stack \
--max-items 2
{
"StackEvents": [
{
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"EventId": "4e1516d0-e4d6-xmpl-b94f-0a51958a168c",
"StackName": "my-stack",
"LogicalResourceId": "my-stack",
"PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"ResourceType": "AWS::CloudFormation::Stack",
"Timestamp": "2019-10-02T05:34:29.556Z",
"ResourceStatus": "UPDATE_COMPLETE"
},
{
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"EventId": "4dd3c810-e4d6-xmpl-bade-0aaf8b31ab7a",
"StackName": "my-stack",
"LogicalResourceId": "my-stack",
"PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"ResourceType": "AWS::CloudFormation::Stack",
"Timestamp": "2019-10-02T05:34:29.127Z",
"ResourceStatus": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
}
],
"NextToken": "eyJOZXh0VG9XMPLiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ=="
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce tutti gli eventi correlati allo stack per lo stack specificato.
Get-CFNStackEvent -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce tutti gli eventi correlati allo stack per lo stack specificato.
Get-CFNStackEvent -StackName "myStack"
Descrivi una risorsa di stack
- CLI
-
- AWS CLI
-
Come ottenere informazioni su una risorsa dello stack
L’esempio describe-stack-resource seguente visualizza i dettagli della risorsa denominata MyFunction nello stack specificato.
aws cloudformation describe-stack-resource \
--stack-name MyStack \
--logical-resource-id MyFunction
Output:
{
"StackResourceDetail": {
"StackName": "MyStack",
"StackId": "arn:aws:cloudformation:us-east-2:123456789012:stack/MyStack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"LogicalResourceId": "MyFunction",
"PhysicalResourceId": "my-function-SEZV4XMPL4S5",
"ResourceType": "AWS::Lambda::Function",
"LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z",
"ResourceStatus": "UPDATE_COMPLETE",
"Metadata": "{}",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
}
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce la descrizione di una risorsa identificata nel modello associato allo stack specificato dall’ID logico “MyDBInstance”.
Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce la descrizione di una risorsa identificata nel modello associato allo stack specificato dall’ID logico “MyDBInstance”.
Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
Descrivi le risorse di stack
- CLI
-
- AWS CLI
-
Come ottenere informazioni su una risorsa dello stack
L’esempio describe-stack-resources seguente visualizza i dettagli delle risorse nello stack specificato.
aws cloudformation describe-stack-resources \
--stack-name my-stack
Output:
{
"StackResources": [
{
"StackName": "my-stack",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"LogicalResourceId": "bucket",
"PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf",
"ResourceType": "AWS::S3::Bucket",
"Timestamp": "2019-10-02T04:34:11.345Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
},
{
"StackName": "my-stack",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"LogicalResourceId": "function",
"PhysicalResourceId": "my-function-SEZV4XMPL4S5",
"ResourceType": "AWS::Lambda::Function",
"Timestamp": "2019-10-02T05:34:27.989Z",
"ResourceStatus": "UPDATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
},
{
"StackName": "my-stack",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204",
"LogicalResourceId": "functionRole",
"PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E",
"ResourceType": "AWS::IAM::Role",
"Timestamp": "2019-10-02T04:34:06.350Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
}
]
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce le descrizioni AWS delle risorse per un massimo di 100 risorse associate allo stack specificato. Per ottenere i dettagli di tutte le risorse associate a uno stack, usa Get-CFNStackResourceSummary, che supporta anche la paginazione manuale dei risultati.
Get-CFNStackResourceList -StackName "myStack"
Esempio 2: restituisce la descrizione dell’istanza Amazon EC2 identificata nel modello associato allo stack specificato dall’ID logico “Ec2Instance”.
Get-CFNStackResourceList -StackName "myStack" -LogicalResourceId "Ec2Instance"
Esempio 3: restituisce la descrizione di un massimo di 100 risorse associate allo stack contenente un’istanza Amazon EC2 identificata dall’ID di istanza “i-123456”. Per ottenere dettagli su tutte le risorse associate a uno stack, usa il Get-CFNStackResourceSummary, che supporta anche la paginazione manuale dei risultati.
Get-CFNStackResourceList -PhysicalResourceId "i-123456"
Esempio 4: restituisce la descrizione dell’istanza Amazon EC2 identificata dall’ID logico “Ec2Instance” nel modello di uno stack. Lo stack viene identificato utilizzando l’ID di una risorsa fisica in esso contenuta (in questo caso anche un’istanza Amazon EC2 con ID istanza “i-123456”). È inoltre possibile utilizzare una risorsa fisica diversa per identificare lo stack in base al contenuto del modello, ad esempio un bucket Amazon S3.
Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce le descrizioni AWS delle risorse per un massimo di 100 risorse associate allo stack specificato. Per ottenere i dettagli di tutte le risorse associate a uno stack, usa Get-CFNStackResourceSummary, che supporta anche la paginazione manuale dei risultati.
Get-CFNStackResourceList -StackName "myStack"
Esempio 2: restituisce la descrizione dell’istanza Amazon EC2 identificata nel modello associato allo stack specificato dall’ID logico “Ec2Instance”.
Get-CFNStackResourceList -StackName "myStack" -LogicalResourceId "Ec2Instance"
Esempio 3: restituisce la descrizione di un massimo di 100 risorse associate allo stack contenente un’istanza Amazon EC2 identificata dall’ID di istanza “i-123456”. Per ottenere dettagli su tutte le risorse associate a uno stack, usa il Get-CFNStackResourceSummary, che supporta anche la paginazione manuale dei risultati.
Get-CFNStackResourceList -PhysicalResourceId "i-123456"
Esempio 4: restituisce la descrizione dell’istanza Amazon EC2 identificata dall’ID logico “Ec2Instance” nel modello di uno stack. Lo stack viene identificato utilizzando l’ID di una risorsa fisica in esso contenuta (in questo caso anche un’istanza Amazon EC2 con ID istanza “i-123456”). È inoltre possibile utilizzare una risorsa fisica diversa per identificare lo stack in base al contenuto del modello, ad esempio un bucket Amazon S3.
Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"
Descrivi gli stack
- CLI
-
- AWS CLI
-
Per descrivere gli stack AWS CloudFormation
Il comando describe-stacks seguente mostra le informazioni di riepilogo per lo stack myteststack:
aws cloudformation describe-stacks --stack-name myteststack
Output:
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
"Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.",
"Tags": [],
"Outputs": [
{
"Description": "Name of S3 bucket to hold website content",
"OutputKey": "BucketName",
"OutputValue": "myteststack-s3bucket-jssofi1zie2w"
}
],
"StackStatusReason": null,
"CreationTime": "2013-08-23T01:02:15.422Z",
"Capabilities": [],
"StackName": "myteststack",
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false
}
]
}
Per ulteriori informazioni, consulta Stacks nella Guida per l'AWS CloudFormation utente.
- Go
-
- SDK per Go V2
-
import (
"context"
"log"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/cloudformation"
)
// StackOutputs defines a map of outputs from a specific stack.
type StackOutputs map[string]string
type CloudFormationActions struct {
CfnClient *cloudformation.Client
}
// GetOutputs gets the outputs from a CloudFormation stack and puts them into a structured format.
func (actor CloudFormationActions) GetOutputs(ctx context.Context, stackName string) StackOutputs {
output, err := actor.CfnClient.DescribeStacks(ctx, &cloudformation.DescribeStacksInput{
StackName: aws.String(stackName),
})
if err != nil || len(output.Stacks) == 0 {
log.Panicf("Couldn't find a CloudFormation stack named %v. Here's why: %v\n", stackName, err)
}
stackOutputs := StackOutputs{}
for _, out := range output.Stacks[0].Outputs {
stackOutputs[*out.OutputKey] = *out.OutputValue
}
return stackOutputs
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce una raccolta di istanze di stack che descrivono tutti gli stack dell’utente.
Get-CFNStack
Esempio 2: restituisce un’istanza di stack che descrive lo stack specificato
Get-CFNStack -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce una raccolta di istanze di stack che descrivono tutti gli stack dell’utente.
Get-CFNStack
Esempio 2: restituisce un’istanza di stack che descrive lo stack specificato
Get-CFNStack -StackName "myStack"
Per impostazione predefinita, il comando describe-stacks restituisce i valori del parametro. Per evitare che vengano restituiti valori di parametri sensibili come le password, includi una NoEcho proprietà impostata su nei tuoi modelli. TRUE CloudFormation
L’utilizzo dell’attributo NoEcho non maschera le informazioni memorizzate nei seguenti elementi:
-
La sezione dei Metadata modelli. CloudFormation non trasforma, modifica o oscura le informazioni incluse nella Metadata sezione. Per ulteriori informazioni, vedere Metadati.
-
Sezione dei modelli Outputs. Per ulteriori informazioni, consulta Output.
-
Attributo Metadata di una definizione di risorsa. Per ulteriori informazioni, consulta Attributo Metadata.
Si consiglia vivamente di non utilizzare questi meccanismi per includere informazioni sensibili, come password o segreti.
Invece di incorporare informazioni riservate direttamente nei CloudFormation modelli, consigliamo di utilizzare parametri dinamici nel modello di pila per fare riferimento a informazioni sensibili archiviate e gestite all'esterno CloudFormation, ad esempio nel AWS Systems Manager Parameter Store o. AWS Secrets Manager
Per ulteriori informazioni, consulta la best practice Non incorporare le credenziali nei modelli.
Ottieni un modello
- CLI
-
- AWS CLI
-
Per visualizzare il corpo del modello per uno stack AWS CloudFormation
Il comando get-template seguente mostra il modello per lo stack myteststack:
aws cloudformation get-template --stack-name myteststack
Output:
{
"TemplateBody": {
"AWSTemplateFormatVersion": "2010-09-09",
"Outputs": {
"BucketName": {
"Description": "Name of S3 bucket to hold website content",
"Value": {
"Ref": "S3Bucket"
}
}
},
"Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.",
"Resources": {
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": "PublicRead"
}
}
}
}
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce il modello associato allo stack specificato.
Get-CFNTemplate -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce il modello associato allo stack specificato.
Get-CFNTemplate -StackName "myStack"
Elenca le risorse dello stack
- CLI
-
- AWS CLI
-
Come elencare le risorse in uno stack
Il comando seguente visualizza l’elenco delle risorse nello stack specificato.
aws cloudformation list-stack-resources \
--stack-name my-stack
Output:
{
"StackResourceSummaries": [
{
"LogicalResourceId": "bucket",
"PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf",
"ResourceType": "AWS::S3::Bucket",
"LastUpdatedTimestamp": "2019-10-02T04:34:11.345Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
},
{
"LogicalResourceId": "function",
"PhysicalResourceId": "my-function-SEZV4XMPL4S5",
"ResourceType": "AWS::Lambda::Function",
"LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z",
"ResourceStatus": "UPDATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
},
{
"LogicalResourceId": "functionRole",
"PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E",
"ResourceType": "AWS::IAM::Role",
"LastUpdatedTimestamp": "2019-10-02T04:34:06.350Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "IN_SYNC"
}
}
]
}
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce le descrizioni di tutte le risorse associate allo stack specificato.
Get-CFNStackResourceSummary -StackName "myStack"
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce le descrizioni di tutte le risorse associate allo stack specificato.
Get-CFNStackResourceSummary -StackName "myStack"
Elenca gli stack
Utilizza il comando list-stacks per elencare gli stack. Per elencare solo gli stack con i codici di stato specificati, includi l’opzione --stack-status-filter. Puoi specificare uno o più codici di stato dello stack per l’opzione --stack-status-filter. Per ulteriori informazioni, consulta Codici di stato dello stack.
- CLI
-
- AWS CLI
-
Per elencare le pile AWS CloudFormation
Il comando list-stacks seguente mostra un riepilogo di tutti gli stack con stato CREATE_COMPLETE:
aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE
Output:
[
{
"StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
"TemplateDescription": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.",
"StackStatusReason": null,
"CreationTime": "2013-08-26T03:27:10.190Z",
"StackName": "myteststack",
"StackStatus": "CREATE_COMPLETE"
}
]
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: restituisce informazioni di riepilogo per tutti gli stack.
Get-CFNStackSummary
Esempio 2: restituisce informazioni di riepilogo per tutti gli stack attualmente in fase di creazione.
Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"
Esempio 3: restituisce informazioni di riepilogo per tutti gli stack attualmente in fase di creazione o aggiornamento.
Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")
- Strumenti per V5 PowerShell
-
Esempio 1: restituisce informazioni di riepilogo per tutti gli stack.
Get-CFNStackSummary
Esempio 2: restituisce informazioni di riepilogo per tutti gli stack attualmente in fase di creazione.
Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"
Esempio 3: restituisce informazioni di riepilogo per tutti gli stack attualmente in fase di creazione o aggiornamento.
Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")
Aggiornare uno stack
Utilizzare il comando update-stack per aggiornare direttamente uno stack. È possibile specificare lo stack e i valori e le funzionalità dei parametri che si desidera aggiornare; inoltre, se si sceglie di utilizzare un modello aggiornato, è possibile specificare il nome del modello. Per ulteriori informazioni, consulta Aggiornare gli stack direttamente.
- CLI
-
- AWS CLI
-
Per aggiornare gli stack AWS CloudFormation
Il comando update-stack seguente aggiorna il modello e i parametri di input per lo stack mystack:
aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,ParameterValue=SampleKeyPair ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2
Il comando update-stack seguente aggiorna solo il valore del parametro SubnetIDs per lo stack mystack: Se non specifichi un valore di parametro, viene utilizzato il valore predefinito specificato nel modello:
aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2
Il comando update-stack seguente aggiunge due argomenti di notifica per stack allo stack mystack:
aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:use-east-1:123456789012:mytopic1" "arn:aws:sns:us-east-1:123456789012:mytopic2"
Per ulteriori informazioni, consulta gli aggiornamenti AWS CloudFormation dello stack nella Guida per l'AWS CloudFormation utente.
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” rappresenta il nome di un parametro dichiarato nel modello e “PV1” ne rappresenta il valore. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateBody "{Template Content Here}" `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 2: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateBody "{Template Content Here}" `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
Esempio 3: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” rappresenta il nome di un parametro dichiarato nel modello e “PV2” ne rappresenta il valore. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 4: aggiorna lo stack “myStack” con il modello (recuperato da Amazon S3) e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
Esempio 5: aggiorna lo stack “myStack”, che in questo esempio si presume contenga risorse IAM, con il modello (recuperato da Amazon S3) e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Gli stack contenenti risorse IAM richiedono di specificare il parametro -Capabilities «CAPABILITY_IAM», altrimenti l'aggiornamento avrà esito negativo con un errore ''. InsufficientCapabilities
Update-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) `
-Capabilities "CAPABILITY_IAM"
- Strumenti per V5 PowerShell
-
Esempio 1: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” rappresenta il nome di un parametro dichiarato nel modello e “PV1” ne rappresenta il valore. I parametri di personalizzazione possono anche essere specificati utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateBody "{Template Content Here}" `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 2: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateBody "{Template Content Here}" `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
Esempio 3: aggiorna lo stack “myStack” con il modello e i parametri di personalizzazione specificati. “PK1” rappresenta il nome di un parametro dichiarato nel modello e “PV2” ne rappresenta il valore. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }
Esempio 4: aggiorna lo stack “myStack” con il modello (recuperato da Amazon S3) e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue
Update-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
Esempio 5: aggiorna lo stack “myStack”, che in questo esempio si presume contenga risorse IAM, con il modello (recuperato da Amazon S3) e i parametri di personalizzazione specificati. “PK1” e “PK2” rappresentano i nomi dei parametri dichiarati nel modello, mentre “PV1” e “PV2” ne rappresentano i valori richiesti. I parametri di personalizzazione possono essere specificati anche utilizzando «Key» e «Value» anziché «» e ParameterKey «». ParameterValue Gli stack contenenti risorse IAM richiedono di specificare il parametro -Capabilities «CAPABILITY_IAM», altrimenti l'aggiornamento avrà esito negativo con un errore ''. InsufficientCapabilities
Update-CFNStack -StackName "myStack" `
-TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) `
-Capabilities "CAPABILITY_IAM"
Per rimuovere tutte le notifiche, specifica [] per l’opzione --notification-arns.
Modalità Express
Per aggiornare uno stack utilizzando la modalità express, aggiungi il --deployment-config parametro:
aws cloudformation update-stack --stack-name myteststack \
--template-body file://sampletemplate.json \
--deployment-config '{"mode": "EXPRESS"}'
Per ulteriori informazioni, consulta modalità Express.
Convalida il modello
Per verificare la presenza di errori di sintassi nel file del modello, utilizza il comando validate-template.
Durante la convalida, controlla CloudFormation innanzitutto se il modello è JSON valido. Se non lo è, CloudFormation verifica se il modello è in un formato YAML valido. Se entrambi i controlli falliscono, CloudFormation restituisce un errore di convalida del modello.
- CLI
-
- AWS CLI
-
Per convalidare un modello AWS CloudFormation
Il comando validate-template seguente convalida il modello sampletemplate.json.
aws cloudformation validate-template --template-body file://sampletemplate.json
Output:
{
"Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.",
"Parameters": [],
"Capabilities": []
}
Per ulteriori informazioni, consulta Lavorare con i AWS CloudFormation modelli nella Guida per l'AWS CloudFormation utente.
- PowerShell
-
- Strumenti per PowerShell V4
-
Esempio 1: convalida il contenuto del modello specificato. L’output riporta in dettaglio le funzionalità, la descrizione e i parametri del modello.
Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"
Esempio 2: convalida il modello specificato a cui si accede tramite un URL Amazon S3. L’output riporta in dettaglio le funzionalità, la descrizione e i parametri del modello.
Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template
- Strumenti per V5 PowerShell
-
Esempio 1: convalida il contenuto del modello specificato. L’output riporta in dettaglio le funzionalità, la descrizione e i parametri del modello.
Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"
Esempio 2: convalida il modello specificato a cui si accede tramite un URL Amazon S3. L’output riporta in dettaglio le funzionalità, la descrizione e i parametri del modello.
Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template
Di seguito è riportata una risposta di esempio che produce un errore di convalida.
{
"ResponseMetadata": {
"RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd"
},
"Errors": [
{
"Message": "Template format error: JSON not well-formed. (line 11, column 8)",
"Code": "ValidationError",
"Type": "Sender"
}
],
"Capabilities": [],
"Parameters": []
}
A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)
Il comando validate-template è progettato per controllare solo la sintassi del modello. Non garantisce che i valori delle proprietà specificati per una risorsa siano validi per tale risorsa. Né determina il numero di risorse presenti quando verrà creato lo stack.
Per verificare la validità operativa, devi tentare di creare lo stack. Non esiste una sandbox o un'area di test per gli CloudFormation stack, quindi ti verranno addebitate le risorse create durante i test.
Non riesci a trovare quello che ti serve? Richiedi un nuovo esempio utilizzando il link Fornisci un feedback nella parte inferiore di questa pagina.