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
Referensi ini menjelaskan tindakan otomatisasi yang dapat Anda tentukan di runbook Otomatisasi. Otomatisasi adalah kemampuan 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.
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 AWS Runbook otomatisasi (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.
Topik
- Properti dibagi oleh semua tindakan
- aws:approve – Jeda otomatisasi untuk persetujuan manual
- aws:assertAwsResourceProperty— Menegaskan status AWS sumber daya atau status acara
- aws:branch – Jalankan langkah-langkah otomatisasi bersyarat
- aws:changeInstanceState – Ubah atau tegaskan status instans
- aws:copyImage – Salin atau enkripsi Amazon Machine Image
- aws:createImage – Buat Amazon machine image (AMI)
- aws:createStack— Buat AWS CloudFormation tumpukan
- aws:createTags – Buat tag untuk AWS sumber daya
- aws:deleteImage – Hapus Amazon Machine Image
- aws:deleteStack – Hapus AWS CloudFormation tumpukan
- aws:executeAutomation – Jalankan otomatisasi lain
- aws:executeAwsApi— Panggil dan jalankan AWS API operasi
- aws:executeScript – Jalankan skrip
- aws:executeStateMachine – Jalankan AWS Step Functions mesin status
- aws:invokeWebhook- Memanggil integrasi webhook Otomasi
- aws:invokeLambdaFunction – Jalankan AWS Lambda fungsi
- aws:loop— Ulangi langkah-langkah dalam otomatisasi
- aws:pause – Jeda otomatisasi
- aws:runCommand – Jalankan perintah pada instans terkelola
- aws:runInstances – Luncurkan Instans Amazon EC2
- aws:sleep – Menunda otomatisasi
- aws:updateVariable— Memperbarui nilai untuk variabel runbook
- aws:waitForAwsResourceProperty – Tunggu di AWS properti sumber daya
- Variabel sistem Otomatisasi
Properti dibagi oleh semua tindakan
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
-
Informasi yang Anda berikan untuk menggambarkan tujuan runbook atau langkah.
Tipe: String
Wajib: Tidak
- name
-
Pengenal yang harus unik di semua nama langkah di runbook.
Jenis: String
Pola yang diizinkan: [A-za-Z0-9_] +$
Wajib: Ya
- action
-
Nama tindakan langkah adalah untuk menjalankan. aws:runCommand – Jalankan perintah pada instans terkelola 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
-
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
-
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
-
Menunjukkan apakah otomatisasi harus berhenti, melanjutkan, atau meneruskan ke langkah yang berbeda pada kegagalan. Nilai default untuk opsi ini adalah batalkan.
Jenis: String
Nilai yang valid: Batalkan | Lanjutkan | langkah:
step_name
Wajib: Tidak
- onCancel
-
Menunjukkan langkah mana yang harus dilakukan otomatisasi jika pengguna membatalkan otomatisasi. Otomatisasi menjalankan alur kerja pembatalan untuk maksimal dua menit.
Jenis: String
Nilai yang valid: Batalkan | langkah:
step_name
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
-
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
-
Menentukan langkah mana dalam otomatisasi yang harus diproses setelah berhasil menyelesaikan langkah.
Jenis: String
Wajib: Tidak
- isCritical
-
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 keContinue
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
-
Sifat khusus tindakan.
Jenis: Peta
Wajib: Ya
Contoh
--- 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 }}"