Pianificazione di automazioni con associazioni State Manager - AWS Systems Manager

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

Pianificazione di automazioni con associazioni State Manager

Puoi avviare un'automazione creando un'State Managerassociazione con un runbook. State Managerè una capacità di. AWS Systems Manager Creando un'State Managerassociazione con un runbook, è possibile indirizzare diversi tipi di AWS risorse. Ad esempio, è possibile creare associazioni che impongono lo stato desiderato a una AWS risorsa, tra cui:

  • Assegna un ruolo di Systems Manager alle istanze Amazon Elastic Compute Cloud (AmazonEC2) per renderle istanze gestite.

  • applica le regole di ingresso e di uscita desiderate per un gruppo di sicurezza;

  • crea o elimina i backup di Amazon DynamoDB;

  • Crea o elimina istantanee di Amazon Elastic Block Store (AmazonEBS).

  • Disattiva le autorizzazioni di lettura e scrittura per i bucket Amazon Simple Storage Service (Amazon S3);

  • Avvia, riavvia o arresta le istanze gestite e le istanze di Amazon Relational Database Service (RDSAmazon).

  • applicare patch a Linux, macOS e alla finestra AMIs;

Utilizza le seguenti procedure per creare un'State Managerassociazione che esegua un'automazione utilizzando la AWS Systems Manager console e AWS Command Line Interface ().AWS CLI Per informazioni generali sulle associazioni e informazioni sulla creazione di un'associazione che utilizza un SSM Command documento o un Policy documento, vedereCreazione di associazioni.

Prima di iniziare

Tieni presente le informazioni importanti seguenti prima di eseguire un'automazione con State Manager:

  • Prima di creare un'associazione che utilizza un runbook, verifica di aver configurato le autorizzazioni per Automation, una funzionalità di. AWS Systems Manager Per ulteriori informazioni, consulta Configurazione del servizio di automazione.

  • Le associazioni di State Manager che utilizzano i runbook contribuiscono al raggiungimento del numero massimo per l'esecuzione di automazioni simultanee nell' Account AWS. Il numero massimo di esecuzioni simultanee del servizio di automazione è 100. Per informazioni, consulta Quote di servizio di Systems Manager nella Riferimenti generali di Amazon Web Services.

  • Quando si esegue un'automazione, State Manager non registra le API operazioni avviate dall'automazione. AWS CloudTrail

  • Systems Manager crea automaticamente un ruolo collegato al servizio in modo che State Manager sia autorizzato a chiamare le operazioni di Systems Manager AutomationAPI. Se lo desideri, puoi creare tu stesso il ruolo collegato al servizio eseguendo il seguente comando da o. AWS CLI AWS Tools for PowerShell

    Linux & macOS
    aws iam create-service-linked-role \ --aws-service-name ssm.amazonaws.com
    Windows
    aws iam create-service-linked-role ^ --aws-service-name ssm.amazonaws.com
    PowerShell
    New-IAMServiceLinkedRole ` -AWSServiceName ssm.amazonaws.com

    Per ulteriori informazioni sui ruoli collegati al servizio, consulta Utilizzo di ruoli collegati ai servizi per Systems Manager.

Creazione di un'associazione che esegue un'automazione (console)

La procedura seguente descrive come utilizzare la console di Systems Manager per creare un'associazione di State Manager che esegue un'automazione.

Per creare un'associazione di State Manager che esegue un'automazione
  1. Apri la AWS Systems Manager console all'indirizzo. https://console.aws.amazon.com/systems-manager/

  2. Nel pannello di navigazione, scegliere State Manager, quindi Create association (Crea associazione).

  3. Nel campo Name (Nome), specifica un nome. Questo passaggio è facoltativo, ma è consigliato.

  4. Nell'elenco Document (Documento), scegliere un runbook. Utilizza la barra di ricerca per filtrare per runbook Document type : Equal : Automation (Tipo documento: Uguale: Automazione). È possibile utilizzare i numeri a destra della barra di ricerca per visualizzare ulteriori runbook.

    Nota

    È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

  5. Scegli Simple execution (Esecuzione semplice) per eseguire l'automazione su una o più destinazioni specificando l'ID di risorsa per tali destinazioni. Scegli Rate control per eseguire l'automazione su una flotta di AWS risorse specificando un'opzione di targeting come tag o. AWS Resource GroupsÈ anche possibile controllare l'operazione dell'automazione nelle risorse specificando la simultaneità e le soglie di errore.

    Se si sceglie Rate control (Controllo velocità), viene visualizzata la sezione Targets (Destinazioni).

  6. Nella sezione Targets (Destinazioni), scegliere un metodo per definire le risorse come destinazione.

    1. (Obbligatorio) Nell'elenco Parameter (Parametro), scegliere un parametro. Le voci nell'elenco Parameter (Parametro) sono determinate dai parametri presenti nel runbook selezionato all'inizio di questa procedura. Scegliendo un parametro, si definisce il tipo di risorsa su cui viene eseguita l'automazione.

    2. (Obbligatorio) Nell'elenco Targets (Destinazioni), scegliere un metodo per definire le risorse come destinazione.

      • Resource Group (Gruppo di risorse): scegliere il nome del gruppo dall'elenco Resource Group (Gruppo di risorse). Per ulteriori informazioni sul targeting AWS Resource Groups nei runbook, consulta. Targeting AWS Resource Groups

      • Tags (Tag): inserire la chiave del tag e, facoltativamente, il valore del tag nei campi disponibili. Scegli Add (Aggiungi). Per ulteriori informazioni sulla definizione dei tag come destinazione nei runbook, consulta Definizione di un tag come destinazione.

      • Parameter Values (Valori parametro): inserire i valori nella sezione Input parameters (Parametri di input). Se specifichi più valori, Systems Manager esegue un'automazione figlio su ciascun valore specificato.

        Supponiamo, ad esempio, che il runbook includa un parametro InstanceID (IDistanza). Se definisci i valori del parametro InstanceID (IDistanza) come destinazione quando esegui l'automazione, il Systems Manager esegue un'automazione figlio per ogni valore di ID di istanza specificato. L'automazione padre risulta completa quando l'automazione termina l'esecuzione di ciascuna istanza specificata oppure se l'automazione ha esito negativo. Puoi definire come destinazione un massimo di 50 valori di parametro. Per ulteriori informazioni sulla definizione dei valori dei parametri come destinazione nei runbook, vedi Definizione dei valori di parametro come destinazione.

  7. Nella sezione Input parameters (Parametri di input), specificare i parametri di input obbligatori.

    Se hai deciso di definire le risorse come destinazione mediante i tag o un gruppo di risorse, potrebbe non essere necessario scegliere alcune delle opzioni nella sezione Input parameters (Parametri di input). Ad esempio, se avete scelto il AWS-RestartEC2Instance runbook e avete scelto di indirizzare le istanze utilizzando i tag, non è necessario specificare o scegliere l'istanza IDs nella sezione Parametri di input. Il servizio di automazione individua le istanze da riavviare utilizzando i tag specificati.

    Importante

    È necessario specificare un ruolo ARN nel campo. AutomationAssumeRole State Managerutilizza il ruolo assume per chiamare AWS servizi specificato nel runbook ed esegue le associazioni di automazione per conto dell'utente.

  8. Nella sezione Specify schedule (Specifica pianificazione), scegliere On Schedule (In base a pianificazione) per eseguire l'associazione a intervalli regolari. Se si sceglie questa opzione, utilizzare le opzioni fornite per creare la pianificazione con le espressioni Cron o Rate. Per ulteriori informazioni sulle espressioni Cron e Rate per State Manager, consulta Espressioni Cron e Rate per le associazioni.

    Nota

    Le espressioni Rate sono il meccanismo di programmazione preferito per le associazioni State Manager che utilizzano i runbook. Le espressioni Rate permettono una maggiore flessibilità per l'esecuzione delle associazioni nel caso in cui si raggiunga il numero massimo di automazioni in esecuzione simultaneamente. Con una pianificazione Rate, Systems Manager può riprovare l'automazione subito dopo aver ricevuto la notifica relativa al raggiungimento del numero massimo di automazioni simultanee e alla conseguente limitazione.

    Scegliere No Schedule (Nessuna pianificazione) per eseguire l'associazione una sola volta.

  9. (Facoltativo) Nella sezione Rate Control, scegliete le opzioni Concurrency e Error threshold per controllare l'implementazione dell'automazione tra le vostre AWS risorse.

    1. Nella sezione Concurrency (Simultaneità) scegliere un'opzione:

      • Scegliere Targets (Destinazioni) per inserire il numero assoluto di destinazioni che può eseguire contemporaneamente il servizio di automazione.

      • Scegliere Percentage (Percentuale) per inserire la percentuale della serie di destinazioni che può eseguire contemporaneamente il servizio di automazione.

    2. Nella sezione Error threshold (Soglia di errore) scegliere un'opzione:

      • Scegliere errors (errori) per inserire il numero assoluto di errori consentiti, raggiunto il quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse;

      • Scegliere percentage (percentuale) per inserire la percentuale di errori consentiti, raggiunta la quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse.

    Per ulteriori informazioni sull'utilizzo delle destinazioni e dei controlli di velocità con l'automazione, vedi Esegui operazioni automatizzate su larga scala.

  10. Scegliere Create Association (Crea associazione).

    Importante

    Quando viene creata un'associazione, questa viene eseguita immediatamente in base alle destinazioni specificate. L'associazione quindi viene eseguita in base all'espressione Cron o Rate scelta. Se si sceglie No schedule (Nessuna pianificazione), l'associazione non viene eseguita di nuovo.

Creazione di un'associazione che esegue un'automazione (riga di comando)

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Tools for PowerShell creare un'State Managerassociazione che esegua un'automazione.

Prima di iniziare

Prima di completare la procedura seguente, assicuratevi di aver creato un ruolo di IAM servizio che contenga le autorizzazioni necessarie per eseguire il runbook e di aver configurato una relazione di trust per Automation, una funzionalità di. AWS Systems Manager Per ulteriori informazioni, consulta Processo 1: creazione di un ruolo di servizio per il servizio di automazione.

Per creare un'associazione che esegue un'automazione
  1. Installa e configura il AWS CLI o AWS Tools for PowerShell, se non l'hai già fatto.

    Per informazioni, consulta le pagine Installazione o aggiornamento della versione più recente di AWS CLI e Installazione di AWS Tools for PowerShell.

  2. Eseguire il comando seguente per visualizzare un elenco di documenti.

    Linux & macOS
    aws ssm list-documents
    Windows
    aws ssm list-documents
    PowerShell
    Get-SSMDocumentList

    Prendere nota del nome del runbook che desideri utilizzare per l'associazione.

  3. Eseguire il comando seguente per visualizzare i dettagli sul runbook. Nel comando seguente, sostituisci runbook name con le tue informazioni.

    Linux & macOS
    aws ssm describe-document \ --name runbook name

    Prendere nota di un nome di parametro (ad esempio, InstanceId) che si desidera utilizzare per l'opzione --automation-target-parameter-name. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

    Windows
    aws ssm describe-document ^ --name runbook name

    Prendere nota di un nome di parametro (ad esempio, InstanceId) che si desidera utilizzare per l'opzione --automation-target-parameter-name. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

    PowerShell
    Get-SSMDocumentDescription ` -Name runbook name

    Prendere nota di un nome di parametro (ad esempio, InstanceId) che si desidera utilizzare per l'opzione AutomationTargetParameterName. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

  4. Creare un comando che esegue un'automazione utilizzando un'associazione di State Manager. Sostituisci ciascuno example resource placeholder con le tue informazioni.

    Definizione di destinazioni mediante tag

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=tag:key name,Values=value \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Nota

    Se create un'associazione utilizzando il AWS CLI, utilizzate il --targets parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro --instance-id. Il parametro --instance-id è un parametro legacy.

    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=tag:key name,Values=value ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    Nota

    Se create un'associazione utilizzando il AWS CLI, utilizzate il --targets parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro --instance-id. Il parametro --instance-id è un parametro legacy.

    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "tag:key name" $Targets.Values = "value" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole" } ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"
    Nota

    Se create un'associazione utilizzando il AWS Tools for PowerShell, utilizzate il Target parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro InstanceId. Il parametro InstanceId è un parametro legacy.

    Definizione di destinazioni mediante valori di parametro

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ParameterValues,Values=value,value 2,value 3 \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ParameterValues,Values=value,value 2,value 3 ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ParameterValues" $Targets.Values = "value","value 2","value 3" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"

    Targeting utilizzando AWS Resource Groups

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ResourceGroup,Values=resource group name \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ResourceGroup,Values=resource group name ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "resource group name" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"

    Definizione di più account e regioni come destinazione

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ResourceGroup,Values=resource group name \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression" \ --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ResourceGroup,Values=resource group name ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression" ^ --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "resource group name" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression" ` -TargetLocations @{ "Accounts"=["111122223333,444455556666,444455556666"], "Regions"=["region,region"]

    Il comando restituisce i dettagli per la nuova associazione simili ai seguenti.

    Linux & macOS
    {
    "AssociationDescription": {
        "ScheduleExpression": "cron(0 7 ? * MON *)",
        "Name": "AWS-StartEC2Instance",
        "Parameters": {
            "AutomationAssumeRole": [
                "arn:aws:iam::123456789012:role/RunbookAssumeRole"
            ]
        },
        "Overview": {
            "Status": "Pending",
            "DetailedStatus": "Creating"
        },
        "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
        "DocumentVersion": "$DEFAULT",
        "AutomationTargetParameterName": "InstanceId",
        "LastUpdateAssociationDate": 1564686638.498,
        "Date": 1564686638.498,
        "AssociationVersion": "1",
        "AssociationName": "CLI",
        "Targets": [
            {
                "Values": [
                    "DEV"
                ],
                "Key": "tag:ENV"
            }
        ]
    }
    }
    
    Windows
    {
    "AssociationDescription": {
        "ScheduleExpression": "cron(0 7 ? * MON *)",
        "Name": "AWS-StartEC2Instance",
        "Parameters": {
            "AutomationAssumeRole": [
                "arn:aws:iam::123456789012:role/RunbookAssumeRole"
            ]
        },
        "Overview": {
            "Status": "Pending",
            "DetailedStatus": "Creating"
        },
        "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
        "DocumentVersion": "$DEFAULT",
        "AutomationTargetParameterName": "InstanceId",
        "LastUpdateAssociationDate": 1564686638.498,
        "Date": 1564686638.498,
        "AssociationVersion": "1",
        "AssociationName": "CLI",
        "Targets": [
            {
                "Values": [
                    "DEV"
                ],
                "Key": "tag:ENV"
            }
        ]
    }
    }
    
    PowerShell
    Name                  : AWS-StartEC2Instance
    InstanceId            : 
    Date                  : 8/1/2019 7:31:38 PM
    Status.Name           : 
    Status.Date           : 
    Status.Message        : 
    Status.AdditionalInfo : 
Nota

Se utilizzi i tag per creare un'associazione su una o più istanze di destinazione e quindi rimuovi i tag da un'istanza, tale istanza non eseguirà più l'associazione. L'istanza viene dissociata dal documento di State Manager.

Risoluzione dei problemi relativi alle automazioni eseguite dalle associazioni State Manager

Il servizio di automazione di Systems Manager applica un limite di 100 automazioni simultanee e di 1.000 automazioni in coda per ogni account e per ogni regione. Se un'State Managerassociazione che utilizza un runbook mostra lo stato Non riuscito e lo stato dettagliato di AutomationExecutionLimitExceeded, l'automazione potrebbe aver raggiunto il limite. Di conseguenza, Systems Manager limita le automazioni. Per risolvere il problema, procedere come segue:

  • utilizzare un'altra espressione Cron o Rate per l'associazione. Ad esempio, se l'associazione è pianificata per l'esecuzione ogni 30 minuti, modifica l'espressione in modo che venga eseguita ogni ora o ogni due ore;

  • eliminare le automazioni esistenti con stato Pending (In attesa). Eliminando queste automazioni, si cancella la coda corrente.