Bekerja dengan parameter menggunakan Run Command perintah - AWS Systems Manager

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

Bekerja dengan parameter menggunakan Run Command perintah

Anda dapat bekerja dengan parameter diRun Command, kemampuan AWS Systems Manager. Untuk informasi selengkapnya, lihat AWS Systems Manager Run Command.

Menjalankan parameter String (konsol)

Prosedur berikut memandu Anda melalui proses menjalankan perintah yang menggunakan parameter String.

Untuk menjalankan parameter String menggunakan Parameter Store
  1. Buka AWS Systems Manager konsol di https://console.aws.amazon.com/systems-manager/.

  2. Di panel navigasi, pilih Run Command.

  3. Pilih Jalankan perintah.

  4. Di daftar Dokumen perintah, pilih AWS-RunPowerShellScript (Windows) atau AWS-RunShellScript (Linux).

  5. Untuk Parameter perintah, masukkan echo {{ssm:parameter-name}}. Sebagai contoh: echo {{ssm:/Test/helloWorld}}.

  6. Di bagian Target, pilih node terkelola tempat Anda ingin menjalankan operasi ini dengan menentukan tag, memilih instance atau perangkat tepi secara manual, atau menentukan grup sumber daya.

    Tip

    Jika node terkelola yang Anda harapkan tidak terdaftar, lihat Memecahkan masalah ketersediaan node terkelola untuk tips pemecahan masalah.

  7. Untuk Parameter lainnya:

    • Untuk Komentar, ketik informasi tentang perintah ini.

    • Untuk Waktu habis (detik), tentukan jumlah detik untuk menunggu sistem sebelum gagal menjalankan perintah keseluruhan.

  8. Untuk Pengendalian rate:

    • Untuk Konkurensi, tentukan jumlah atau persentase dari simpul terkelola untuk menjalankan perintah pada saat yang sama.

      catatan

      Jika Anda memilih target dengan menentukan tag yang diterapkan pada node terkelola atau dengan menentukan grup AWS sumber daya, dan Anda tidak yakin berapa banyak node terkelola yang ditargetkan, maka batasi jumlah target yang dapat menjalankan dokumen pada saat yang sama dengan menentukan persentase.

    • Untuk Ambang kesalahan, tentukan kapan harus berhenti menjalankan perintah pada simpul terkelola lain setelah gagal pada jumlah atau persentase simpul. Misalnya, jika Anda menentukan tiga kesalahan, Systems Manager berhenti mengirim perintah ketika kesalahan keempat diterima. Node terkelola yang masih memproses perintah mungkin juga mengirim kesalahan.

  9. (Opsional) Untuk Opsi output, untuk menyimpan output perintah ke file, pilih kotak Tuliskan output perintah ke bucket S3. Masukkan nama bucket dan prefiks (folder) di kotak.

    catatan

    Izin S3 yang memberikan kemampuan untuk menulis data ke bucket S3 adalah izin profil instans (untuk instans EC2) atau peran layanan IAM (mesin yang diaktifkan hibrida) yang ditetapkan ke instance, bukan izin pengguna IAM yang melakukan tugas ini. Untuk informasi selengkapnya, lihat Mengonfigurasi izin instans yang diperlukan untuk Systems Manager atau Membuat peran layanan IAM untuk lingkungan hibrid. Selain itu, jika bucket S3 yang ditentukan berbeda Akun AWS, pastikan bahwa profil instance atau peran layanan IAM yang terkait dengan node terkelola memiliki izin yang diperlukan untuk menulis ke bucket tersebut.

  10. Di bagian Notifikasi SNS, jika Anda ingin notifikasi dikirim tentang status eksekusi perintah, pilih kotak centang Aktifkan notifikasi SNS.

    Untuk informasi selengkapnya tentang mengonfigurasi notifikasi Run Command Amazon SNS, lihat. Pemantauan perubahan status Systems Manager menggunakan notifikasi Amazon SNS

  11. Pilih Jalankan.

  12. Di halaman Command ID, di area Target dan output, pilih tombol di sebelah ID node tempat Anda menjalankan perintah, lalu pilih Lihat output. Verifikasi bahwa output dari perintah tersebut adalah nilai yang Anda berikan untuk parameter, seperti This is my first parameter.

Menjalankan parameter (AWS CLI)

Contoh 1: Perintah sederhana

Contoh perintah berikut mencakup parameter Systems Manager bernama DNS-IP. Nilai parameter ini hanyalah alamat IP dari sebuah node. Contoh ini menggunakan perintah AWS Command Line Interface (AWS CLI) untuk menggemakan nilai parameter.

Linux & macOS
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --document-version "1" \ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" \ --parameters "commands='echo {{ssm:DNS-IP}}'" \ --timeout-seconds 600 \ --max-concurrency "50" \ --max-errors "0" \ --region us-east-2
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --document-version "1" ^ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" ^ --parameters "commands='echo {{ssm:DNS-IP}}'" ^ --timeout-seconds 600 ^ --max-concurrency "50" ^ --max-errors "0" ^ --region us-east-2

Perintah tersebut mengembalikan informasi seperti berikut.

{
    "Command": {
        "CommandId": "c70a4671-8098-42da-b885-89716EXAMPLE",
        "DocumentName": "AWS-RunShellScript",
        "DocumentVersion": "1",
        "Comment": "",
        "ExpiresAfter": "2023-12-26T15:19:17.771000-05:00",
        "Parameters": {
            "commands": [
                "echo {{ssm:DNS-IP}}"
            ]
        },
        "InstanceIds": [],
        "Targets": [
            {
                "Key": "instanceids",
                "Values": [
                    "i-02573cafcfEXAMPLE"
                ]
            }
        ],
        "RequestedDateTime": "2023-12-26T14:09:17.771000-05:00",
        "Status": "Pending",
        "StatusDetails": "Pending",
        "OutputS3Region": "us-east-2",
        "OutputS3BucketName": "",
        "OutputS3KeyPrefix": "",
        "MaxConcurrency": "50",
        "MaxErrors": "0",
        "TargetCount": 0,
        "CompletedCount": 0,
        "ErrorCount": 0,
        "DeliveryTimedOutCount": 0,
        "ServiceRole": "",
        "NotificationConfig": {
            "NotificationArn": "",
            "NotificationEvents": [],
            "NotificationType": ""
        },
        "CloudWatchOutputConfig": {
            "CloudWatchLogGroupName": "",
            "CloudWatchOutputEnabled": false
        },
        "TimeoutSeconds": 600,
        "AlarmConfiguration": {
            "IgnorePollAlarmFailure": false,
            "Alarms": []
        },
        "TriggeredAlarms": []
    }
}

Setelah eksekusi perintah selesai, Anda dapat melihat informasi lebih lanjut tentang hal itu menggunakan perintah berikut:

Contoh 2: Dekripsi nilai parameter SecureString

Contoh perintah berikutnya menggunakan SecureString parameter bernama SecurePassword. Perintah yang digunakan di parameters lapangan mengambil dan mendekripsi nilai SecureString parameter, dan kemudian mengatur ulang kata sandi administrator lokal tanpa harus melewatkan kata sandi dalam teks yang jelas.

Linux
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --document-version "1" \ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" \ --parameters '{"commands":["secure=$(aws ssm get-parameters --names SecurePassword --with-decryption --query Parameters[0].Value --output text --region us-east-2)","echo $secure | passwd myuser --stdin"]}' \ --timeout-seconds 600 \ --max-concurrency "50" \ --max-errors "0" \ --region us-east-2
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --document-version "1" ^ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" ^ --parameters "commands=['$secure = (Get-SSMParameterValue -Names SecurePassword -WithDecryption $True).Parameters[0].Value','net user administrator $secure']" ^ --timeout-seconds 600 ^ --max-concurrency "50" ^ --max-errors "0" ^ --region us-east-2
Contoh 3: Referensi parameter dalam dokumen SSM

Anda juga dapat mereferensi parameter Systems Manager di bagian Parameter pada dokumen SSM, seperti yang ditunjukkan dalam contoh berikut.

{ "schemaVersion":"2.0", "description":"Sample version 2.0 document v2", "parameters":{ "commands" : { "type": "StringList", "default": ["{{ssm:parameter-name}}"] } }, "mainSteps":[ { "action":"aws:runShellScript", "name":"runShellScript", "inputs":{ "runCommand": "{{commands}}" } } ] }

Jangan bingung sintaks serupa untuk parameter lokal yang digunakan di runtimeConfig bagian dokumen SSM dengan parameter. Parameter Store Parameter lokal tidak sama dengan parameter Systems Manager. Anda dapat membedakan parameter lokal dari parameter Systems Manager dengan tidak adanya prefiks ssm:.

"runtimeConfig":{ "aws:runShellScript":{ "properties":[ { "id":"0.aws:runShellScript", "runCommand":"{{ commands }}", "workingDirectory":"{{ workingDirectory }}", "timeoutSeconds":"{{ executionTimeout }}"
catatan

Dokumen SSM tidak mendukung referensi ke parameter SecureString. Ini berarti bahwa untuk menggunakan SecureString parameter dengan, misalnyaRun Command, Anda harus mengambil nilai parameter sebelum meneruskannyaRun Command, seperti yang ditunjukkan pada contoh berikut.

Linux & macOS
value=$(aws ssm get-parameters --names parameter-name --with-decryption)
aws ssm send-command \ --name AWS-JoinDomain \ --parameters password=$value \ --instance-id instance-id
Windows
aws ssm send-command ^ --name AWS-JoinDomain ^ --parameters password=$value ^ --instance-id instance-id
Powershell
$secure = (Get-SSMParameterValue -Names parameter-name -WithDecryption $True).Parameters[0].Value | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -argumentlist user-name,$secure