AWS CloudFormation StackSets - AWS CodePipeline

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à.

AWS CloudFormation StackSets

CodePipeline offre la possibilità di eseguire AWS CloudFormation StackSets operazioni come parte del processo CI/CD. È possibile utilizzare un set di stack per creare pile in AWS account di diverse AWS regioni utilizzando un unico modello. AWS CloudFormation Tutte le risorse incluse in ogni stack sono definite dal modello del set di stack. AWS CloudFormation Quando create il set di stack, specificate il modello da utilizzare, nonché tutti i parametri e le funzionalità richiesti dal modello.

Per ulteriori informazioni sui concetti di AWS CloudFormation StackSets, consulta StackSets i concetti nella Guida per l'AWS CloudFormation utente.

Puoi integrare la tua pipeline AWS CloudFormation StackSets attraverso due tipi di azioni distinti che usi insieme:

  • L'CloudFormationStackSetazione crea o aggiorna un set di stack o istanze di stack dal modello memorizzato nella posizione di origine della pipeline. Ogni volta che uno stack set viene creato o aggiornato, avvia una distribuzione di tali modifiche su istanze specifiche. Nella console, puoi scegliere il provider di azioni CloudFormation Stack Set quando crei o modifichi la tua pipeline.

  • L'CloudFormationStackInstancesazione distribuisce le modifiche dall'CloudFormationStackSetazione alle istanze specificate, crea nuove istanze dello stack e definisce le sostituzioni dei parametri alle istanze specificate. Nella console, puoi scegliere il provider di azioni CloudFormation Stack Instances quando modifichi una pipeline esistente.

Puoi utilizzare queste azioni per eseguire la distribuzione AWS sugli account di destinazione o sugli ID delle unità organizzative AWS Organizations di destinazione.

Nota

Per distribuire gli account o gli ID AWS delle unità organizzative di destinazione e utilizzare il modello di autorizzazioni gestite dal servizio, è necessario abilitare l'accesso affidabile tra e Organizzazioni. AWS CloudFormation StackSets AWS Per ulteriori informazioni, consulta Enabling trusted access with Stacksets. AWS CloudFormation

Come funzionano le AWS CloudFormation StackSets azioni

Un'CloudFormationStackSetazione crea o aggiorna risorse a seconda che l'azione venga eseguita per la prima volta.

L'CloudFormationStackSetazione crea o aggiorna il set di stack e distribuisce tali modifiche in istanze specifiche.

Nota

Se si utilizza questa azione per effettuare un aggiornamento che include l'aggiunta di istanze dello stack, le nuove istanze vengono distribuite per prime e l'aggiornamento viene completato per ultime. Le nuove istanze ricevono prima la versione precedente, quindi l'aggiornamento viene applicato a tutte le istanze.

  • Crea: quando non viene specificata alcuna istanza e lo stack set non esiste, l'CloudFormationStackSetazione crea il set di stack senza creare alcuna istanza.

  • Aggiornamento: quando l'CloudFormationStackSetazione viene eseguita per un set di stack già creato, l'azione aggiorna il set di stack. Se non viene specificata alcuna istanza e lo stack set esiste già, tutte le istanze vengono aggiornate. Se questa azione viene utilizzata per aggiornare istanze specifiche, tutte le istanze rimanenti passano allo stato OBSOLETO.

    È possibile utilizzare l'CloudFormationStackSetazione per aggiornare lo stack set nei seguenti modi.

    • Aggiorna il modello su alcune o tutte le istanze.

    • Aggiorna i parametri su alcune o tutte le istanze.

    • Aggiorna il ruolo di esecuzione per lo stack set (deve corrispondere al ruolo di esecuzione specificato nel ruolo Amministratore).

    • Modifica il modello di autorizzazioni (solo se non sono state create istanze).

    • Abilita/disabilita AutoDeployment se il modello di permessi del set di stack è. Service Managed

    • Agisci come amministratore delegato in un account membro se il modello di autorizzazioni dello stack set lo è. Service Managed

    • Aggiorna il ruolo di amministratore.

    • Aggiorna la descrizione sullo stack set.

    • Aggiungi obiettivi di distribuzione all'aggiornamento del set di stack per creare nuove istanze dello stack.

L'CloudFormationStackInstancesazione crea nuove istanze dello stack o aggiorna le istanze dello stack obsolete. Un'istanza diventa obsoleta quando un set di stack viene aggiornato, ma non tutte le istanze al suo interno vengono aggiornate.

  • Crea: se lo stack esiste già, l'CloudFormationStackInstancesazione aggiorna solo le istanze e non crea istanze dello stack.

  • Aggiornamento: dopo l'esecuzione dell'CloudFormationStackSetazione, se il modello o i parametri sono stati aggiornati solo in alcuni casi, il resto verrà contrassegnato. OUTDATED Nelle fasi successive della pipeline, CloudFormationStackInstances aggiorna il resto delle istanze dello stack in ondate in modo che tutte le istanze siano contrassegnate. CURRENT Questa azione può essere utilizzata anche per aggiungere istanze aggiuntive o sostituire parametri su istanze nuove o esistenti.

Come parte di un aggiornamento, le CloudFormationStackInstances azioni CloudFormationStackSet and possono specificare nuovi obiettivi di distribuzione, che creano nuove istanze stack.

Come parte di un aggiornamento, le CloudFormationStackInstances azioni CloudFormationStackSet and non eliminano set di stack, istanze o risorse. Quando l'azione aggiorna uno stack ma non specifica tutte le istanze da aggiornare, le istanze che non erano state specificate per l'aggiornamento vengono rimosse dall'aggiornamento e impostate su uno stato di. OUTDATED

Durante una distribuzione, le istanze dello stack possono anche mostrare lo stato OUTDATED se la distribuzione sulle istanze non è riuscita.

Come strutturare le StackSets azioni in una pipeline

Come best practice, è consigliabile costruire la pipeline in modo che lo stack set venga creato e inizialmente distribuito su un sottoinsieme o su una singola istanza. Dopo aver testato la distribuzione e visualizzato lo stack set generato, aggiungete l'CloudFormationStackInstancesazione in modo che le istanze rimanenti vengano create e aggiornate.

Utilizza la console o la CLI per creare la struttura di pipeline consigliata come segue:

  1. Crea una pipeline con un'azione di origine (obbligatoria) e l'CloudFormationStackSetazione come azione di distribuzione. Esegui la tua pipeline.

  2. Quando la pipeline viene eseguita per la prima volta, l'CloudFormationStackSetazione crea il set di stack e almeno un'istanza iniziale. Verifica la creazione del set di stack ed esamina la distribuzione sull'istanza iniziale. Ad esempio, per la creazione iniziale dello stack set per l'account Account-A dove si us-east-1 trova la regione specificata, l'istanza dello stack viene creata con lo stack set:

    Istanza Stack Regione Stato
    StackInstanceID-1 us-east-1 CURRENT
  3. Modifica la pipeline da aggiungere CloudFormationStackInstances come seconda azione di distribuzione per creare/aggiornare le istanze dello stack per gli obiettivi designati. Ad esempio, per la creazione di istanze stack per un account Account-A in cui sono specificate le eu-central-1 regioni us-east-2 e, vengono create le istanze dello stack rimanenti e l'istanza iniziale rimane aggiornata come segue:

    Istanza Stack Regione Stato
    StackInstanceID-1 us-east-1 CURRENT
    StackInstanceID-2 us-east-2 CURRENT
    StackInstanceID-3 eu-central-1 CURRENT
  4. Esegui la pipeline secondo necessità per aggiornare il set di stack e aggiornare o creare istanze dello stack.

Quando si avvia un aggiornamento dello stack in cui sono stati rimossi gli obiettivi di distribuzione dalla configurazione dell'azione, le istanze dello stack che non erano destinate all'aggiornamento vengono rimosse dalla distribuzione e passano allo stato OBSOLETO. Ad esempio, per l'aggiornamento dell'istanza dello stack per l'account Account-A in cui la us-east-2 regione viene rimossa dalla configurazione dell'azione, vengono create le istanze dello stack rimanenti e l'istanza rimossa viene impostata su OBSOLETA come segue:

Istanza Stack Regione Stato
StackInstanceID-1 us-east-1 CURRENT
StackInstanceID-2 us-east-2 ANTIQUATO
StackInstanceID-3 eu-central-1 CURRENT

Per ulteriori informazioni sulle migliori pratiche per la distribuzione dei set di stack, consulta la sezione Best practice StackSets nella Guida per l'AWS CloudFormation utente.

L'operazione CloudFormationStackSet

Questa azione crea o aggiorna uno stack set a partire dal modello memorizzato nella posizione di origine della pipeline.

Dopo aver definito un set di stack, è possibile creare, aggiornare o eliminare gli stack negli account e nelle regioni di destinazione specificati nei parametri di configurazione. Durante la creazione, l'aggiornamento e l'eliminazione degli stack, è possibile specificare altre preferenze, come l'ordine delle regioni per le operazioni da eseguire, la percentuale di tolleranza agli errori oltre la quale le operazioni dello stack si interrompono e il numero di account in cui le operazioni vengono eseguite contemporaneamente sugli stack.

Un set di stack è una risorsa di livello regionale. Se si crea uno stack impostato in una AWS regione, non è possibile accedervi da altre regioni.

Quando questa azione viene utilizzata come azione di aggiornamento dello stack set, gli aggiornamenti allo stack non sono consentiti senza una distribuzione su almeno un'istanza dello stack.

Tipo di operazione

  • Categoria: Deploy

  • Proprietario: AWS

  • Provider: CloudFormationStackSet

  • Versione: 1

Parametri di configurazione

StackSetName

Campo obbligatorio: sì

Il nome da associare al set di stack. Questo nome deve essere univoco nella regione in cui viene creato.

Il nome può contenere solo caratteri alfanumerici e trattini. Deve iniziare con un carattere alfabetico e contenere al massimo 128 caratteri.

Descrizione

Campo obbligatorio: no

Una descrizione del set di stack. Puoi usarlo per descrivere lo scopo del set di stack o altre informazioni pertinenti.

TemplatePath

Campo obbligatorio: sì

La posizione del modello che definisce le risorse nello stack set. Deve puntare a un modello con una dimensione massima di 460.800 byte.

Immettete il percorso del nome dell'artefatto di origine e del file modello nel formato"InputArtifactName::TemplateFileName", come illustrato nell'esempio seguente.

SourceArtifact::template.txt
Parametri

Campo obbligatorio: no

Un elenco di parametri del modello per il set di stack da aggiornare durante una distribuzione.

Puoi fornire i parametri come elenco letterale o percorso di file:

  • È possibile inserire i parametri nel seguente formato di sintassi abbreviata:. ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string Per ulteriori informazioni su questi tipi di dati, vedere. Tipi di dati dei parametri del modello

    L'esempio seguente mostra un parametro denominato BucketName con il valore my-bucket.

    ParameterKey=BucketName,ParameterValue=my-bucket

    L'esempio seguente mostra una voce con più parametri:

    ParameterKey=BucketName,ParameterValue=my-bucket ParameterKey=Asset1,ParameterValue=true ParameterKey=Asset2,ParameterValue=true
  • È possibile immettere la posizione del file contenente un elenco di sostituzioni dei parametri del modello immesse nel formato"InputArtifactName::ParametersFileName", come illustrato nell'esempio seguente.

    SourceArtifact::parameters.txt

    L'esempio seguente mostra il contenuto del file per. parameters.txt

    [ { "ParameterKey": "KeyName", "ParameterValue": "true" }, { "ParameterKey": "KeyName", "ParameterValue": "true" } ]
Funzionalità

Campo obbligatorio: no

Indica che il modello può creare e aggiornare risorse, a seconda dei tipi di risorse presenti nel modello.

È necessario utilizzare questa proprietà se nel modello di stack sono presenti risorse IAM o se si crea uno stack direttamente da un modello contenente macro. AWS CloudFormation Affinché l'azione funzioni correttamente in questo modo, è necessario utilizzare una delle seguenti funzionalità:

  • CAPABILITY_IAM

  • CAPABILITY_NAMED_IAM

È possibile specificare più di una funzionalità utilizzando una virgola e senza spazi tra le funzionalità. L'esempio in Esempio di configurazione CloudFormationStackSetdell'azione mostra una voce con funzionalità multiple.

PermissionModel

Campo obbligatorio: no

Determina come vengono creati e gestiti i ruoli IAM. Se il campo non è specificato, viene utilizzato il valore predefinito. Per informazioni, consulta Modelli di autorizzazioni per le operazioni relative agli stack set.

I valori validi sono:

  • SELF_MANAGED(impostazione predefinita): è necessario creare ruoli di amministratore ed esecuzione da distribuire agli account di destinazione.

  • SERVICE_MANAGED: crea AWS CloudFormation StackSets automaticamente i ruoli IAM necessari per la distribuzione negli account gestiti da AWS Organizations. Ciò richiede che un account sia membro di un'organizzazione.

Nota

Questo parametro può essere modificato solo quando non esistono istanze di stack nello stack set.

AdministrationRoleArn
Nota

Poiché AWS CloudFormation StackSets esegue operazioni su più account, è necessario definire le autorizzazioni necessarie in tali account prima di poter creare lo stack set.

Campo obbligatorio: no

Nota

Questo parametro è facoltativo per il modello di autorizzazioni SELF_MANAGED e non viene utilizzato per il modello di autorizzazioni SERVICE_MANAGED.

L'ARN del ruolo IAM nell'account amministratore utilizzato per eseguire operazioni di stack set.

Il nome può contenere caratteri alfanumerici, uno dei seguenti caratteri: _+=, .@- e senza spazi. Il nome non fa distinzione tra maiuscole e minuscole. Questo nome di ruolo deve avere una lunghezza minima di 20 caratteri e una lunghezza massima di 2048 caratteri. I nomi dei ruoli devono essere univoci all'interno dell'account. Il nome del ruolo specificato qui deve essere un nome di ruolo esistente. Se non si specifica il nome del ruolo, viene impostato su AWSCloudFormationStackSetAdministrationRole. Se si specifica ServiceManaged, non è necessario definire un nome di ruolo.

ExecutionRoleName
Nota

Poiché AWS CloudFormation StackSets esegue operazioni su più account, è necessario definire le autorizzazioni necessarie in tali account prima di poter creare lo stack set.

Campo obbligatorio: no

Nota

Questo parametro è facoltativo per il modello di autorizzazioni SELF_MANAGED e non viene utilizzato per il modello di autorizzazioni SERVICE_MANAGED.

Il nome del ruolo IAM negli account di destinazione utilizzati per eseguire le operazioni di stack set. Il nome può contenere caratteri alfanumerici, uno dei seguenti caratteri: _+=, .@- e senza spazi. Il nome non fa distinzione tra maiuscole e minuscole. Questo nome di ruolo deve avere una lunghezza minima di 1 carattere e una lunghezza massima di 64 caratteri. I nomi dei ruoli devono essere univoci all'interno dell'account. Il nome del ruolo specificato qui deve essere un nome di ruolo esistente. Non specificare questo ruolo se si utilizzano ruoli di esecuzione personalizzati. Se non si specifica il nome del ruolo, viene impostato suAWSCloudFormationStackSetExecutionRole. Se si imposta Service_Managed su true, non è necessario definire un nome di ruolo.

OrganizationsAutoDeployment

Campo obbligatorio: no

Nota

Questo parametro è facoltativo per il modello di autorizzazioni SERVICE_MANAGED e non viene utilizzato per il modello di autorizzazioni SELF_MANAGED.

Descrive se AWS CloudFormation StackSets viene distribuito automaticamente agli account AWS Organizations aggiunti a un'organizzazione o a un'unità organizzativa (OU) di destinazione. Se OrganizationsAutoDeployment è specificato, non specificare DeploymentTargets eRegions.

Nota

Se non viene fornito alcun inputOrganizationsAutoDeployment, il valore predefinito èDisabled.

I valori validi sono:

  • Enabled. Obbligatorio: No.

    StackSets distribuisce automaticamente istanze stack aggiuntive agli account AWS Organizations che vengono aggiunti a un'organizzazione o unità organizzativa (OU) di destinazione nelle regioni specificate. Se un account viene rimosso da un'organizzazione o unità organizzativa di destinazione, AWS CloudFormation StackSets elimina le istanze dello stack dall'account nelle regioni specificate.

  • Disabled. Obbligatorio: No.

    StackSets non distribuisce automaticamente istanze stack aggiuntive agli account AWS Organizations che vengono aggiunti a un'organizzazione o unità organizzativa (OU) di destinazione nelle regioni specificate.

  • EnabledWithStackRetention. Obbligatorio: No.

    Le risorse dello stack vengono conservate quando un account viene rimosso da un'organizzazione o unità organizzativa di destinazione.

DeploymentTargets

Campo obbligatorio: no

Nota

Per il modello di autorizzazioni SERVICE_MANAGED, è possibile fornire l'ID radice dell'organizzazione o gli ID delle unità organizzative per gli obiettivi di distribuzione. Per il modello di autorizzazioni SELF_MANAGED, puoi fornire solo account.

Nota

Quando questo parametro è selezionato, è necessario selezionare anche Regioni.

Un elenco di AWS account o ID di unità organizzative in cui è necessario creare/aggiornare le istanze dello stack set.

  • Account:

    È possibile fornire gli account come elenco letterale o percorso di file:

    • Letterale: immettete i parametri nel formato sintattico abbreviatoaccount_ID,account_ID, come illustrato nell'esempio seguente.

      111111222222,333333444444
    • Percorso del file: la posizione del file contenente un elenco di AWS account in cui le istanze dello stack set devono essere create/aggiornate, inserita nel formato. InputArtifactName::AccountsFileName Se si utilizza il percorso del file per specificare gli account oppure OrganizationalUnitIds, il formato del file deve essere in JSON, come illustrato nell'esempio seguente.

      SourceArtifact::accounts.txt

      L'esempio seguente mostra il contenuto del file peraccounts.txt.

      [ "111111222222" ]

      L'esempio seguente mostra il contenuto del file per accounts.txt quando si elencano più di un account:

      [ "111111222222","333333444444" ]
  • OrganizationalUnitIds:

    Nota

    Questo parametro è facoltativo per il modello di autorizzazioni SERVICE_MANAGED e non viene utilizzato per il modello di autorizzazioni SELF_MANAGED. Non utilizzarlo se si seleziona. OrganizationsAutoDeployment

    Le unità AWS organizzative in cui aggiornare le istanze dello stack associate.

    Puoi fornire gli ID delle unità organizzative come elenco letterale o percorso di file:

    • Letterale: inserisci una matrice di stringhe separate da virgole, come illustrato nell'esempio seguente.

      ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    • Percorso del file: la posizione del file contenente un elenco OrganizationalUnitIds in cui creare o aggiornare le istanze dello stack set. Se si utilizza il percorso del file per specificare gli account oppure OrganizationalUnitIds, il formato del file deve essere in JSON, come illustrato nell'esempio seguente.

      Immettete il percorso del file nel formatoInputArtifactName::OrganizationalUnitIdsFileName.

      SourceArtifact::OU-IDs.txt

      L'esempio seguente mostra il contenuto del file perOU-IDs.txt:

      [ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
Regioni

Campo obbligatorio: no

Nota

Quando questo parametro è selezionato, è necessario selezionare anche DeploymentTargets.

Un elenco di AWS regioni in cui vengono create o aggiornate le istanze dello stack set. Le regioni vengono aggiornate nell'ordine in cui vengono inserite.

Immettete un elenco di AWS regioni valide nel formatoRegion1,Region2, come illustrato nell'esempio seguente.

us-west-2,us-east-1
FailureTolerancePercentage

Campo obbligatorio: no

La percentuale di account per regione per i quali questa operazione di stack può fallire prima che l' AWS CloudFormation operazione venga interrotta in quella regione. Se l'operazione viene interrotta in una regione, AWS CloudFormation non tenta l'operazione nelle regioni successive. Quando si calcola il numero di conti in base alla percentuale specificata, viene AWS CloudFormation arrotondato per difetto al numero intero successivo.

MaxConcurrentPercentage

Campo obbligatorio: no

La percentuale massima di account in cui eseguire questa operazione simultaneamente. Quando si calcola il numero di conti in base alla percentuale specificata, AWS CloudFormation arrotonda per difetto al numero intero successivo. Se l'arrotondamento per difetto dà come risultato zero, AWS CloudFormation imposta invece il numero a uno. Sebbene si utilizzi questa impostazione per specificare il valore massimo, per le distribuzioni di grandi dimensioni il numero effettivo di account su cui si agisce contemporaneamente potrebbe essere inferiore a causa della limitazione del servizio.

RegionConcurrencyType

Campo obbligatorio: no

È possibile specificare se lo stack set deve essere distribuito in Regioni AWS sequenza o in parallelo configurando il parametro Region concurrency deployment. Quando viene specificata la concorrenza Region per distribuire stack su più stack in Regioni AWS parallelo, ciò può comportare tempi di implementazione complessivi più rapidi.

  • Parallelo: le implementazioni di set di stack verranno eseguite contemporaneamente, a condizione che gli errori di distribuzione in una regione non superino una tolleranza di errore specificata.

  • Sequenziale: le implementazioni di set di stack verranno eseguite una alla volta, a condizione che gli errori di distribuzione in una regione non superino una tolleranza di errore specificata. La distribuzione sequenziale è la selezione predefinita.

ConcurrencyMode

Campo obbligatorio: no

La modalità di concorrenza consente di scegliere il comportamento del livello di concorrenza durante le operazioni di stack set, con una tolleranza agli errori rigorosa o morbida. La tolleranza rigorosa ai guasti riduce la velocità di implementazione quando si verificano errori nelle operazioni del set di stack, poiché la simultaneità diminuisce per ogni errore. Soft Failure Tolerance dà priorità alla velocità di implementazione sfruttando al contempo le funzionalità di sicurezza. AWS CloudFormation

  • STRICT_FAILURE_TOLERANCE: Questa opzione riduce dinamicamente il livello di concorrenza per garantire che il numero di account falliti non superi mai una particolare tolleranza di errore. Questo è il comportamento che segue di default.

  • SOFT_FAILURE_TOLERANCE: questa opzione disaccoppia la tolleranza agli errori dalla concorrenza effettiva. Ciò consente alle operazioni di stack set di essere eseguite a un livello di concorrenza prestabilito, indipendentemente dal numero di errori.

CallAs

Campo obbligatorio: no

Nota

Questo parametro è facoltativo per il modello di SERVICE_MANAGED autorizzazioni e non viene utilizzato per il modello di autorizzazioni. SELF_MANAGED

Speciifica se si agisce nell'account di gestione dell'organizzazione o come amministratore delegato in un account membro.

Nota

Se questo parametro è impostato suDELEGATED_ADMIN, assicurati che il ruolo IAM della pipeline disponga dell'autorizzazione. organizations:ListDelegatedAdministrators In caso contrario, l'azione avrà esito negativo durante l'esecuzione con un errore simile al seguente:Account used is not a delegated administrator.

  • SELF: La distribuzione di Stack Set utilizzerà le autorizzazioni gestite dal servizio una volta effettuato l'accesso all'account di gestione.

  • DELEGATED_ADMIN: la distribuzione di Stack Set utilizzerà le autorizzazioni gestite dal servizio una volta effettuato l'accesso a un account amministratore delegato.

Input artifact (Artefatti di input)

È necessario includere almeno un elemento di input che contenga il modello per lo stack set in un'azione. CloudFormationStackSet È possibile includere più artefatti di input per elenchi di obiettivi, account e parametri di distribuzione.

  • Numero di artefatti: 1 to 3

  • Descrizione: puoi includere artefatti per fornire:

    • Il file modello dello stack. Consulta il parametro TemplatePath.

    • Il file dei parametri. Consulta il parametro Parameters.

    • Il file degli account. Consulta il parametro DeploymentTargets.

Artefatti di output

  • Numero di artefatti: 0

  • Descrizione: gli artefatti di output non si applicano a questo tipo di azione.

Variabili di output

Se si configura questa azione, produce variabili a cui può fare riferimento la configurazione dell'azione di un'azione a valle nella pipeline. È possibile configurare un'azione con uno spazio dei nomi per rendere tali variabili disponibili per la configurazione delle azioni downstream.

  • StackSetId: L'ID dello stack set.

  • OperationId: L'ID dell'operazione di set di stack.

Per ulteriori informazioni, consulta Variables.

Esempio di configurazione CloudFormationStackSetdell'azione

Gli esempi seguenti mostrano la configurazione dell'CloudFormationStackSetazione.

Esempio di modello di autorizzazioni autogestite

L'esempio seguente mostra un'CloudFormationStackSetazione in cui l'obiettivo di distribuzione immesso è un ID AWS account.

YAML
Name: CreateStackSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackSet Version: '1' RunOrder: 1 Configuration: DeploymentTargets: '111111222222' FailureTolerancePercentage: '20' MaxConcurrentPercentage: '25' PermissionModel: SELF_MANAGED Regions: us-east-1 StackSetName: my-stackset TemplatePath: 'SourceArtifact::template.json' OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "CreateStackSet", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackSet", "Version": "1" }, "RunOrder": 1, "Configuration": { "DeploymentTargets": "111111222222", "FailureTolerancePercentage": "20", "MaxConcurrentPercentage": "25", "PermissionModel": "SELF_MANAGED", "Regions": "us-east-1", "StackSetName": "my-stackset", "TemplatePath": "SourceArtifact::template.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "us-west-2", "Namespace": "DeployVariables" }

Esempio del modello di autorizzazioni gestite dal servizio

L'esempio seguente mostra un'CloudFormationStackSetazione per il modello di autorizzazioni gestite dal servizio in cui l'opzione per la distribuzione automatica in AWS Organizations è abilitata con stack retention.

YAML
Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackSet Version: '1' RunOrder: 1 Configuration: Capabilities: 'CAPABILITY_IAM,CAPABILITY_NAMED_IAM' OrganizationsAutoDeployment: EnabledWithStackRetention PermissionModel: SERVICE_MANAGED StackSetName: stacks-orgs TemplatePath: 'SourceArtifact::template.json' OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: eu-central-1 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackSet", "Version": "1" }, "RunOrder": 1, "Configuration": { "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM", "OrganizationsAutoDeployment": "EnabledWithStackRetention", "PermissionModel": "SERVICE_MANAGED", "StackSetName": "stacks-orgs", "TemplatePath": "SourceArtifact::template.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "eu-central-1", "Namespace": "DeployVariables" }

L'operazione CloudFormationStackInstances

Questa azione crea nuove istanze e distribuisce set di stack su istanze specifiche. Un'istanza di stack è un riferimento a uno stack in un account target all'interno di una Regione. Un'istanza dello stack può esistere senza uno stack; ad esempio, se la creazione dello stack non ha esito positivo, l'istanza dello stack mostra il motivo dell'errore di creazione dello stack. Un'istanza di stack è associata a un solo set di stack.

Dopo la creazione iniziale di un set di stack, puoi aggiungere nuove istanze di stack utilizzando. CloudFormationStackInstances I valori dei parametri del modello possono essere sovrascritti a livello di istanza dello stack durante le operazioni di creazione o aggiornamento dell'istanza dello stack set.

Ogni set di stack ha un modello e un set di parametri di modello. Quando aggiorni il modello o i parametri del modello, li aggiorni per l'intero set. Quindi tutti gli stati dell'istanza vengono impostati su OUTDATED fino a quando le modifiche non vengono distribuite a quell'istanza.

Per sovrascrivere i valori dei parametri su istanze specifiche, ad esempio, se il modello contiene un parametro per stage con un valore diprod, è possibile sovrascrivere il valore di quel parametro come o. beta gamma

Tipo di operazione

  • Categoria: Deploy

  • Proprietario: AWS

  • Provider: CloudFormationStackInstances

  • Versione: 1

Parametri di configurazione

StackSetName

Campo obbligatorio: sì

Il nome da associare al set di stack. Questo nome deve essere univoco nella regione in cui è stato creato.

Il nome può contenere solo caratteri alfanumerici e trattini. Deve iniziare con un carattere alfabetico e contenere al massimo 128 caratteri.

DeploymentTargets

Campo obbligatorio: no

Nota

Per il modello di autorizzazioni SERVICE_MANAGED, è possibile fornire l'ID radice dell'organizzazione o gli ID delle unità organizzative per gli obiettivi di distribuzione. Per il modello di autorizzazioni SELF_MANAGED, puoi fornire solo account.

Nota

Quando questo parametro è selezionato, è necessario selezionare anche Regioni.

Un elenco di AWS account o ID di unità organizzative in cui è necessario creare/aggiornare le istanze dello stack set.

  • Account:

    È possibile fornire gli account come elenco letterale o percorso di file:

    • Letterale: immettete i parametri nel formato sintattico abbreviatoaccount_ID,account_ID, come illustrato nell'esempio seguente.

      111111222222,333333444444
    • Percorso del file: la posizione del file contenente un elenco di AWS account in cui le istanze dello stack set devono essere create/aggiornate, inserita nel formato. InputArtifactName::AccountsFileName Se si utilizza il percorso del file per specificare gli account oppure OrganizationalUnitIds, il formato del file deve essere in JSON, come illustrato nell'esempio seguente.

      SourceArtifact::accounts.txt

      L'esempio seguente mostra il contenuto del file peraccounts.txt:

      [ "111111222222" ]

      L'esempio seguente mostra il contenuto del file per accounts.txt quando si elencano più di un account:

      [ "111111222222","333333444444" ]
  • OrganizationalUnitIds:

    Nota

    Questo parametro è facoltativo per il modello di autorizzazioni SERVICE_MANAGED e non viene utilizzato per il modello di autorizzazioni SELF_MANAGED. Non utilizzarlo se si seleziona. OrganizationsAutoDeployment

    Le unità AWS organizzative in cui aggiornare le istanze dello stack associate.

    È possibile fornire gli ID delle unità organizzative come elenco letterale o percorso di file.

    • Letterale: inserisci una matrice di stringhe separate da virgole, come illustrato nell'esempio seguente.

      ou-examplerootid111-exampleouid111,ou-examplerootid222-exampleouid222
    • Percorso del file: la posizione del file contenente un elenco OrganizationalUnitIds in cui creare o aggiornare le istanze dello stack set. Se si utilizza il percorso del file per specificare gli account oppure OrganizationalUnitIds, il formato del file deve essere in JSON, come illustrato nell'esempio seguente.

      Immettete il percorso del file nel formatoInputArtifactName::OrganizationalUnitIdsFileName.

      SourceArtifact::OU-IDs.txt

      L'esempio seguente mostra il contenuto del file perOU-IDs.txt:

      [ "ou-examplerootid111-exampleouid111","ou-examplerootid222-exampleouid222" ]
Regioni

Campo obbligatorio: sì

Nota

Quando questo parametro è selezionato, è necessario selezionare anche DeploymentTargets.

Un elenco di AWS regioni in cui vengono create o aggiornate le istanze dello stack set. Le regioni vengono aggiornate nell'ordine in cui vengono inserite.

Immettete un elenco di AWS regioni valide nel formato:Region1,Region2, come illustrato nell'esempio seguente.

us-west-2,us-east-1
ParameterOverrides

Campo obbligatorio: no

Un elenco di parametri dello stack set che desideri sovrascrivere nelle istanze dello stack selezionate. I valori dei parametri sostituiti vengono applicati a tutte le istanze dello stack negli account e nelle regioni specificati.

Puoi fornire i parametri come elenco letterale o percorso di file:

  • È possibile inserire i parametri nel seguente formato di sintassi abbreviata:. ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string Per ulteriori informazioni su questi tipi di dati, vedere. Tipi di dati dei parametri del modello

    L'esempio seguente mostra un parametro denominato BucketName con il valore my-bucket.

    ParameterKey=BucketName,ParameterValue=my-bucket

    L'esempio seguente mostra una voce con più parametri.

    ParameterKey=BucketName,ParameterValue=my-bucket ParameterKey=Asset1,ParameterValue=true ParameterKey=Asset2,ParameterValue=true
  • È possibile immettere la posizione del file contenente un elenco di sostituzioni dei parametri del modello immesse nel formatoInputArtifactName::ParameterOverridessFileName, come illustrato nell'esempio seguente.

    SourceArtifact::parameter-overrides.txt

    L'esempio seguente mostra il contenuto del file per. parameter-overrides.txt

    [ { "ParameterKey": "KeyName", "ParameterValue": "true" }, { "ParameterKey": "KeyName", "ParameterValue": "true" } ]
FailureTolerancePercentage

Campo obbligatorio: no

La percentuale di account per regione per i quali questa operazione di stack può fallire prima dell' AWS CloudFormation interruzione dell'operazione in quella regione. Se l'operazione viene interrotta in una regione, AWS CloudFormation non tenta l'operazione nelle regioni successive. Quando si calcola il numero di conti in base alla percentuale specificata, viene AWS CloudFormation arrotondato per difetto al numero intero successivo.

MaxConcurrentPercentage

Campo obbligatorio: no

La percentuale massima di account su cui eseguire questa operazione contemporaneamente. Quando si calcola il numero di conti in base alla percentuale specificata, viene AWS CloudFormation arrotondato per difetto al numero intero successivo. Se l'arrotondamento per difetto dà come risultato zero, AWS CloudFormation imposta invece il numero a uno. Sebbene si specifichi il valore massimo, per le distribuzioni di grandi dimensioni il numero effettivo di account su cui si agisce contemporaneamente potrebbe essere inferiore a causa della limitazione del servizio.

RegionConcurrencyType

Campo obbligatorio: no

È possibile specificare se lo stack set deve essere distribuito in Regioni AWS sequenza o in parallelo configurando il parametro region concurrency deployment. Quando viene specificata la concorrenza Region per distribuire stack su più stack in Regioni AWS parallelo, ciò può comportare tempi di implementazione complessivi più rapidi.

  • Parallelo: le implementazioni di set di stack verranno eseguite contemporaneamente, a condizione che gli errori di distribuzione in una regione non superino una tolleranza di errore specificata.

  • Sequenziale: le implementazioni di set di stack verranno eseguite una alla volta, a condizione che gli errori di distribuzione in una regione non superino una tolleranza di errore specificata. La distribuzione sequenziale è la selezione predefinita.

ConcurrencyMode

Campo obbligatorio: no

La modalità di concorrenza consente di scegliere il comportamento del livello di concorrenza durante le operazioni di stack set, con una tolleranza agli errori rigorosa o morbida. La tolleranza rigorosa ai guasti riduce la velocità di implementazione quando si verificano errori nelle operazioni del set di stack, poiché la simultaneità diminuisce per ogni errore. Soft Failure Tolerance dà priorità alla velocità di implementazione sfruttando al contempo le funzionalità di sicurezza. AWS CloudFormation

  • STRICT_FAILURE_TOLERANCE: Questa opzione riduce dinamicamente il livello di concorrenza per garantire che il numero di account falliti non superi mai una particolare tolleranza di errore. Questo è il comportamento che segue di default.

  • SOFT_FAILURE_TOLERANCE: questa opzione disaccoppia la tolleranza agli errori dalla concorrenza effettiva. Ciò consente alle operazioni di stack set di essere eseguite a un livello di concorrenza prestabilito, indipendentemente dal numero di errori.

CallAs

Campo obbligatorio: no

Nota

Questo parametro è facoltativo per il modello di SERVICE_MANAGED autorizzazioni e non viene utilizzato per il modello di autorizzazioni. SELF_MANAGED

Speciifica se si agisce nell'account di gestione dell'organizzazione o come amministratore delegato in un account membro.

Nota

Se questo parametro è impostato suDELEGATED_ADMIN, assicurati che il ruolo IAM della pipeline disponga dell'autorizzazione. organizations:ListDelegatedAdministrators In caso contrario, l'azione avrà esito negativo durante l'esecuzione con un errore simile al seguente:Account used is not a delegated administrator.

  • SELF: La distribuzione di Stack Set utilizzerà le autorizzazioni gestite dal servizio una volta effettuato l'accesso all'account di gestione.

  • DELEGATED_ADMIN: la distribuzione di Stack Set utilizzerà le autorizzazioni gestite dal servizio una volta effettuato l'accesso a un account amministratore delegato.

Input artifact (Artefatti di input)

CloudFormationStackInstancespuò contenere artefatti che elencano gli obiettivi e i parametri di distribuzione.

  • Numero di artefatti: 0 to 2

  • Descrizione: come input, l'azione stack set accetta facoltativamente artefatti per i seguenti scopi:

    • Per fornire il file dei parametri da utilizzare. Consulta il parametro ParameterOverrides.

    • Per fornire il file degli account di destinazione da utilizzare. Consulta il parametro DeploymentTargets.

Artefatti di output

  • Numero di artefatti: 0

  • Descrizione: gli artefatti di output non si applicano a questo tipo di azione.

Variabili di output

Quando è configurata, questa azione produce variabili che possono essere referenziate dalla configurazione dell'azione di un'azione downstream nella pipeline. È possibile configurare un'azione con uno spazio dei nomi per rendere tali variabili disponibili per la configurazione delle azioni downstream.

  • StackSetId: L'ID dello stack set.

  • OperationId: L'ID dell'operazione di set di stack.

Per ulteriori informazioni, consulta Variables.

Esempio di configurazione dell'operazione

Gli esempi seguenti mostrano la configurazione dell'CloudFormationStackInstancesazione.

Esempio di modello di autorizzazioni autogestite

L'esempio seguente mostra un'CloudFormationStackInstancesazione in cui l'obiettivo di distribuzione immesso è un Account AWS ID. 111111222222

YAML
Name: my-instances ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackInstances Version: '1' RunOrder: 2 Configuration: DeploymentTargets: '111111222222' Regions: 'us-east-1,us-east-2,us-west-1,us-west-2' StackSetName: my-stackset OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: us-west-2
JSON
{ "Name": "my-instances", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackInstances", "Version": "1" }, "RunOrder": 2, "Configuration": { "DeploymentTargets": "111111222222", "Regions": "us-east-1,us-east-2,us-west-1,us-west-2", "StackSetName": "my-stackset" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "us-west-2" }

Esempio del modello di autorizzazioni gestite dal servizio

L'esempio seguente mostra un'CloudFormationStackInstancesazione per il modello di autorizzazioni gestite dal servizio in cui l'obiettivo di distribuzione è un ID di unità organizzativa AWS Organizations. ou-1111-1example

YAML
Name: Instances ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormationStackInstances Version: '1' RunOrder: 2 Configuration: DeploymentTargets: ou-1111-1example Regions: us-east-1 StackSetName: my-stackset OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact Region: eu-central-1
JSON
{ "Name": "Instances", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormationStackInstances", "Version": "1" }, "RunOrder": 2, "Configuration": { "DeploymentTargets": "ou-1111-1example", "Regions": "us-east-1", "StackSetName": "my-stackset" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ], "Region": "eu-central-1" }

Modelli di autorizzazioni per le operazioni relative agli stack set

Poiché AWS CloudFormation StackSets esegue operazioni su più account, è necessario definire le autorizzazioni necessarie in tali account prima di poter creare lo stack set. È possibile definire le autorizzazioni tramite autorizzazioni autogestite o autorizzazioni gestite dal servizio.

Con le autorizzazioni autogestite, puoi creare i due ruoli IAM richiesti da StackSets : un ruolo di amministratore, ad esempio nell'account AWSCloudFormationStackSetAdministrationRole in cui definisci il set di stack, e un ruolo di esecuzione come quello AWSCloudFormationStackSetExecutionRole in ciascuno degli account in cui distribuisci le istanze dello stack set. Utilizzando questo modello di autorizzazioni, StackSets puoi eseguire la distribuzione su qualsiasi AWS account in cui l'utente dispone delle autorizzazioni per creare un ruolo IAM. Per ulteriori informazioni, consulta Concedere autorizzazioni autogestite nella Guida per l'utente.AWS CloudFormation

Nota

Poiché AWS CloudFormation StackSets esegue operazioni su più account, è necessario definire le autorizzazioni necessarie in tali account prima di poter creare lo stack set.

Con le autorizzazioni gestite dal servizio, puoi distribuire istanze stack su account gestiti da Organizations. AWS Utilizzando questo modello di autorizzazioni, non è necessario creare i ruoli IAM necessari, in quanto StackSets crea i ruoli IAM per conto dell'utente. Con questo modello, puoi anche abilitare le distribuzioni automatiche agli account che verranno aggiunti all'organizzazione in futuro. Vedi Enable trusted access with AWS Organizations nella Guida AWS CloudFormation per l'utente.

Tipi di dati dei parametri del modello

I parametri del modello utilizzati nelle operazioni di stack set includono i seguenti tipi di dati. Per ulteriori informazioni, vedere DescribeStackSet.

ParameterKey
  • Descrizione: la chiave associata al parametro. Se non specificate una chiave e un valore per un particolare parametro, AWS CloudFormation utilizza il valore predefinito specificato nel modello.

  • Esempio:

    "ParameterKey=BucketName,ParameterValue=my-bucket"
ParameterValue
  • Descrizione: il valore di input associato al parametro.

  • Esempio:

    "ParameterKey=BucketName,ParameterValue=my-bucket"
UsePreviousValue
  • Durante un aggiornamento dello stack, utilizzate il valore del parametro esistente utilizzato dallo stack per una determinata chiave di parametro. Se lo specificatetrue, non specificate il valore di un parametro.

  • Esempio:

    "ParameterKey=Asset1,UsePreviousValue=true"

Ogni set di stack ha un modello e un set di parametri di modello. Quando aggiorni il modello o i parametri del modello, li aggiorni per l'intero set. Quindi tutti gli stati delle istanze vengono impostati su OBSOLETO fino a quando le modifiche non vengono distribuite a quell'istanza.

Per sovrascrivere i valori dei parametri su istanze specifiche, ad esempio, se il modello contiene un parametro per stage con un valore diprod, è possibile sovrascrivere il valore di quel parametro impostando or. beta gamma

Le risorse correlate seguenti possono essere utili durante l'utilizzo di questa operazione.

  • Tipi di parametri: questo capitolo di riferimento della Guida per l'AWS CloudFormation utente fornisce ulteriori descrizioni ed esempi per CloudFormation i parametri del modello.

  • Procedure ottimali: per ulteriori informazioni sulle migliori pratiche per la distribuzione di set di stack, https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html consulta la Guida per l'AWS CloudFormation utente.

  • AWS CloudFormation Riferimento alle API: puoi fare riferimento CloudFormation alle seguenti azioni nell'AWS CloudFormation API Reference per ulteriori informazioni sui parametri utilizzati nelle operazioni relative agli stack set:

    • L'CreateStackSetazione crea un set di stack.

    • L'UpdateStackSetazione aggiorna il set di stack e le istanze di stack associate negli account e nelle regioni specificati. Anche se l'operazione di stack set creata aggiornando lo stack set fallisce (completamente o parzialmente, al di sotto o al di sopra di una tolleranza di errore specificata), il set di stack viene aggiornato con queste modifiche. Le CreateStackInstances chiamate successive sul set di stack specificato utilizzano il set di stack aggiornato.

    • L'CreateStackInstancesazione crea un'istanza stack per tutte le regioni specificate all'interno di tutti gli account specificati su un modello di autorizzazione autogestito o all'interno di tutti gli obiettivi di distribuzione specificati su un modello di autorizzazione gestito dal servizio. È possibile sovrascrivere i parametri per le istanze create da questa azione. Se le istanze esistono già, CreateStackInstances chiamate UpdateStackInstances con gli stessi parametri di input. Quando utilizzate questa azione per creare istanze, non modifica lo stato delle altre istanze dello stack.

    • L'UpdateStackInstancesazione aggiorna le istanze dello stack con lo stack impostato per tutte le regioni specificate all'interno di tutti gli account specificati su un modello di autorizzazione autogestito o entro tutti gli obiettivi di distribuzione specificati su un modello di autorizzazione gestito dal servizio. È possibile sovrascrivere i parametri per le istanze aggiornate da questa azione. Quando si utilizza questa azione per aggiornare un sottoinsieme di istanze, non modifica lo stato delle altre istanze dello stack.

    • L'DescribeStackSetOperationazione restituisce la descrizione dell'operazione di stack set specificata.

    • L'DescribeStackSetazione restituisce la descrizione del set di stack specificato.