

• AWS Systems Manager CloudWatch Dasbor tidak akan lagi tersedia setelah 30 April 2026. Pelanggan dapat terus menggunakan CloudWatch konsol Amazon untuk melihat, membuat, dan mengelola CloudWatch dasbor Amazon mereka, seperti yang mereka lakukan hari ini. Untuk informasi selengkapnya, lihat [dokumentasi CloudWatch Dasbor Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Referensi tindakan Otomatisasi Systems Manager
<a name="automation-actions"></a>

Referensi ini menjelaskan tindakan otomatisasi yang dapat Anda tentukan di runbook Otomatisasi. Otomasi adalah alat dalam AWS Systems Manager. Tindakan ini tidak dapat digunakan dalam dokumen Systems Manager (SSM) jenis yang lain. Untuk informasi tentang plugin untuk jenis dokumen SSM lainnya, lihat [Referensi plugin dokumen perintah](documents-command-ssm-plugin-reference.md).

Otomatisasi Systems Manager menjalankan langkah-langkah yang ditetapkan dalam runbook otomatisasi. Setiap langkah dikaitkan dengan tindakan tertentu. Tindakan menentukan input, perilaku, dan output dari langkah. Langkah-langkah didefinisikan dalam `mainSteps` bagian dari buku runbook Anda.

Anda tidak perlu menentukan output dari suatu tindakan atau langkah. Output yang telah ditentukan oleh tindakan yang terkait dengan langkah. Ketika Anda menentukan input langkah di runbook, Anda dapat referensi satu output atau lebih dari langkah sebelumnya. Misalnya, Anda dapat membuat output dari `aws:runInstances` yang tersedia untuk tindakan berikutnya `aws:runCommand`. Anda juga dapat referensi output dari langkah-langkah sebelumnya di `Output` bagian runbook. 

**penting**  
Jika Anda menjalankan alur kerja otomatisasi yang menjalankan layanan lain dengan menggunakan AWS Identity and Access Management peran layanan (IAM), pastikan bahwa peran layanan harus dikonfigurasi dengan izin untuk menjalankan layanan tersebut. Persyaratan ini berlaku untuk semua runbook AWS Otomasi (`AWS-*`runbook) seperti`AWS-ConfigureS3BucketLogging`,`AWS-CreateDynamoDBBackup`, dan `AWS-RestartEC2Instance` runbook, untuk beberapa nama. Persyaratan ini juga berlaku untuk setiap runbook Otomasi kustom yang Anda buat yang memanggil orang lain Layanan AWS dengan menggunakan tindakan yang memanggil layanan lain. Misalnya, jika Anda menggunakan `aws:executeAwsApi`, `aws:createStack`, atau `aws:copyImage` tindakan, konfigurasikan peran layanan dengan izin untuk menjalankan layanan tersebut. Anda dapat memberikan izin kepada orang lain Layanan AWS dengan menambahkan kebijakan inline IAM ke peran tersebut. Untuk informasi selengkapnya, lihat [(Opsional) Tambahkan kebijakan sebaris Otomasi atau kebijakan terkelola pelanggan untuk memanggil lainnya Layanan AWS](automation-setup-iam.md#add-inline-policy).

**Topics**
+ [Properti dibagi oleh semua tindakan](#automation-common)
+ [`aws:approve` – Jeda otomatisasi untuk persetujuan manual](automation-action-approve.md)
+ [`aws:assertAwsResourceProperty`— Menegaskan status AWS sumber daya atau status acara](automation-action-assertAwsResourceProperty.md)
+ [`aws:branch` – Jalankan langkah-langkah otomatisasi bersyarat](automation-action-branch.md)
+ [`aws:changeInstanceState` – Ubah atau tegaskan status instans](automation-action-changestate.md)
+ [`aws:copyImage` – Salin atau enkripsi Amazon Machine Image](automation-action-copyimage.md)
+ [`aws:createImage` – Buat Amazon machine image (AMI)](automation-action-create.md)
+ [`aws:createStack`— Buat CloudFormation tumpukan](automation-action-createstack.md)
+ [`aws:createTags`— Buat tag untuk AWS sumber daya](automation-action-createtag.md)
+ [`aws:deleteImage` – Hapus Amazon Machine Image](automation-action-delete.md)
+ [`aws:deleteStack`— Hapus CloudFormation tumpukan](automation-action-deletestack.md)
+ [`aws:executeAutomation` – Jalankan otomatisasi lain](automation-action-executeAutomation.md)
+ [`aws:executeAwsApi`— Panggil dan jalankan operasi AWS API](automation-action-executeAwsApi.md)
+ [`aws:executeScript` – Jalankan skrip](automation-action-executeScript.md)
+ [`aws:executeStateMachine`— Jalankan mesin AWS Step Functions negara](automation-action-executeStateMachine.md)
+ [`aws:invokeWebhook`— Memanggil integrasi webhook Otomasi](invoke-webhook.md)
+ [`aws:invokeLambdaFunction`— Memanggil fungsi AWS Lambda](automation-action-lamb.md)
+ [`aws:loop`— Ulangi langkah-langkah dalam otomatisasi](automation-action-loop.md)
+ [`aws:pause` – Jeda otomatisasi](automation-action-pause.md)
+ [`aws:runCommand` – Jalankan perintah pada instans terkelola](automation-action-runcommand.md)
+ [`aws:runInstances` – Luncurkan Instans Amazon EC2](automation-action-runinstance.md)
+ [`aws:sleep` – Menunda otomatisasi](automation-action-sleep.md)
+ [`aws:updateVariable`— Memperbarui nilai untuk variabel runbook](automation-action-update-variable.md)
+ [`aws:waitForAwsResourceProperty`— Tunggu properti AWS sumber daya](automation-action-waitForAwsResourceProperty.md)
+ [Variabel sistem Otomatisasi](automation-variables.md)

## Properti dibagi oleh semua tindakan
<a name="automation-common"></a>

Sifat umum adalah parameter atau opsi yang ditemukan di semua tindakan. Beberapa pilihan menentukan perilaku untuk langkah, seperti berapa lama menunggu langkah selesai dan apa yang harus dilakukan jika langkah gagal. Properti berikut umum untuk semua tindakan.

[description](#descriptProp)  
Informasi yang Anda berikan untuk menggambarkan tujuan runbook atau langkah.  
Tipe: String  
Wajib: Tidak

[name](#nameProp)  
Pengenal yang harus unik di semua nama langkah di runbook.  
Tipe: String  
Pola yang diizinkan: [A-za-Z0-9\$1] \$1\$1  
Wajib: Ya

[action](#actProp)  
Nama tindakan langkah adalah untuk menjalankan. [`aws:runCommand` – Jalankan perintah pada instans terkelola](automation-action-runcommand.md) adalah contoh dari tindakan yang dapat Anda tentukan di sini. Dokumen ini memberikan informasi mendetail tentang semua tindakan yang tersedia.  
Jenis: String  
Wajib: Ya

[maxAttempts](#maxProp)  
Berapa kali langkah harus dicoba lagi jika terjadi kegagalan. Jika nilai lebih besar dari 1, langkah tidak dianggap gagal sampai semua upaya coba lagi telah gagal. Nilai default adalah 1.  
Jenis: Bilangan bulat  
Wajib: Tidak

[timeoutSeconds](#timeProp)  
Nilai batas waktu untuk langkah. Jika batas waktu tercapai dan nilai `maxAttempts` lebih besar dari 1, maka langkah ini tidak dianggap kedaluwarsa sampai semua percobaan telah dicoba.  
Jenis: Bilangan bulat  
Wajib: Tidak

[onFailure](#failProp)  
Menunjukkan apakah otomatisasi harus berhenti, melanjutkan, atau meneruskan ke langkah yang berbeda pada kegagalan. Nilai default untuk opsi ini adalah batalkan.  
Tipe: String  
Nilai yang valid: Batalkan \$1 Lanjutkan \$1 langkah: *step\$1name*  
Wajib: Tidak

[onCancel](#canProp)  
Menunjukkan langkah mana yang harus dilakukan otomatisasi jika pengguna membatalkan otomatisasi. Otomatisasi menjalankan alur kerja pembatalan untuk maksimal dua menit.  
Tipe: String  
Nilai yang valid: Batalkan \$1 langkah: *step\$1name*  
Wajib: Tidak  
Properti `onCancel` tidak mendukung pindah ke tindakan berikut:  
+ `aws:approve`
+ `aws:copyImage`
+ `aws:createImage`
+ `aws:createStack`
+ `aws:createTags`
+ `aws:loop`
+ `aws:pause`
+ `aws:runInstances`
+ `aws:sleep`

[isEnd](#endProp)  
Opsi ini menghentikan otomatisasi pada akhir langkah tertentu. Otomatisasi berhenti jika langkah gagal atau berhasil. Nilai default salah.  
Jenis: Boolean  
Nilai yang valid: benar/salah  
Wajib: Tidak

[nextStep](#nextProp)  
Menentukan langkah mana dalam otomatisasi yang harus diproses setelah berhasil menyelesaikan langkah.  
Jenis: String  
Wajib: Tidak

[isCritical](#critProp)  
Menunjuk langkah sebagai kepentingan untuk berhasil menyelesaikan otomatisasi. Jika langkah dengan penunjukan ini gagal, maka otomatisasi melaporkan status akhir otomatisasi sebagai gagal. Properti ini hanya dievaluasi jika Anda secara eksplisit mendefinisikannya dalam langkah Anda. Jika `onFailure` properti diatur ke `Continue` dalam langkah, nilai default diatur ke salah. Jika tidak, nilai default untuk opsi ini adalah benar.  
Jenis: Boolean  
Nilai yang valid: benar/salah  
Wajib: Tidak

[inputs](#inProp)  
Sifat khusus tindakan.  
Jenis: Peta  
Wajib: Ya

### Contoh
<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 }}"
```