Contoh: Mendaftarkan tugas dengan jendela pemeliharaan - AWS Systems Manager

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

Contoh: Mendaftarkan tugas dengan jendela pemeliharaan

Anda dapat mendaftarkan tugas di Run Command, alat di AWS Systems Manager, dengan jendela pemeliharaan menggunakan AWS Command Line Interface (AWS CLI), seperti yang ditunjukkan dalam Daftarkan tugas dengan jendela pemeliharaan. Anda juga dapat mendaftarkan tugas untuk alur kerja, AWS Lambda fungsi, dan AWS Step Functions tugas Systems Manager Automation, seperti yang ditunjukkan nanti dalam topik ini.

catatan

Tentukan satu atau lebih target untuk jendela pemeliharaan Run Command-jenis tugas. Bergantung pada tugasnya, target bersifat opsional untuk jenis tugas jendela pemeliharaan lainnya (Otomasi, AWS Lambda, dan AWS Step Functions). Untuk informasi lebih lanjut tentang menjalankan tugas yang tidak menentukan target, lihat Pendaftaran tugas jendela pemeliharaan tanpa target.

Dalam topik ini, kami memberikan contoh penggunaan perintah AWS Command Line Interface (AWS CLI) register-task-with-maintenance-window untuk mendaftarkan masing-masing dari empat jenis tugas yang didukung dengan jendela pemeliharaan. Contoh hanya untuk demonstrasi, tetapi Anda dapat mengubahnya untuk membuat perintah pendaftaran tugas yang berfungsi.

Menggunakan cli-input-json opsi --

Untuk mengelola pilhan tugas Anda dengan lebih baik, Anda dapat menggunakan pilihan perintah --cli-input-json, dengan nilai pilihan direferensikan di file JSON.

Untuk menggunakan sampel konten file JSON yang kami sediakan dalam contoh berikut, lakukan hal berikut pada mesin lokal Anda:

  1. Membuat file dengan nama seperti MyRunCommandTask.json, MyAutomationTask.json, atau nama lainnya yang Anda inginkan.

  2. Salin konten sampel JSON kami ke dalam file.

  3. Ubah konten file untuk pendaftaran tugas Anda, lalu simpan file.

  4. Di direktori yang sama tempat Anda menyimpan file, jalankan perintah berikut. Gantikan nama file Anda untukMyFile.json.

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --cli-input-json file://MyFile.json
    Windows
    aws ssm register-task-with-maintenance-window ^ --cli-input-json file://MyFile.json
Parameter semu dalam tugas jendela pemeliharaan

Dalam beberapa contoh, kami menggunakan parameter pseudo sebagai metode untuk meneruskan informasi ID ke tugas Anda. Misalnya, {{TARGET_ID}} dan {{RESOURCE_ID}} dapat digunakan untuk meneruskan AWS sumber daya ke tugas IDs Automation, Lambda, dan Step Functions. Untuk informasi lebih lanjut tentang parameter semu di konten --task-invocation-parameters, lihat Menggunakan parameter semu saat mendaftarkan tugas jendela pemeliharaan.

Contoh pendaftaran tugas

Bagian berikut menyediakan contoh AWS CLI perintah untuk mendaftarkan jenis tugas yang didukung dan sampel JSON yang dapat digunakan dengan --cli-input-json opsi.

Contoh berikut menunjukkan cara mendaftar Systems Manager Run Command tugas dengan jendela pemeliharaan menggunakan AWS CLI.

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --task-arn "AWS-RunShellScript" \ --max-concurrency 1 --max-errors 1 --priority 10 \ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \ --task-type "RUN_COMMAND" \ --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
Windows
aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --task-arn "AWS-RunShellScript" ^ --max-concurrency 1 --max-errors 1 --priority 10 ^ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^ --task-type "RUN_COMMAND" ^ --task-invocation-parameters "{\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}"

Konten JSON untuk digunakan dengan opsi --cli-input-json file:

{ "TaskType": "RUN_COMMAND", "WindowId": "mw-0c50858d01EXAMPLE", "Description": "My Run Command task to update SSM Agent on an instance", "MaxConcurrency": "1", "MaxErrors": "1", "Name": "My-Run-Command-Task", "Priority": 10, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "AWS-UpdateSSMAgent", "TaskInvocationParameters": { "RunCommand": { "Comment": "A TaskInvocationParameters test comment", "NotificationConfig": { "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name", "NotificationEvents": [ "All" ], "NotificationType": "Invocation" }, "OutputS3BucketName": "amzn-s3-demo-bucket", "OutputS3KeyPrefix": "S3-PREFIX", "TimeoutSeconds": 3600 } } }

Contoh berikut mendemonstrasikan cara untuk mendaftarkan tugas Otomatisasi Systems Manager dengan jendela pemeliharaan menggunakan AWS CLI.

AWS CLI perintah:

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --task-arn "AWS-RestartEC2Instance" \ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \ --task-type AUTOMATION \ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \ --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" \ --description "Automation task to restart EC2 instances"
Windows
aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --task-arn "AWS-RestartEC2Instance" ^ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{TARGET_ID}}'}}" ^ --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" ^ --description "Automation task to restart EC2 instances"

Konten JSON untuk digunakan dengan opsi --cli-input-json file:

{ "WindowId": "mw-0c50858d01EXAMPLE", "TaskArn": "AWS-PatchInstanceWithRollback", "TaskType": "AUTOMATION","TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{RESOURCE_ID}}" ] } } } }

Contoh berikut mendemonstrasikan cara untuk mendaftarkan tugas fungsi Lambda dengan jendela pemeliharaan menggunakan AWS CLI.

Untuk contoh ini, pengguna yang membuat fungsi Lambda menamainya SSMrestart-my-instances dan membuat dua parameter yang disebut instanceId dan targetType.

penting

Kebijakan IAM untuk Maintenance Windows mengharuskan Anda menambahkan awalan SSM ke nama fungsi Lambda (atau alias). Sebelum Anda melanjutkan untuk mendaftarkan jenis tugas ini, perbarui namanya AWS Lambda untuk disertakanSSM. Misalnya, jika nama fungsi Lambda Anda adalah MyLambdaFunction, ubah ke SSMMyLambdaFunction.

AWS CLI perintah:

Linux & macOS
penting

Jika Anda menggunakan versi 2 dari AWS CLI, Anda harus menyertakan opsi --cli-binary-format raw-in-base64-out dalam perintah berikut jika payload Lambda Anda tidak dikodekan base64. cli_binary_formatOpsi ini hanya tersedia di versi 2. Untuk informasi tentang ini dan setelan AWS CLI config file lainnya, lihat Setelan config file yang didukung di Panduan AWS Command Line Interface Pengguna.

aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" \ --description "A description for my LAMBDA example task" --task-type "LAMBDA" \ --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" \ --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}","Qualifier": "$LATEST"}}'
PowerShell
penting

Jika Anda menggunakan versi 2 dari AWS CLI, Anda harus menyertakan opsi --cli-binary-format raw-in-base64-out dalam perintah berikut jika payload Lambda Anda tidak dikodekan base64. cli_binary_formatOpsi ini hanya tersedia di versi 2. Untuk informasi tentang ini dan setelan AWS CLI config file lainnya, lihat Setelan config file yang didukung di Panduan AWS Command Line Interface Pengguna.

aws ssm register-task-with-maintenance-window ` --window-id "mw-0c50858d01EXAMPLE" ` --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ` --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" ` --description "A description for my LAMBDA example task" --task-type "LAMBDA" ` --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" ` --task-invocation-parameters '{\"Lambda\":{\"Payload\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\",\\\"targetType\\\":\\\"{{TARGET_TYPE}}\\\"}\",\"Qualifier\": \"$LATEST\"}}'

Konten JSON untuk digunakan dengan opsi --cli-input-json file:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_RestartMyInstances", "TaskType": "LAMBDA", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "Lambda": { "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE", "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }, "Name": "My-Lambda-Task", "Description": "A description for my LAMBDA task", "Priority": 5 }

Contoh berikut mendemonstrasikan cara untuk mendaftarkan tugas mesin tahapan Step Functions dengan jendela pemeliharaan menggunakan AWS CLI.

catatan

Tugas jendela pemeliharaan hanya mendukung Step Functions Alur kerja mesin status standar. Mereka tidak mendukung alur kerja mesin status Express. Untuk informasi tentang jenis alur kerja mesin status, lihat Alur Kerja Standar vs Ekspres di Panduan PengembangAWS Step Functions .

Untuk contoh ini, pengguna yang membuat mesin tahapan Step Functions membuat mesin tahapan bernama SSMMyStateMachine dengan parameter yang disebut instanceId.

penting

Kebijakan AWS Identity and Access Management (IAM) untuk Maintenance Windows mengharuskan Anda mengawali nama mesin status Step Functions denganSSM. Sebelum melanjutkan untuk mendaftarkan jenis tugas ini, Anda harus memperbarui namanya di AWS Step Functions untuk menyertakan SSM. Misalnya, jika nama mesin tahapan Anda adalah MyStateMachine, ubah ke SSMMyStateMachine.

AWS CLI perintah:

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \ --task-type STEP_FUNCTIONS \ --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}", "Name":"{{INVOCATION_ID}}"}}' \ --priority 0 --max-concurrency 10 --max-errors 5 \ --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
PowerShell
aws ssm register-task-with-maintenance-window ` --window-id "mw-0c50858d01EXAMPLE" ` --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ` --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE ` --task-type STEP_FUNCTIONS ` --task-invocation-parameters '{\"StepFunctions\":{\"Input\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\"}\", \"Name\":\"{{INVOCATION_ID}}\"}}' ` --priority 0 --max-concurrency 10 --max-errors 5 ` --name "My-Step-Functions-Task" --description "A description for my Step Functions task"

Konten JSON untuk digunakan dengan opsi --cli-input-json file:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_MyStateMachine", "TaskType": "STEP_FUNCTIONS", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "StepFunctions": { "Input": "{ \"instanceId\": \"{{TARGET_ID}}\" }", "Name": "{{INVOCATION_ID}}" } }, "Name": "My-Step-Functions-Task", "Description": "A description for my Step Functions task", "Priority": 5 }