Jalankan tugas AWS Systems Manager Automation secara sinkron dari AWS Step Functions - AWS Prescriptive Guidance

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

Jalankan tugas AWS Systems Manager Automation secara sinkron dari AWS Step Functions

Elie El khoury, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara berintegrasi AWS Step Functions dengan AWS Systems Manager. Ini menggunakan integrasi layanan AWS SDK untuk memanggil Systems Manager startAutomationExecutionAPI dengan token tugas dari alur kerja mesin status, dan berhenti sampai token kembali dengan panggilan sukses atau gagal. Untuk mendemonstrasikan integrasi, pola ini mengimplementasikan pembungkus dokumen Otomasi (runbook) di sekitar AWS-RunPowerShellScript dokumen AWS-RunShellScript atau, dan digunakan .waitForTaskToken untuk memanggil atau secara sinkron. AWS-RunShellScript AWS-RunPowerShellScript Untuk informasi selengkapnya tentang integrasi layanan AWS SDK di Step Functions, lihat Panduan AWS Step Functions Pengembang.

Step Functions adalah layanan alur kerja visual dengan kode rendah yang dapat Anda gunakan untuk membangun aplikasi terdistribusi, mengotomatiskan proses TI dan bisnis, serta membangun jalur data dan pembelajaran mesin dengan menggunakan layanan. AWS Alur kerja mengelola kegagalan, percobaan ulang, paralelisasi, integrasi layanan, dan observabilitas sehingga Anda dapat fokus pada logika bisnis bernilai lebih tinggi.

Otomatisasi, kemampuan AWS Systems Manager, menyederhanakan tugas pemeliharaan, penyebaran, dan remediasi umum Layanan AWS seperti Amazon Elastic Compute Cloud (Amazon), Amazon Relational Database Service (Amazon RDS EC2), Amazon Redshift, dan Amazon Simple Storage Service (Amazon S3). Otomasi memberi Anda kontrol terperinci atas konkurensi otomatisasi Anda. Misalnya, Anda dapat menentukan berapa banyak sumber daya yang akan ditargetkan secara bersamaan, dan berapa banyak kesalahan yang dapat terjadi sebelum otomatisasi dihentikan.

Untuk detail implementasi, termasuk langkah runbook, parameter, dan contoh, lihat bagian Informasi tambahan.

Prasyarat dan batasan

Prasyarat

  • AWS Akun aktif

  • AWS Identity and Access Management Izin (IAM) untuk mengakses Step Functions dan Systems Manager

  • Sebuah EC2 instance dengan Systems Manager Agent (SSM Agent) diinstal pada instance

  • Profil instans IAM untuk Systems Manager yang dilampirkan ke instance tempat Anda berencana menjalankan runbook

  • Peran Step Functions yang memiliki izin IAM berikut (yang mengikuti prinsip hak istimewa terkecil):

{ "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": "*" }

Versi produk

  • Skema dokumen SSM versi 0.3 atau yang lebih baru

  • Agen SSM versi 2.3.672.0 atau yang lebih baru

Arsitektur

Tumpukan teknologi target

  • AWS Step Functions

  • AWS Systems Manager Otomasi

Arsitektur target

Arsitektur untuk menjalankan tugas otomatisasi Systems Manager secara sinkron dari Step Functions

Otomatisasi dan skala

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Step Functionsadalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan AWS Lambda fungsi dan lainnya Layanan AWS untuk membangun aplikasi bisnis yang penting.

  • AWS Systems Managermembantu Anda mengelola aplikasi dan infrastruktur yang berjalan di AWS Cloud. Ini menyederhanakan aplikasi dan manajemen sumber daya, mempersingkat waktu untuk mendeteksi dan menyelesaikan masalah operasional, dan membantu Anda mengelola AWS sumber daya Anda dengan aman dalam skala besar.

Kode

Kode untuk pola ini tersedia di repositori implementasi GitHub Step Functions dan Systems Manager

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Unduh CloudFormation template.

Unduh ssm-automation-documents.cfn.json templat dari cloudformation  folder GitHub repositori.

AWS DevOps

Buat runbook.

Masuk ke AWS Management Console, buka AWS CloudFormation konsol, dan terapkan template. Untuk informasi selengkapnya tentang penerapan CloudFormation templat, lihat Membuat tumpukan di AWS CloudFormation konsol dalam CloudFormation dokumentasi. 

CloudFormation Template menyebarkan tiga sumber daya:

  • SfnRunCommandByInstanceIds— Runbook yang memungkinkan Anda menjalankan AWS-RunShellScript atau AWS-RunPowerShellScript dengan menggunakan instance IDs.

  • SfnRunCommandByTargets— Runbook yang memungkinkan Anda menjalankan AWS-RunShellScript atau AWS-RunPowerShellScript dengan menggunakan target.

  • SSMSyncRole— Peran IAM diasumsikan oleh runbook.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat mesin status uji.

Ikuti petunjuk di Panduan AWS Step Functions Pengembang untuk membuat dan menjalankan mesin status. Untuk definisi, gunakan kode berikut. Pastikan untuk memperbarui InstanceIds nilai dengan ID instance Systems Manager-enabled yang valid di akun Anda.

{ "Comment": "A description of my state machine", "StartAt": "StartAutomationWaitForCallBack", "States": { "StartAutomationWaitForCallBack": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:ssm:startAutomationExecution.waitForTaskToken", "Parameters": { "DocumentName": "SfnRunCommandByInstanceIds", "Parameters": { "InstanceIds": [ "i-1234567890abcdef0" ], "taskToken.$": "States.Array($$.Task.Token)", "workingDirectory": [ "/home/ssm-user/" ], "Commands": [ "echo \"This is a test running automation waitForTaskToken\" >> automation.log", "sleep 100" ], "executionTimeout": [ "10800" ], "deliveryTimeout": [ "30" ], "shell": [ "Shell" ] } }, "End": true } } }

Kode ini memanggil runbook untuk menjalankan dua perintah yang mendemonstrasikan waitForTaskToken panggilan ke Systems Manager Automation.

Nilai shell parameter (ShellatauPowerShell) menentukan apakah dokumen Otomasi berjalan AWS-RunShellScript atauAWS-RunPowerShellScript.

Tugas menulis “Ini adalah pengujian yang menjalankan waitForTask Token otomatisasi” ke dalam /home/ssm-user/automation.log file, dan kemudian tidur selama 100 detik sebelum merespons dengan token tugas dan melepaskan tugas berikutnya dalam alur kerja.

Jika Anda ingin memanggil SfnRunCommandByTargets runbook sebagai gantinya, ganti Parameters bagian dari kode sebelumnya dengan yang berikut:

"Parameters": { "Targets": [ { "Key": "InstanceIds", "Values": [ "i-02573cafcfEXAMPLE", "i-0471e04240EXAMPLE" ] } ],
AWS DevOps

Perbarui peran IAM untuk mesin status.

Langkah sebelumnya secara otomatis membuat peran IAM khusus untuk mesin status. Namun, itu tidak memberikan izin untuk memanggil runbook. Perbarui peran dengan menambahkan izin berikut:

{ "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": "*" }
AWS DevOps

Validasi panggilan sinkron.

Jalankan state machine untuk memvalidasi panggilan sinkron antara Step Functions dan Systems Manager Automation. 

Untuk keluaran sampel, lihat bagian Informasi tambahan

AWS DevOps

Sumber daya terkait

Informasi tambahan

Detail implementasi

Pola ini menyediakan CloudFormation template yang menyebarkan dua runbook Systems Manager:

  • SfnRunCommandByInstanceIdsmenjalankan AWS-RunPowerShellScript perintah AWS-RunShellScript or dengan menggunakan instance IDs.

  • SfnRunCommandByTargetsmenjalankan AWS-RunPowerShellScript perintah AWS-RunShellScript or dengan menggunakan target.

Setiap runbook mengimplementasikan empat langkah untuk mencapai panggilan sinkron saat menggunakan .waitForTaskToken opsi di Step Functions.

Langkah

Tindakan

Deskripsi

1

Branch

Memeriksa nilai shell parameter (ShellatauPowerShell) untuk memutuskan apakah akan dijalankan AWS-RunShellScript untuk Linux atau AWS-RunPowerShellScript untuk Windows.

2

RunCommand_Shell atau RunCommand_PowerShell

Mengambil beberapa input dan menjalankan RunPowerShellScript perintah RunShellScript atau. Untuk informasi selengkapnya, periksa tab Detail untuk dokumen RunCommand_PowerShell Otomatisasi RunCommand_Shell atau di konsol Systems Manager.

3

SendTaskFailure

Berjalan saat langkah 2 dibatalkan atau dibatalkan. Ini memanggil Step Functions send_task_failure API, yang menerima tiga parameter sebagai input: token yang dilewatkan oleh mesin status, kesalahan kegagalan, dan deskripsi penyebab kegagalan.

4

SendTaskSuccess

Berjalan ketika langkah 2 berhasil. Ini memanggil Step Functions send_task_success API, yang menerima token yang diteruskan oleh mesin status sebagai input.

Parameter buku runbook

SfnRunCommandByInstanceIdsbuku runbook:

Nama parameter

Tipe

Opsional atau diperlukan

Deskripsi

shell

String

Wajib

Contoh shell untuk memutuskan apakah akan dijalankan AWS-RunShellScript untuk Linux atau AWS-RunPowerShellScript untuk Windows.

deliveryTimeout

Bilangan Bulat

Opsional

Waktu, dalam hitungan detik, untuk menunggu perintah dikirim ke Agen SSM pada sebuah instance. Parameter ini memiliki nilai minimum 30 (0,5 menit) dan nilai maksimum 2592000 (720 jam).

executionTimeout

String

Opsional

Waktu, dalam hitungan detik, untuk menyelesaikan perintah sebelum dianggap gagal. Nilai defaultnya adalah 3600 (1 jam). Nilai maksimum adalah 172800 (48 jam).

workingDirectory

String

Opsional

Jalur direktori kerja pada instans Anda.

Commands

StringList

Wajib

Skrip shell atau perintah untuk dijalankan.

InstanceIds

StringList

Wajib

IDs Contoh di mana Anda ingin menjalankan perintah.

taskToken

String

Wajib

Token tugas yang akan digunakan untuk respons callback.

SfnRunCommandByTargetsbuku runbook:

Nama

Tipe

Opsional atau diperlukan

Deskripsi

shell

String

Wajib

Contoh shell untuk memutuskan apakah akan dijalankan AWS-RunShellScript untuk Linux atau AWS-RunPowerShellScript untuk Windows.

deliveryTimeout

Bilangan Bulat

Opsional

Waktu, dalam hitungan detik, untuk menunggu perintah dikirim ke Agen SSM pada sebuah instance. Parameter ini memiliki nilai minimum 30 (0,5 menit) dan nilai maksimum 2592000 (720 jam).

executionTimeout

Bilangan Bulat

Opsional

Waktu, dalam hitungan detik, untuk menyelesaikan perintah sebelum dianggap gagal. Nilai defaultnya adalah 3600 (1 jam). Nilai maksimum adalah 172800 (48 jam).

workingDirectory

String

Opsional

Jalur direktori kerja pada instans Anda.

Commands

StringList

Wajib

Skrip shell atau perintah untuk dijalankan.

Targets

MapList

Wajib

Array kriteria pencarian yang mengidentifikasi instance dengan menggunakan pasangan kunci-nilai yang Anda tentukan. Misalnya: [{"Key":"InstanceIds","Values":["i-02573cafcfEXAMPLE","i-0471e04240EXAMPLE"]}]

taskToken

String

Wajib

Token tugas yang akan digunakan untuk respons callback.

Keluaran sampel

Tabel berikut memberikan output sampel dari fungsi langkah. Ini menunjukkan bahwa total waktu berjalan lebih dari 100 detik antara langkah 5 (TaskSubmitted) dan langkah 6 (TaskSucceeded). Ini menunjukkan bahwa fungsi langkah menunggu sleep 100 perintah selesai sebelum pindah ke tugas berikutnya dalam alur kerja.

ID

Tipe

Langkah

Sumber Daya

Waktu Berlalu (ms)

Stempel Waktu

1

ExecutionStarted

-

0

11 Mar 2022 02:50:34.303

2

TaskStateEntered

StartAutomationWaitForCallBack

-

40

11 Mar 2022 02:50:34.343

3

TaskScheduled

StartAutomationWaitForCallBack

-

40

11 Mar 2022 02:50:34.343

4

TaskStarted

StartAutomationWaitForCallBack

-

154

11 Mar 2022 02:50:34.457

5

TaskSubmitted

StartAutomationWaitForCallBack

-

657

11 Mar 2022 02:50:34.960

6

TaskSucceeded

StartAutomationWaitForCallBack

-

103835

11 Mar 2022 02:52:18.138

7

TaskStateExited

StartAutomationWaitForCallBack

-

103860

11 Mar 2022 02:52:18.163

8

ExecutionSucceeded

-

103897

11 Mar 2022 02:52:18.200