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 codificato base64 fornito (Bash o Powershell) su un'istanza di supporto 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 puoi usare nel tuo 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

Le istanze Amazon EC2 create dal Marketplace Amazon Machine Images (AMI) 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]::Unicode.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:EC2RESCUE_ACCOUNT_ID

{{ global:ACCOUNT_ID }}

123456789012

$env:EC2RESCUE_DATE

{{ global:DATE }}

2018-09-07

$env:EC2RESCUE_DATE_TIME

{{ global:DATE_TIME }}

2018-09-07_18.09.59

$env:EC2RESCUE_EC2RW_DIR

Percorso di installazione di EC2Rescue per Windows

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUE_EC2RW_DIR

Percorso di installazione di EC2Rescue per Windows

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUE_EXECUTION_ID

{{ automation: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 EBS del volume root offline

xvdf

$env:EC2RESCUE_OFFLINE_KERNEL_VER

Versione del kernel di Windows offline

6.1.7601.24214

$env:EC2RESCUE_OFFLINE_OS_ARCHITECTURE

Architettura di Windows offline

AMD64

$env:EC2RESCUE_OFFLINE_OS_CAPTION

Didascalia di Windows offline

Windows Server 2008 R2 Datacenter

$env:EC2RESCUE_OFFLINE_OS_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_OFFLINE_PROGRAM_FILES_X86_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

{{ global:REGION }}

us-west-1

$env:EC2RESCUE_S3_BUCKET

{{S3BucketName}}

mybucket

$env:EC2RESCUE_S3_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_ACCOUNT_ID

{{ global:ACCOUNT_ID }}

123456789012

EC2RESCUE_DATE

{{ global:DATE }}

2018-09-07

EC2RESCUE_DATE_TIME

{{ global:DATE_TIME }}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

Percorso di installazione di EC2Rescue per Linux

/usr/local/ec2rl-1.1.3

EC2RESCUE_EXECUTION_ID

{{ automation:EXECUTION_ID }}

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

EC2RESCUE_OFFLINE_DEVICE

Nome del dispositivo offline

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

Dispositivo EBS del volume 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

{{S3BucketName}}

mybucket

EC2RESCUE_S3_PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

Tipo di documento

Automazione di

Proprietario

Amazon

Piattaforme

LinuxmacOS, Windows

Parametri

  • AMIPrefix

    Tipo: String

    Impostazione predefinita: AWSSupport-EC2Rescue

    Descrizione: (facoltativo) prefisso del nome dell'AMI di backup.

  • AutomationAssumeRole

    Tipo: String

    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.

  • CreatePostEC2 RescueBackup

    Tipo: String

    Valori validi: true | false

    Di default: false

    Descrizione: (Facoltativo) Impostalo true per creare un'AMI o InstanceId dopo aver eseguito lo script, prima di avviarlo. L'AMI verrà conservata dopo il completamento dell'automazione. È responsabilità dell'utente proteggere l'accesso all'AMI oppure eliminarla.

  • CreatePreEC2 RescueBackup

    Tipo: String

    Valori validi: true | false

    Di default: false

    Descrizione: (Facoltativo) Impostalo true su per creare un'AMI o InstanceId prima di eseguire lo script. L'AMI verrà conservata dopo il completamento dell'automazione. È responsabilità dell'utente proteggere l'accesso all'AMI oppure eliminarla.

  • EC2 RescueInstanceType

    Tipo: String

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

    Impostazione predefinita: t2.small

    Descrizione: (facoltativo) tipo di istanza EC2 per l'istanza EC2Rescue.

  • InstanceId

    Tipo: String

    Descrizione: (obbligatorio) ID dell'istanza EC2. IMPORTANTE: AWS Systems Manager Automation arresta 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: String

    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: String

    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: String

    Impostazione predefinita: AWSSupport-EC2Rescue

    Descrizione: (facoltativo) prefisso dei log S3.

  • SubnetId

    Tipo: String

    Predefinito: SelectedInstanceSubnet

    Descrizione: (facoltativo) ID sottorete dell'istanza EC2Rescue. Per impostazione predefinita, viene utilizzata la stessa sottorete in cui si trova l'istanza specificata. IMPORTANTE: se fornisci una sottorete personalizzata, questa deve trovarsi nella stessa InstanceId zona di disponibilità e deve consentire l'accesso agli endpoint SSM.

  • UniqueId

    Tipo: String

    Impostazione predefinita: {{ automation:EXECUTION_ID }}

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

Autorizzazioni IAM richieste

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

Si consiglia all'utente che esegue l'automazione di allegare la AutomationRole policy gestita di AmazonSSM IAM. 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- Verificare 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 implementare lo stack EC2Rescue CloudFormation

    2. (Crea un nuovo VPC) - Se * SubnetId = CreateNew VPC*, esegui aws:createStack per implementare 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- Implementazione dello stack EC2Rescue CloudFormation

  6. aws:invokeLambdaFunction- Esegui una convalida dell'input aggiuntiva

  7. aws:executeAwsApi- Aggiornare lo CloudFormation stack EC2Rescue per creare l'istanza helper EC2Rescue

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

  9. aws:executeAwsApi- Descrivere l'output dello CloudFormation stack EC2Rescue per ottenere l'ID dell'istanza di supporto EC2Rescue

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

  11. aws:changeInstanceState- Arresta l'istanza fornita

  12. aws:changeInstanceState- Arresta l'istanza fornita

  13. aws:changeInstanceState- Arresto forzato dell'istanza fornita

  14. aws:assertAwsResourceProperty- Controlla il valore di RescueBackup ingresso CreatePre EC2

    1. (Crea un backup precedente a EC2Rescue) - Se * EC2 = vero* CreatePre RescueBackup

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

    3. aws:createTags- Contrassegna il backup AMI

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

  16. aws:executeAwsApi- Scollegare il volume principale dall'istanza fornita

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

    1. (L'istanza è Windows):

      aws:executeAwsApi- Collega il volume root all'istanza helper EC2Rescue 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 all'istanza helper di EC2Rescue come */dev/sdf*

      aws:sleep- Dormi 10 secondi

      aws:runCommand- Esegui lo script offline fornito in Bash

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

  19. aws:changeInstanceState- Arresto forzato dell'istanza helper EC2Rescue

  20. aws:executeAwsApi- Scollegare il volume principale dall'istanza helper EC2Rescue

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

  22. aws:assertAwsResourceProperty- Controlla il valore di RescueBackup ingresso CreatePost EC2

    1. (Crea un backup post-EC2Rescue) - Se * EC2 = vero* CreatePost RescueBackup

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

    3. aws:createTags- Contrassegna il backup AMI

  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- Eliminare lo stack CloudFormation EC2Rescue

Output

runScriptForUscita Linux

runScriptForWindows. Uscita

preScriptBackup.ImageId

postScriptBackup.ImageId