

• O AWS Systems Manager CloudWatch Dashboard não estará mais disponível a partir de 30 de abril de 2026. Os clientes podem continuar usando o console do Amazon CloudWatch para visualizar, criar e gerenciar os painéis do Amazon CloudWatch exatamente como fazem hoje. Para obter mais informações, consulte a [documentação do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# Referência de ações do Systems Manager Automation
<a name="automation-actions"></a>

Essa referência descreve as ações do Automation que você pode especificar em um runbook do Automation. O Automation é uma ferramenta do AWS Systems Manager. Essas ações não podem ser usadas em outros tipos de documentos do Systems Manager (SSM). Para obter informações sobre plugins para outros tipos de documento do SSM, consulte [Referência de plug-ins de documentos de comando](documents-command-ssm-plugin-reference.md).

O Systems Manager Automation executa as etapas definidas em runbooks de automação. Cada etapa está associada a uma ação específica. A ação determina as entradas, o comportamento e as saídas da etapa. As etapas são definidas na seção `mainSteps` do seu runbook.

Não é necessário especificar as saídas de uma ação ou etapa. As saídas são predeterminadas pela ação associada à etapa. Quando você especifica entradas de etapa em seus runbooks, você pode fazer referência a um ou mais resultados de uma etapa anterior. Por exemplo, você pode disponibilizar a saída de `aws:runInstances` para uma ação `aws:runCommand` subsequente. Você também pode referenciar resultados de etapas anteriores na seção `Output` do runbook. 

**Importante**  
Se você executar um fluxo de trabalho de automação que chama outros serviços usando uma função de serviço do AWS Identity and Access Management (IAM), esteja ciente de que esta função deve ser configurada com permissão para chamar esses serviços. Esse requisito aplica-se a todos os runbooks do Automation da AWS (runbooks da `AWS-*`), como os runbooks `AWS-ConfigureS3BucketLogging`, `AWS-CreateDynamoDBBackup` e `AWS-RestartEC2Instance`, entre outros. Esse requisito também se aplica a todos os runbooks personalizados do Automation criados que invoquem outros Serviços da AWS, usando ações que chamam outros serviços. Por exemplo, se você usar as ações `aws:executeAwsApi`, `aws:createStack` ou `aws:copyImage`, configure a função de serviço com permissão para invocar esses serviços. É possível habilitar permissões para outros Serviços da AWS, adicionando uma política em linha do IAM à função. Para obter mais informações, consulte [(Opcional) Adicione uma política em linha ou uma política gerenciada pelo cliente para invocar outros Serviços da AWS](automation-setup-iam.md#add-inline-policy).

**Topics**
+ [Propriedades compartilhadas por todas as ações](#automation-common)
+ [`aws:approve` – Pausa uma automação para aprovação manual](automation-action-approve.md)
+ [`aws:assertAwsResourceProperty`: define um estado do recurso da AWS ou o estado do evento](automation-action-assertAwsResourceProperty.md)
+ [`aws:branch` – Executa etapas de automação condicionais](automation-action-branch.md)
+ [`aws:changeInstanceState`: altera ou declara o estado da instância](automation-action-changestate.md)
+ [`aws:copyImage` – copia ou criptografa um Amazon Machine Image](automation-action-copyimage.md)
+ [`aws:createImage`: cria uma imagem de máquina da Amazon](automation-action-create.md)
+ [`aws:createStack`: cria uma pilha do CloudFormation](automation-action-createstack.md)
+ [`aws:createTags`: cria tags para os recursos da AWS](automation-action-createtag.md)
+ [`aws:deleteImage`: exclui uma Imagem de máquina da Amazon](automation-action-delete.md)
+ [`aws:deleteStack`: exclui uma pilha do CloudFormation](automation-action-deletestack.md)
+ [`aws:executeAutomation` – Executa outra automação](automation-action-executeAutomation.md)
+ [`aws:executeAwsApi`: chama e executa as operações de API do AWS](automation-action-executeAwsApi.md)
+ [`aws:executeScript` – Executa um script](automation-action-executeScript.md)
+ [`aws:executeStateMachine` – Executa uma máquina de estado do AWS Step Functions](automation-action-executeStateMachine.md)
+ [`aws:invokeWebhook` — Invoque uma integração de webhook do Automation](invoke-webhook.md)
+ [`aws:invokeLambdaFunction` – Invoca uma função do AWS Lambda](automation-action-lamb.md)
+ [`aws:loop`: itera nas etapas de uma automação](automation-action-loop.md)
+ [`aws:pause` – Pausa uma automação](automation-action-pause.md)
+ [`aws:runCommand` – Executa um comando em uma instância gerenciada](automation-action-runcommand.md)
+ [`aws:runInstances` – Executa uma instância do Amazon EC2](automation-action-runinstance.md)
+ [`aws:sleep`: atrasa uma automação](automation-action-sleep.md)
+ [`aws:updateVariable`: atualiza um valor para uma variável do runbook](automation-action-update-variable.md)
+ [`aws:waitForAwsResourceProperty`: aguarde uma propriedade de recurso da AWS](automation-action-waitForAwsResourceProperty.md)
+ [Variáveis de sistema de automação](automation-variables.md)

## Propriedades compartilhadas por todas as ações
<a name="automation-common"></a>

Propriedades comuns são parâmetros ou opções encontradas em todas as ações. Algumas opções definem o comportamento para uma etapa, como o tempo de espera para que uma etapa seja concluída e o que fazer se a etapa falhar. As seguintes propriedades são comuns a todas as ações.

[description](#descriptProp)  
Informações que você fornece para descrever a finalidade de um runbook ou de uma etapa.  
Tipo: String  
Obrigatório: Não

[name](#nameProp)  
Um identificador que deve ser exclusivo em todos os nomes de etapas do runbook.  
Tipo: String  
Padrão permitido: [a-zA-Z0-9\$1]\$1\$1  
Obrigatório: Sim

[action](#actProp)  
O nome da ação que a etapa deve executar. [`aws:runCommand` – Executa um comando em uma instância gerenciada](automation-action-runcommand.md) é um exemplo de uma ação que você pode especificar aqui. Esse documento fornece informações detalhadas sobre todas as ações disponíveis.  
Tipo: string  
Obrigatório: sim

[maxAttempts](#maxProp)  
Quantas vezes a etapa deve ser repetida em caso de falha. Se o valor for maior que 1, a etapa não será considerada falha até que todas as novas tentativas tenham falhado. O valor padrão é 1.  
Tipo: inteiro  
Obrigatório: não

[timeoutSeconds](#timeProp)  
O valor de tempo limite para a etapa. Se o tempo limite for atingido, e o valor de `maxAttempts` for maior que 1, a etapa não será considerada expirada até que todas as novas tentativas tenham sido feitas.  
Tipo: inteiro  
Obrigatório: Não

[onFailure](#failProp)  
Indica se a automação deve ser interrompida, se deve continuar ou seguir para outra etapa, no caso de falha. O valor padrão desta opção é anular.  
Tipo: String  
Valores válidos: Anular \$1 Continuar \$1 etapa:*step\$1name*  
Obrigatório: Não

[onCancel](#canProp)  
Indica para qual etapa a automação deve passar no caso de um usuário cancelar a automação. A automação executa o fluxo de trabalho de cancelamento por um máximo de dois minutos.  
Tipo: String  
Valores válidos: Abort \$1 step:*step\$1name*  
Obrigatório: Não  
A propriedade `onCancel` não oferece suporte para mover para as seguintes ações:  
+ `aws:approve`
+ `aws:copyImage`
+ `aws:createImage`
+ `aws:createStack`
+ `aws:createTags`
+ `aws:loop`
+ `aws:pause`
+ `aws:runInstances`
+ `aws:sleep`

[isEnd](#endProp)  
Essa opção interrompe automação no final de determinada etapa. A automação é interrompida se a execução da etapa falhar ou for bem-sucedida. O valor padrão é falso.  
Tipo: booliano  
Valores válidos: verdadeiro \$1 falso  
Obrigatório: Não

[nextStep](#nextProp)  
Especifica qual etapa de uma automação deve ser processada imediatamente após a conclusão bem-sucedida de uma etapa.  
Tipo: String  
Obrigatório: Não

[isCritical](#critProp)  
Designa uma etapa como essencial para a conclusão bem sucedida da automação. Se uma etapa com essa designação falhar, a automação relatará o status final do Automation como Failed (com falha). Essa propriedade só será avaliada se você a definir explicitamente em sua etapa. Se o a propriedade `onFailure` for definida como `Continue` em uma etapa, o valor padrão será falso. Caso contrário, valor padrão desta opção é verdadeiro.  
Tipo: booliano  
Valores válidos: verdadeiro \$1 falso  
Obrigatório: Não

[inputs](#inProp)  
As propriedades específicas da ação.  
Tipo: mapa  
Obrigatório: sim

### Exemplo
<a name="automation-demo"></a>

```
---
description: "Custom Automation Example"
schemaVersion: '0.3'
assumeRole: "{{ AutomationAssumeRole }}"
parameters:
  AutomationAssumeRole:
    type: String
    description: "(Required) The ARN of the role that allows Automation to perform
      the actions on your behalf. If no role is specified, Systems Manager Automation
      uses your IAM permissions to run this runbook."
    default: ''
  InstanceId:
      type: String
      description: "(Required) The Instance Id whose root EBS volume you want to restore the latest Snapshot."
      default: ''
mainSteps:
- name: getInstanceDetails
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeInstances
    InstanceIds:
    - "{{ InstanceId }}"
  outputs:
    - Name: availabilityZone
      Selector: "$.Reservations[0].Instances[0].Placement.AvailabilityZone"
      Type: String
    - Name: rootDeviceName
      Selector: "$.Reservations[0].Instances[0].RootDeviceName"
      Type: String
  nextStep: getRootVolumeId
- name: getRootVolumeId
  action: aws:executeAwsApi
  maxAttempts: 3
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeVolumes
    Filters:
    -  Name: attachment.device
       Values: ["{{ getInstanceDetails.rootDeviceName }}"]
    -  Name: attachment.instance-id
       Values: ["{{ InstanceId }}"]
  outputs:
    - Name: rootVolumeId
      Selector: "$.Volumes[0].VolumeId"
      Type: String
  nextStep: getSnapshotsByStartTime
- name: getSnapshotsByStartTime
  action: aws:executeScript
  timeoutSeconds: 45
  onFailure: Abort
  inputs:
    Runtime: python3.8
    Handler: getSnapshotsByStartTime
    InputPayload:
      rootVolumeId : "{{ getRootVolumeId.rootVolumeId }}"
    Script: |-
      def getSnapshotsByStartTime(events,context):
        import boto3

        #Initialize client
        ec2 = boto3.client('ec2')
        rootVolumeId = events['rootVolumeId']
        snapshotsQuery = ec2.describe_snapshots(
          Filters=[
            {
              "Name": "volume-id",
              "Values": [rootVolumeId]
            }
          ]
        )
        if not snapshotsQuery['Snapshots']:
          noSnapshotFoundString = "NoSnapshotFound"
          return { 'noSnapshotFound' : noSnapshotFoundString }
        else:
          jsonSnapshots = snapshotsQuery['Snapshots']
          sortedSnapshots = sorted(jsonSnapshots, key=lambda k: k['StartTime'], reverse=True)
          latestSortedSnapshotId = sortedSnapshots[0]['SnapshotId']
          return { 'latestSnapshotId' : latestSortedSnapshotId }
  outputs:
  - Name: Payload
    Selector: $.Payload
    Type: StringMap
  - Name: latestSnapshotId
    Selector: $.Payload.latestSnapshotId
    Type: String
  - Name: noSnapshotFound
    Selector: $.Payload.noSnapshotFound
    Type: String 
  nextStep: branchFromResults
- name: branchFromResults
  action: aws:branch
  onFailure: Abort
  onCancel: step:startInstance
  inputs:
    Choices:
    - NextStep: createNewRootVolumeFromSnapshot
      Not:
        Variable: "{{ getSnapshotsByStartTime.noSnapshotFound }}"
        StringEquals: "NoSnapshotFound"
  isEnd: true
- name: createNewRootVolumeFromSnapshot
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: CreateVolume
    AvailabilityZone: "{{ getInstanceDetails.availabilityZone }}"
    SnapshotId: "{{ getSnapshotsByStartTime.latestSnapshotId }}"
  outputs:
    - Name: newRootVolumeId
      Selector: "$.VolumeId"
      Type: String
  nextStep: stopInstance
- name: stopInstance
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: StopInstances
    InstanceIds:
    - "{{ InstanceId }}"
  nextStep: verifyVolumeAvailability
- name: verifyVolumeAvailability
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 120
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
    PropertySelector: "$.Volumes[0].State"
    DesiredValues:
    - "available"
  nextStep: verifyInstanceStopped
- name: verifyInstanceStopped
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 120
  inputs:
    Service: ec2
    Api: DescribeInstances
    InstanceIds:
    - "{{ InstanceId }}"
    PropertySelector: "$.Reservations[0].Instances[0].State.Name"
    DesiredValues:
    - "stopped"
  nextStep: detachRootVolume
- name: detachRootVolume
  action: aws:executeAwsApi
  onFailure: Abort
  isCritical: true
  inputs:
    Service: ec2
    Api: DetachVolume
    VolumeId: "{{ getRootVolumeId.rootVolumeId }}"
  nextStep: verifyRootVolumeDetached
- name: verifyRootVolumeDetached
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 30
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ getRootVolumeId.rootVolumeId }}"
    PropertySelector: "$.Volumes[0].State"
    DesiredValues:
    - "available"
  nextStep: attachNewRootVolume
- name: attachNewRootVolume
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: AttachVolume
    Device: "{{ getInstanceDetails.rootDeviceName }}"
    InstanceId: "{{ InstanceId }}"
    VolumeId: "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
  nextStep: verifyNewRootVolumeAttached
- name: verifyNewRootVolumeAttached
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 30
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
    PropertySelector: "$.Volumes[0].Attachments[0].State"
    DesiredValues:
    - "attached"
  nextStep: startInstance
- name: startInstance
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: StartInstances
    InstanceIds:
    - "{{ InstanceId }}"
```