AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager Riferimento al runbook di automazione

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

AWSSupport-StartEC2RescueWorkflow

Descrizione

Il AWSSupport-StartEC2RescueWorkflow runbook esegue lo script con codifica base64 fornito (Bash o Powershell) su un'istanza helper creata per salvare l'istanza. Il volume root dell'istanza è collegato e montato sull'istanza helper, nota anche come istanza. EC2Rescue Se l'istanza è Windows, specificare uno script Powershell. In caso contrario, utilizzare Bash. Il runbook imposta alcune variabili di ambiente che è possibile utilizzare nello script. Le variabili di ambiente contengono informazioni sull'input fornito, nonché informazioni sul volume root offline. Il volume offline è già montato e pronto all'uso. Ad esempio, è possibile salvare il file di configurazione dello stato desiderato in un volume root di Windows offline o eseguire il comando chroot e passare a un volume root di Linux offline ed eseguire la correzione offline.

Esegui questa automazione (console)

Importante

EC2Le istanze Amazon create da Marketplace Amazon Machine Images (AMIs) non sono supportate da questa automazione.

Informazioni aggiuntive

Per applicare la codifica base64 a uno script, è possibile utilizzare Powershell o Bash. Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes([System.IO.File]::ReadAllText('PATH_TO_FILE')))

Bash:

base64 PATH_TO_FILE

Ecco un elenco di variabili di ambiente che è possibile utilizzare negli script offline, a seconda del sistema operativo di destinazione.

Windows:

Variabile Descrizione Valore di esempio

$env: _ _ID EC2RESCUE ACCOUNT

{{globale: ACCOUNT _ID}}

123456789012

$env: _ EC2RESCUE DATE

{{globale:DATE}}

2018-09-07

$env: _ _ EC2RESCUE DATE TIME

{{globale: DATE _TIME}}

2018-09-07_18.09.59

$env: _ _ EC2RESCUE EC2RW DIR

EC2Rescueper il percorso di installazione di Windows

C:\Program Files\ Amazon\ EC2Rescue

$ env: _ _ EC2RESCUE EC2RW DIR

EC2Rescueper il percorso di installazione di Windows

C:\Program Files\ Amazon\ EC2Rescue

$ env: _ _ID EC2RESCUE EXECUTION

{{automazione: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

$env: EC2RESCUE _ _ _ OFFLINE CURRENT CONTROL SET

Percorso dell'insieme di controlli corrente di Windows offline

HKLM:\AWSTempSystem\ControlSet001

$env: _ _ EC2RESCUE OFFLINE DRIVE

Lettera di unità di Windows offline

D:\

$env: _ _ _ EC2RESCUE OFFLINE EBS DEVICE

Dispositivo con volume root offline EBS

xvdf

$env: EC2RESCUE _ _ _ OFFLINE KERNEL VER

Versione del kernel di Windows offline

6.1.7601.24214

$env: _ _OS_ EC2RESCUE OFFLINE ARCHITECTURE

Architettura di Windows offline

AMD64

$env: _ _OS_ EC2RESCUE OFFLINE CAPTION

Didascalia di Windows offline

Windows Server 2008 R2 Datacenter

$env: _ _OS_ EC2RESCUE OFFLINE TYPE

Tipo di sistema operativo Windows offline

Server

$env: _ _ _ EC2RESCUE OFFLINE PROGRAM FILES DIR

Percorso della directory dei file di programma di Windows offline

D:\Program Files

$env: EC2RESCUE _ _ _ _X86_ OFFLINE PROGRAM FILES DIR

Percorso della directory dei file di programma x86 di Windows offline

D:\Program Files (x86)

$env: _ _ _ EC2RESCUE OFFLINE REGISTRY DIR

Percorso della directory del Registro di sistema di Windows offline

D:\Windows\System32\config

$env: _ _ _ EC2RESCUE OFFLINE SYSTEM ROOT

Percorso della directory radice di sistema di Windows offline

D:\Windows

$env: _ EC2RESCUE REGION

{{globale:REGION}}

us-west-1

$env: _S3_ EC2RESCUE BUCKET

{{S3}} BucketName

bucket dimostrativo amzn-s3

$env: _S3_ EC2RESCUE PREFIX

{{ S3Prefix }}

myprefix/

$env: EC2RESCUE _ _ SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$ script: _ _ _ EC2RESCUE OFFLINE WINDOWS INSTALL

Metadati di installazione di Windows offline

Oggetto Powershell del cliente

Linux:

Variabile Descrizione Valore di esempio

EC2RESCUE_ _ID ACCOUNT

{{globale: ACCOUNT _ID}}

123456789012

EC2RESCUE_DATE

{{globale:DATE}}

2018-09-07

EC2RESCUE_DATE_TIME

{{globale: DATE _TIME}}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescueper il percorso di installazione di Linux

/usr/local/ec2rl-1.1.3

EC2RESCUE_ EXECUTION _ID

{{automazione: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

EC2RESCUE_OFFLINE_DEVICE

Nome del dispositivo offline

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

Dispositivo con volume EBS root offline

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

Punto di montaggio del volume radice offline

/mnt/mount

EC2RESCUE_PYTHON

Versione di Python

python2.7

EC2RESCUE_REGION

{{global:REGION}}

us-west-1

EC2RESCUE_S3_ BUCKET

{{S3}} BucketName

bucket dimostrativo amzn-s3

EC2RESCUE_S3_ PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

Tipo di documento

Automazione

Proprietario

Amazon

Piattaforme

LinuxmacOS, Windows

Parametri

  • AMIPrefix

    Tipo: stringa

    Impostazione predefinita: AWSSupport-EC2Rescue

    Descrizione: (Facoltativo) Un prefisso per il AMI nome del backup.

  • AutomationAssumeRole

    Tipo: stringa

    Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo AWS Identity and Access Management (IAM) che consente a Systems Manager Automation di eseguire le azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.

  • CreatePostEC2RescueBackup

    Tipo: stringa

    Valori validi: true | false

    Impostazione predefinita: false

    Descrizione: (Facoltativo) Impostalo su per true creare un file AMI di InstanceId dopo aver eseguito lo script, prima di avviarlo. AMIPersisterà dopo il completamento dell'automazione. È responsabilità dell'utente garantire l'accesso al AMI file o eliminarlo.

  • CreatePreEC2RescueBackup

    Tipo: stringa

    Valori validi: true | false

    Impostazione predefinita: false

    Descrizione: (Facoltativo) Impostalo true per creare un AMI of InstanceId prima di eseguire lo script. AMIPersisterà dopo il completamento dell'automazione. È responsabilità dell'utente garantire l'accesso al AMI file o eliminarlo.

  • EC2RescueInstanceType

    Tipo: stringa

    Valori validi: t2.small | t2.medium | t2.large

    Impostazione predefinita: t2.small

    Descrizione: (Facoltativo) Il tipo di istanza per l'istanzaEC2. EC2Rescue

  • InstanceId

    Tipo: stringa

    Descrizione: (Obbligatorio) ID dell'EC2istanza. IMPORTANT: AWS Systems Manager L'automazione interrompe questa istanza. I dati archiviati nei volumi dell'instance store andranno persi. L'indirizzo IP pubblico verrà modificato se non si utilizza un IP elastico.

  • OfflineScript

    Tipo: stringa

    Descrizione: (obbligatorio) script con codifica Base64 da eseguire sull'istanza helper. Usa Bash se la tua istanza di origine è Linux e PowerShell se è Windows.

  • S3 BucketName

    Tipo: stringa

    Descrizione: (facoltativo) nome del bucket S3 nell'account in cui si desidera caricare i log della risoluzione dei problemi. Verificare che la policy del bucket non conceda autorizzazioni di lettura/scrittura non necessarie alle parti che non necessitano dell'accesso ai log raccolti.

  • S3Prefix

    Tipo: stringa

    Impostazione predefinita: AWSSupport-EC2Rescue

    Descrizione: (facoltativo) prefisso dei log S3.

  • SubnetId

    Tipo: stringa

    Predefinito: SelectedInstanceSubnet

    Descrizione: (Facoltativo) L'ID di sottorete per l'EC2Rescueistanza. Per impostazione predefinita, viene utilizzata la stessa sottorete in cui si trova l'istanza specificata. IMPORTANT: Se si fornisce una sottorete personalizzata, questa deve trovarsi nella stessa InstanceId zona di disponibilità e deve consentire l'accesso agli endpoint. SSM

  • UniqueId

    Tipo: stringa

    Impostazione predefinita: {{automation: EXECUTION _ID}}

    Descrizione: (Facoltativo) Un identificatore univoco per l'automazione.

Autorizzazioni richieste IAM

Il AutomationAssumeRole parametro richiede le seguenti azioni per utilizzare correttamente il runbook.

Si consiglia all'utente che esegue l'automazione di avere allegata la policy IAM gestita A mazonSSMAutomation Role. Oltre a tale policy l'utente deve disporre di quanto segue:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:An-AWS-Account-ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::An-AWS-Account-ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::An-AWS-Account-ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

Fasi del documento

  1. aws:executeAwsApi- Descrivi l'istanza fornita

  2. aws:executeAwsApi- Descrivi il volume principale dell'istanza fornita

  3. aws:assertAwsResourceProperty- Verifica che il tipo di dispositivo del volume principale sia EBS

  4. aws:assertAwsResourceProperty- Verifica che il volume root non sia crittografato

  5. aws:assertAwsResourceProperty- Controlla l'ID di sottorete fornito

    1. (Usa la sottorete dell'istanza corrente) - Se * SubnetId = SelectedInstanceSubnet *, esegui aws:createStack per distribuire lo stack EC2Rescue CloudFormation

    2. (Crea nuovoVPC) - Se * SubnetId = CreateNew VPC * allora esegui aws:createStack per distribuire lo stack EC2Rescue CloudFormation

    3. (Utilizzo della sottorete personalizzata): in tutti gli altri casi:

      aws:assertAwsResourceProperty- Verifica che la sottorete fornita si trovi nella stessa zona di disponibilità dell'istanza fornita

      aws:createStack- Distribuisci lo stack EC2Rescue CloudFormation

  6. aws:invokeLambdaFunction- Esegui una convalida aggiuntiva degli input

  7. aws:executeAwsApi- Aggiorna lo EC2Rescue CloudFormation stack per creare l'EC2Rescueistanza helper

  8. aws:waitForAwsResourceProperty- Attendi il completamento dell'aggiornamento EC2Rescue CloudFormation dello stack

  9. aws:executeAwsApi- Descrivi l'output EC2Rescue CloudFormation dello stack per ottenere l'ID dell'istanza EC2Rescue helper

  10. aws:waitForAwsResourceProperty- Attendi che l'istanza EC2Rescue helper diventi un'istanza gestita

  11. aws:changeInstanceState- Arresta l'istanza fornita

  12. aws:changeInstanceState- Arresta l'istanza fornita

  13. aws:changeInstanceState- Arresta forzatamente l'istanza fornita

  14. aws:assertAwsResourceProperty- Controlla il valore CreatePre EC2RescueBackup di input

    1. (Crea un EC2Rescue pre-backup) - If* CreatePre EC2RescueBackup = true*

    2. aws:executeAwsApi- Crea un AMI backup dell'istanza fornita

    3. aws:createTags- Etichetta il AMI backup

  15. aws:runCommand- Installa EC2Rescue sull'istanza EC2Rescue helper

  16. aws:executeAwsApi- Scollega il volume root dall'istanza fornita

  17. aws:assertAwsResourceProperty- Controlla la piattaforma di istanza fornita

    1. (L'istanza è Windows):

      aws:executeAwsApi- Collega il volume root all'istanza EC2Rescue helper come *xvdf*

      aws:sleep- Dormi 10 secondi

      aws:runCommand- Esegui lo script offline fornito in Powershell

    2. (L'istanza è Linux):

      aws:executeAwsApi- Collega il volume root EC2Rescue all'istanza di supporto come */dev/sdf*

      aws:sleep- Dormi 10 secondi

      aws:runCommand- Esegui lo script offline fornito in Bash

  18. aws:changeInstanceState- Interrompi l'istanza EC2Rescue helper

  19. aws:changeInstanceState- Arresta forzatamente l'istanza EC2Rescue helper

  20. aws:executeAwsApi- Stacca il volume root dall'istanza helper EC2Rescue

  21. aws:executeAwsApi- Ricollega il volume root all'istanza fornita

  22. aws:assertAwsResourceProperty- Controlla il valore CreatePost EC2RescueBackup di input

    1. (Crea un EC2Rescue post-backup) - If* CreatePost EC2RescueBackup = true*

    2. aws:executeAwsApi- Crea un AMI backup dell'istanza fornita

    3. aws:createTags- Etichetta il AMI backup

  23. aws:executeAwsApi- Ripristina l'eliminazione iniziale allo stato di terminazione per il volume principale dell'istanza fornita

  24. aws:changeInstanceState- Ripristina lo stato iniziale dell'istanza fornita (in esecuzione/interrotta)

  25. aws:deleteStack- Elimina lo stack EC2Rescue CloudFormation

Output

runScriptForLinux.Output

runScriptForWindows.Output

preScriptBackup.ImageId

postScriptBackup.ImageId