Creare StackSet CloudFormation con autorizzazioni gestite dal servizio - AWS CloudFormation

Creare StackSet CloudFormation con autorizzazioni gestite dal servizio

Con le autorizzazioni gestite dal servizio, puoi implementare gli stack in account gestiti da AWS Organizations in Regioni specifiche. Con questo modello, non hai bisogno di creare ruoli IAM in ogni account e Regione AWS di destinazione. CloudFormation crea i ruoli IAM per tuo conto. Per ulteriori informazioni, consulta Attiva l’accesso attendibile.

Considerazioni

Prima di creare uno StackSet con autorizzazioni gestite dal servizio, prendi in considerazione quanto segue:

  • Gli StackSet con autorizzazioni gestite dal servizio possono essere avviati dall’account di gestione dell’organizzazione o dagli account amministratore delegato, ma tutte le operazioni vengono eseguite dall’account di gestione.

  • CloudFormation non implementa stack nell’account di gestione, anche se tale account fa parte dell’organizzazione o appartiene a un’unità organizzativa (UO).

  • Lo StackSet può essere destinato all’intera organizzazioni (inclusi tutti gli account) o UO specifiche. Quando uno StackSet è destinato a un’UO padre, include automaticamente eventuali UO figlie. Per impostazione predefinita, quando uno StackSet è destinato a UO specifiche, include tutti gli account all’interno di tali UO. Tuttavia, puoi definire come destinazione account specifici utilizzando opzioni di filtro di account.

  • Più StackSet possono essere destinati alla stessa organizzazione o UO.

  • Non puoi definire come destinazione account esterni all’organizzazione.

  • L’autorizzazione per implementare StackSet dipende dalle autorizzazioni assegnate al principale IAM (utente, ruolo o gruppo) che usi per accedere all’account di gestione. Per una policy IAM di esempio che concede le autorizzazioni per la distribuzione a un'organizzazione, consulta Limita le operazioni relative ai set di stack in base alla Regione e ai tipi di risorse.

  • Gli amministratori delegati dispongono delle autorizzazioni complete per l’implementazione di qualsiasi account dell’organizzazione. L’account di gestione non può limitare le autorizzazioni di amministratore delegato per l’implementazione in UO specifiche o per eseguire operazioni specifiche dello StackSet.

  • Le impostazioni di implementazione automatica si applicano a livello di StackSet. Non è possibile regolare le distribuzioni automatiche in modo selettivo per unità organizzative, account o Regioni.

  • Gli StackSet che utilizzano autorizzazioni gestite dal servizio non supportano stack nidificati o modelli che contengono macro o trasformazioni.

Creare uno StackSet con autorizzazioni gestite dal servizio (console)

Per creare uno StackSet
  1. Accedere alla Console di gestione AWS e aprire la console di CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Nella barra di navigazione nella parte superiore dello schermo, scegli la Regione AWS dalla quale desideri gestire lo StackSet.

  3. Nel riquadro di navigazione scegliere StackSets.

  4. Nella parte superiore della pagina StackSet, scegli Crea StackSet.

  5. In Permissions (Autorizzazioni) scegliere Service-managed permissions (Autorizzazioni gestite dal servizio).

    Nota

    Se l'accesso sicuro con AWS Organizations è disabilitato, viene visualizzato un banner. L’accesso attendibile è necessario per creare o aggiornare uno StackSet con autorizzazioni gestite dal servizio. Solo l'amministratore nell'account di gestione dell'organizzazione dispone delle autorizzazioni per Attiva l’accesso attendibile per StackSet con AWS Organizations.

  6. In Prerequisito - Prepara modello, scegli Il modello è pronto.

  7. In Specify template (Specifica modello), scegliere di specificare l'URL per il bucket S3 che contiene il modello di stack oppure caricare un file modello di stack. Quindi, seleziona Next (Successivo).

  8. Nella pagina Specifica dettagli di StackSet, indica un nome per lo StackSet e specifica eventuali parametri, poi scegli Avanti.

  9. Nella pagina Configure StackSet options (Configura opzioni StackSet) in Tags, specificare eventuali tag da applicare alle risorse nello stack. Per ulteriori informazioni sull’utilizzo dei tag in AWS, consulta Organizing and tracking costs using AWS cost allocation tags nella Guida per l’utente di Gestione dei costi e fatturazione AWS.

  10. In Configurazione dell’esecuzione, scegli Attiva per abilitare la gestione ottimizzata delle operazioni di CloudFormation:

    • Le operazioni non in conflitto vengono eseguite contemporaneamente per tempi di implementazione più veloci.

    • Le operazioni in conflitto vengono automaticamente messe in coda ed elaborate nell’ordine di richiesta.

    Mentre le operazioni sono in esecuzione o in coda, CloudFormation mette in coda tutte le operazioni in entrata anche se non sono in conflitto. Non puoi modificare le impostazioni di esecuzione durante questa fase.

  11. Se il modello contiene risorse IAM, in Funzionalità scegli Riconosco che questo modello può creare risorse IAM per specificare che desideri utilizzare risorse IAM nel modello. Per ulteriori informazioni, consulta Accettazione delle risorse IAM nei modelli CloudFormation.

  12. Scegli Avanti per procedere e attivare l'accesso attendibile, se non è già attivato.

  13. Nella pagina Imposta opzioni di implementazione, in Destinazioni di implementazione, esegui una delle seguenti operazioni:

    • Per implementare in tutti gli account dell’organizzazione, scegli Implementa nell’organizzazione.

    • Per implementare in tutti gli account in UO specifiche, scegli Implementa nelle unità organizzative (UO). Scegliere Add an OU (Aggiungi un'unità organizzativa) e quindi incollare l'ID dell'unità organizzativa di destinazione nella casella di testo. Ripetere per ogni nuova unità organizzativa di destinazione.

    Se hai scelto Implementa nelle unità organizzative (UO), in Tipo di filtro dell’account, puoi impostare singoli account specifici come destinazioni dell’implementazione scegliendo una delle seguenti opzioni e fornendo i numeri degli account.

    • Nessuno (impostazione predefinita): implementa gli stack in tutti gli account nelle UO specificate.

    • Intersezione: implementa gli stack in singoli account specifici all’interno delle UO selezionate.

    • Differenza: implementa gli stack in tutti gli account nelle UO selezionate a eccezione di account specifici.

    • Unione: implementa gli stack nelle UO specificate e in singoli account.

  14. In Implementazione automatica, scegli se implementare automaticamente gli account che in futuro saranno aggiunti all’organizzazione o alle UO di destinazione. Per ulteriori informazioni, consulta Abilitare o disabilitare le implementazioni automatiche per gli StackSet in AWS Organizations.

  15. Se è stata abilitata la distribuzione automatica, in Account removal behavior (Comportamento rimozione account) scegliere se le risorse dello stack vengono mantenute o eliminate quando un account viene rimosso da un'organizzazione o da un'unità organizzativa di destinazione.

    Nota

    Con l’opzione Mantieni stack selezionata, gli stack vengono rimossi dallo StackSet, ma vengono mantenuti gli stack e le relative risorse associate. Le risorse rimangono nello stato corrente, ma non faranno più parte dello StackSet.

  16. In Specifica Regioni, scegli le Regioni in cui desideri implementare gli stack.

  17. In Opzioni di implementazione, procedi come segue:

    • In Numero massimo di account simultanei, specifica quanti account vengono elaborati contemporaneamente.

    • In Failure tolerance, specifica il numero massimo di errori consentiti per Regione negli account. Una volta raggiunto questo limite, l’operazione si interromperà e non passerà ad altre Regioni.

    • In Region concurrency, scegli il modo con cui elaborare le Regioni: sequenziale (una Regione alla volta) o parallelo (più Regioni contemporaneamente).

    • In Concurrency mode, scegli come deve comportarsi la simultaneità durante l’esecuzione dell’operazione.

      • Tolleranza rigorosa ai guasti: riduce il livello di simultaneità degli account quando si verificano errori, rimanendo all’interno di Tolleranza ai guasti +1.

      • Tolleranza leggera ai guasti: mantiene il livello di simultaneità specificato (il valore di Numero massimo di account simultanei) indipendentemente dai guasti.

  18. Seleziona Successivo per continuare.

  19. Nella pagina Revisione, verifica che lo StackSet venga implementato negli account corretti nelle Regioni giuste, poi scegli Crea StackSet.

    Viene visualizzata la pagina StackSet details (Dettagli StackSet). Puoi visualizzare l’avanzamento e lo stato della creazione degli stack nello StackSet.

Creare uno StackSet con autorizzazioni gestite dal servizio (AWS CLI)

Segui i passaggi indicati in questa sezione per utilizzare la AWS CLI per:

  • Creare il container StackSet.

  • Implementare istanze di stack.

Nota

Quando agisci come amministratore delegato, devi includere --call-as DELEGATED_ADMIN nel comando.

Deploy to your organization
Per creare uno StackSet
  1. Usa il comando create-stack-set per creare un nuovo StackSet chiamato my-stackset. Il seguente esempio usa un modello archiviato in un bucket S3, consente implementazioni automatiche e mantiene gli stack quando gli account vengono rimossi. Per ulteriori informazioni, consulta Abilitare o disabilitare le implementazioni automatiche per gli StackSet in AWS Organizations.

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
  2. Usa il comando list-stack-sets per confermare la creazione dello StackSet. Il nuovo StackSet viene elencato nei risultati.

    aws cloudformation list-stack-sets
    • Se imposti l’opzione --call-as su DELEGATED_ADMIN mentre utilizzi l’account membro, list-stack-sets restituisce tutti gli StackSet con autorizzazioni gestite dal servizio nell’account di gestione dell’organizzazione.

    • Se imposti l’opzione --call-as su SELF mentre utilizzi l’Account AWS, list-stack-sets restituisce tutti gli StackSet autogestiti nell’Account AWS.

    • Se imposti l’opzione --call-as su SELF mentre utilizzi l’account di gestione dell’organizzazione, list-stack-sets restituisce tutti gli StackSet nell’account di gestione dell’organizzazione.

  3. Usa il comando create-stack-instances per aggiungere stack allo StackSet. Per l’opzione --deployment-targets, specifica l’ID root dell’organizzazione per effettuare l’implementazione in tutti gli account dell’organizzazione.

    Imposta l’elaborazione simultanea degli account e altre preferenze di implementazione con l’opzione --operation-preferences. Questo esempio usa impostazioni basate su numeri. Tieni presente che MaxConcurrentCount non deve superare FailureToleranceCount + 1. Per le impostazioni basate su percentuali, usa FailureTolerancePercentage o MaxConcurrentPercentage.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=r-a1b2c3d4e5 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    Per ulteriori informazioni, consulta CreateStackInstances nella Documentazione di riferimento dell’API di AWS CloudFormation.

  4. Utilizzando l’operation-id restituito come parte dell’output create-stack-instances, usa il seguente comando describe-stack-set-operation per verificare che gli stack siano stati creati correttamente.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to organizational units (OUs)
Per creare uno StackSet
  1. Usa il comando create-stack-set per creare un nuovo StackSet chiamato my-stackset. Il seguente esempio usa un modello archiviato in un bucket S3 e include un parametro che imposta un KeyPairName con il valore TestKey.

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. Usa il comando list-stack-sets per confermare la creazione dello StackSet. Il nuovo StackSet viene elencato nei risultati.

    aws cloudformation list-stack-sets
    • Se imposti l’opzione --call-as su DELEGATED_ADMIN mentre utilizzi l’account membro, list-stack-sets restituisce tutti gli StackSet con autorizzazioni gestite dal servizio nell’account di gestione dell’organizzazione.

    • Se imposti l’opzione --call-as su SELF mentre utilizzi l’Account AWS, list-stack-sets restituisce tutti gli StackSet autogestiti nell’Account AWS.

    • Se imposti l’opzione --call-as su SELF mentre utilizzi l’account di gestione dell’organizzazione, list-stack-sets restituisce tutti gli StackSet nell’account di gestione dell’organizzazione.

  3. Usa il comando create-stack-instances per aggiungere stack allo StackSet. Per l’opzione --deployment-targets, specifica gli ID UO in cui effettuare l’implementazione.

    Imposta l’elaborazione simultanea degli account e altre preferenze di implementazione con l’opzione --operation-preferences. Questo esempio usa impostazioni basate su numeri. Tieni presente che MaxConcurrentCount non deve superare FailureToleranceCount + 1. Per le impostazioni basate su percentuali, usa FailureTolerancePercentage o MaxConcurrentPercentage.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5j1lwo,ou-rcuk-slr5lh0a \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    Per ulteriori informazioni, consulta CreateStackInstances nella Documentazione di riferimento dell’API di AWS CloudFormation.

  4. Utilizzando l’operation-id restituito come parte dell’output create-stack-instances, usa il seguente comando describe-stack-set-operation per verificare che gli stack siano stati creati correttamente.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to specific accounts in OUs

Puoi scegliere come destinazione unità organizzative (UO) specifiche e utilizzare i filtri di account per controllare con precisione quali account ricevono implementazioni degli stack. Per impostazione predefinita, se non viene definito alcun filtro di account, gli stack vengono implementati in tutti gli account all’interno delle UO specificate.

Nella AWS CLI, specifica i filtri di account con l’opzione --deployment-targets. Per ulteriori informazioni, consulta DeploymentTargets.

Dopo aver creato il container StackSet con il comando create-stack-set, usa uno dei seguenti esempi per implementare gli stack in account specifici.

Scegliere come destinazione account specifici in una UO

Il seguente esempio implementa gli stack solo negli account A1 e A2 nella UO1.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=INTERSECTION \ --regions us-west-2 us-east-1
Escludere gli account da una UO

Il seguente esempio implementa gli stack in tutti gli account nella UO1 a eccezione degli account A1 e A2.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=DIFFERENCE \ --regions us-west-2 us-east-1