Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Skema, fitur, dan contoh
AWS Systems Manager (SSM) dokumen menggunakan versi skema berikut.
-
Jenis dokumen
Command
dapat menggunakan skema versi 1.2, 2.0, dan 2.2. Jika Anda menggunakan skema dokumen 1.2, kami sarankan Anda membuat dokumen yang menggunakan skema versi 2.2. -
Jenis dokumen
Policy
harus menggunakan skema versi 2.0 atau yang lebih baru. -
Jenis dokumen
Automation
harus menggunakan skema versi 0.3. -
Dokumen jenis
Session
harus menggunakan skema versi 1.0. -
Anda dapat membuat dokumen di JSON atau YAML.
Untuk informasi selengkapnya tentang skema Session
dokumen, lihatSkema dokumen sesi.
Dengan menggunakan versi skema terbaru untuk dokumen Command
dan Policy
, Anda dapat memanfaatkan fitur berikut.
Fitur | Detail |
---|---|
Mengedit dokumen |
Dokumen sekarang dapat diperbarui. Dengan versi 1.2, setiap update dokumen yang diperlukan yang Anda simpan dengan nama yang berbeda. |
Versioning otomatis |
Setiap pembaruan ke dokumen menciptakan versi baru. Ini bukan versi skema, tetapi versi dokumen. |
Versi default |
Jika Anda memiliki beberapa versi dokumen, Anda dapat menentukan yang mana versi dokumen default. |
Pengurutan |
Plugin atau Langkah dalam dokumen yang dijalankan sesuai urutan yang Anda tentukan. |
Dukungan lintas platform |
Dukungan lintas platform mengizinkan Anda untuk menentukan sistem operasi yang berbeda untuk plugin yang berbeda dalam dokumen SSM yang sama. Dukungan lintas platform menggunakan parameter |
catatan
Anda harus menjaga AWS Systems Manager SSM Agent pada instans Anda yang diperbarui dengan versi terbaru untuk menggunakan fitur Systems Manager baru dan fitur dokumen SSM. Untuk informasi selengkapnya, lihat Memperbarui SSM Agent penggunaan Run Command.
Tabel berikut mencantumkan perbedaan antara versi utama skema.
Versi 1.2 | Versi 2.2 (versi terbaru) | Detail |
---|---|---|
runtimeConfig |
mainSteps |
Di versi 2.2, |
properti |
masukan |
Di versi 2.2, bagian |
perintah |
runCommand |
Di versi 2.2,bagian |
id |
tindakan |
Versi 2.2, |
tidak berlaku |
nama |
Versi 2.2, |
Menggunakan parameter prasyarat
Dengan skema versi 2.2 atau yang lebih baru, Anda dapat menggunakan parameter precondition
untuk menentukan target sistem operasi untuk setiap plugin atau untuk memvalidasi parameter input yang telah Anda tetapkan dalam dokumen SSM Anda. Parameter precondition
mendukung referensi parameter input dokumen SSM Anda, dan platformType
menggunakan nilai dari Linux
, MacOS
, dan Windows
. Hanya StringEquals
operator yang didukung.
Untuk dokumen yang menggunakan skema versi 2.2 atau yang terbaru, jika precondition
tidak ditentukan, setiap plugin yang dijalankan atau dilewati berdasarkan kompatibilitas plugin dengan sistem operasi. Kompatibilitas plugin dengan sistem operasi dievaluasi sebelum precondition
. Untuk dokumen yang menggunakan skema 2.0 atau sebelumnya, plugin yang tidak kompatibel akan membuang kesalahan.
Misalnya, dalam dokumen skema versi 2.2, jika precondition
tidak ditentukan dan aws:runShellScript
plugin terdaftar, maka langkahnya berjalan pada instance Linux, tetapi sistem melewatkannya Windows Server contoh karena aws:runShellScript
tidak kompatibel dengan Windows Server contoh. Namun, untuk dokumen skema versi 2.0, jika Anda menentukan aws:runShellScript
plugin, dan kemudian menjalankan dokumen pada Windows Server contoh, eksekusi gagal. Anda dapat melihat contoh parameter prasyarat dalam dokumen SSM nanti di bagian ini.
Skema versi 2.2
Elemen tingkat atas
Contoh berikut menunjukkan elemen-elemen tingkat atas dari dokumen SSM menggunakan skema versi 2.2.
Contoh skema versi 2.2
Contoh berikut menggunakan aws:runPowerShellScript
plugin untuk menjalankan PowerShell perintah pada instance target.
Skema versi 2.2 contoh parameter prasyarat
Skema versi 2.2 menyediakan dukungan lintas-platform. Ini berarti bahwa dalam satu dokumen SSM Anda dapat menentukan sistem operasi yang berbeda untuk plugin yang berbeda. Dukungan lintas platform dalam setiap langkah menggunakan parameter precondition
, seperti yang ditunjukkan dalam contoh berikut. Anda juga dapat menggunakan parameter precondition
untuk memvalidasi parameter input yang telah ditetapkan dalam dokumen SSM Anda. Anda dapat melihat ini di kedua contoh berikut.
Skema versi 2.2 State Manager contoh
Anda dapat menggunakan dokumen SSM berikut dengan State Manager, alat di Systems Manager, untuk mengunduh dan menginstal perangkat lunak antivirus ClamAV. State Manager memberlakukan konfigurasi tertentu, yang berarti bahwa setiap kali State Manager asosiasi dijalankan, sistem memeriksa untuk melihat apakah perangkat lunak ClamAV diinstal. Jika tidak, State Manager menjalankan ulang dokumen ini.
Contoh inventaris skema versi 2.2
Anda dapat menggunakan dokumen SSM berikut dengan State Manager untuk mengumpulkan metadata inventaris tentang instans Anda.
Contoh skema versi 2.2 AWS-ConfigureAWSPackage
Contoh berikut menunjukkan dokumen AWS-ConfigureAWSPackage
. Bagian mainSteps
mencakup plugin aws:configurePackage
di langkah action
.
catatan
Pada sistem operasi Linux, hanya paket AmazonCloudWatchAgent
dan AWSSupport-EC2Rescue
yang didukung.
Skema versi 1.2
Contoh berikut menunjukkan unsur-unsur tingkat atas dokumen skema versi 1.2.
{ "schemaVersion":"1.2", "description":"
A description of the SSM document.
", "parameters":{ "parameter 1
":{ "one or more parameter properties
" }, "parameter 2
":{ "one or more parameter properties
" }, "parameter 3
":{ "one or more parameter properties
" } }, "runtimeConfig":{ "plugin 1
":{ "properties":[ { "one or more plugin properties
" } ] } } }
Contoh skema versi 1.2 aws:runShellScript
Contoh berikut menunjukkan Dokumen SSM AWS-RunShellScript
. Bagian runtimeConfig mencakup plugin aws:runShellScript
.
{ "schemaVersion":"1.2", "description":"Run a shell script or specify the commands to run.", "parameters":{ "commands":{ "type":"StringList", "description":"(Required) Specify a shell script or a command to run.", "minItems":1, "displayType":"textarea" }, "workingDirectory":{ "type":"String", "default":"", "description":"(Optional) The path to the working directory on your instance.", "maxChars":4096 }, "executionTimeout":{ "type":"String", "default":"3600", "description":"(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 3600 (1 hour). Maximum is 172800 (48 hours).", "allowedPattern":"([1-9][0-9]{0,3})|(1[0-9]{1,4})|(2[0-7][0-9]{1,3})|(28[0-7][0-9]{1,2})|(28800)" } }, "runtimeConfig":{ "aws:runShellScript":{ "properties":[ { "id":"0.aws:runShellScript", "runCommand":"{{ commands }}", "workingDirectory":"{{ workingDirectory }}", "timeoutSeconds":"{{ executionTimeout }}" } ] } } }
Skema versi 0.3
Elemen tingkat atas
Contoh berikut menunjukkan elemen-elemen tingkat atas dari skema versi 0.3 runbook otomatisasi dalam format JSON.
{ "description": "
document-description
", "schemaVersion": "0.3", "assumeRole": "{{assumeRole}}", "parameters": { "parameter1": { "type": "String", "description": "parameter-1-description
", "default": "" }, "parameter2": { "type": "String", "description": "parameter-2-description
", "default": "" } }, "variables": { "variable1": { "type": "StringMap", "description": "variable-1-description
", "default": {} }, "variable2": { "type": "String", "description": "variable-2-description
", "default": "default-value
" } }, "mainSteps": [ { "name": "myStepName
", "action": "action-name
", "maxAttempts": 1, "inputs": { "Handler": "python-only-handler-name
", "Runtime": "runtime-name
", "Attachment": "script-or-zip-name
" }, "outputs": { "Name": "output-name
", "Selector": "selector.value
", "Type": "data-type
" } } ], "files": { "script-or-zip-name
": { "checksums": { "sha256": "checksum
" }, "size":1234
} } }
Contoh runbook otomatisasi YAML
Contoh berikut menunjukkan isi dari sebuah runbook otomatisasi, dalam format YAML. Contoh kerja ini dari skema dokumen versi 0.3 juga menunjukkan penggunaan Potongan harga untuk memformat deskripsi dokumen.
description: >- ##Title: LaunchInstanceAndCheckState ----- **Purpose**: This Automation runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this document continuously checks the instance status check value for the launched instance until the status ```ok``` is returned. ##Parameters: ----- Name | Type | Description | Default Value ------------- | ------------- | ------------- | ------------- assumeRole | String | (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. | - imageId | String | (Optional) The AMI ID to use for launching the instance. The default value uses the latest Amazon Linux AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }} schemaVersion: '0.3' assumeRole: 'arn:aws:iam::111122223333::role/AutomationServiceRole' parameters: imageId: type: String default: '{{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}' description: >- (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux AMI ID. tagValue: type: String default: ' LaunchedBySsmAutomation' description: >- (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation. instanceType: type: String default: t2.micro description: >- (Optional) The instance type to use for the instance. The default value is t2.micro. mainSteps: - name: LaunchEc2Instance action: 'aws:executeScript' outputs: - Name: payload Selector: $.Payload Type: StringMap inputs: Runtime: python3.8 Handler: launch_instance Script: '' InputPayload: image_id: '{{ imageId }}' tag_value: '{{ tagValue }}' instance_type: '{{ instanceType }}' Attachment: launch.py description: >- **About This Step** This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided python script. - name: WaitForInstanceStatusOk action: 'aws:executeScript' inputs: Runtime: python3.8 Handler: poll_instance Script: |- def poll_instance(events, context): import boto3 import time ec2 = boto3.client('ec2') instance_id = events['InstanceId'] print('[INFO] Waiting for instance status check to report ok', instance_id) instance_status = "null" while True: res = ec2.describe_instance_status(InstanceIds=[instance_id]) if len(res['InstanceStatuses']) == 0: print("Instance status information is not available yet") time.sleep(5) continue instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status'] print('[INFO] Polling to get status of the instance', instance_status) if instance_status == 'ok': break time.sleep(10) return {'Status': instance_status, 'InstanceId': instance_id} InputPayload: '{{ LaunchEc2Instance.payload }}' description: >- **About This Step** The python script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned. files: launch.py: checksums: sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE