AWS CLI kerangka dan file input di AWS CLI - AWS Command Line Interface

Dokumentasi ini AWS CLI hanya untuk Versi 1. Untuk dokumentasi yang terkait dengan Versi 2 AWS CLI, lihat Panduan Pengguna Versi 2.

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

AWS CLI kerangka dan file input di AWS CLI

Sebagian besar AWS CLI perintah menerima mengimpor input parameter dari file. Template ini dapat dihasilkan menggunakan generate-cli-skeleton opsi dan kemudian diimpor menggunakan --cli-input-yaml parameter --cli-input-json .

Tentang AWS CLI kerangka dan file input

Sebagian besar perintah AWS Command Line Interface (AWS CLI) mendukung kemampuan untuk menerima input parameter dari file menggunakan --cli-input-yaml parameter --cli-input-json s.

Kemudian Anda dapat menjalankan perintah dengan --cli-input-yaml parameter --cli-input-json dan arahkan ke file yang diisi.

penting

AWS CLI Perintah khusus, seperti aws s3perintah aws s3 tidak mendukung --cli-input-yaml parameter --generate-cli-skeleton atau --cli-input-json yang dijelaskan dalam topik ini. Untuk memeriksa apakah perintah tertentu mendukung parameter ini, jalankan helpperintah untuk perintah yang ingin Anda gunakan atau lihat panduan referensi AWS CLI versi 1 panduan .

--generate-cli-skeletonMenghasilkan dan menampilkan template parameter yang dapat Anda sesuaikan dan gunakan sebagai input pada perintah. Template yang dihasilkan mencakup semua parameter yang didukung perintah.

--generate-cli-skeletonParameter menerima salah satu nilai berikut:

  • input— Template yang dihasilkan mencakup semua parameter input yang diformat sebagai JSON. Ini adalah nilai default.

  • output- Template yang dihasilkan mencakup semua parameter output yang diformat sebagai JSON.

Karena pada dasarnya AWS CLI adalah “pembungkus” di sekitar API layanan, file kerangka mengharapkan Anda untuk mereferensikan semua parameter dengan nama parameter API yang mendasarinya. Ini mungkin berbeda dari nama AWS CLI parameter. Misalnya, AWS CLI parameter bernama user-name mungkin memetakan ke parameter API AWS layanan bernama UserName (perhatikan kapitalisasi yang diubah dan tanda hubung yang hilang). Kami menyarankan Anda menggunakan --generate-cli-skeleton opsi untuk menghasilkan template dengan nama parameter “benar” untuk menghindari kesalahan. Anda dapat mereferensikan Panduan Referensi API agar layanan dapat melihat nama parameter yang diharapkan. Anda dapat menghapus parameter apa pun dari templat yang tidak diperlukan dan yang tidak ingin Anda berikan nilainya.

Misalnya, jika Anda menjalankan perintah berikut, itu menghasilkan template parameter untuk perintah run-instances Amazon Elastic Compute Cloud (Amazon EC2).

JSON

Contoh berikut menunjukkan bagaimana untuk menghasilkan template diformat dalam JSON dengan menggunakan nilai default (input) untuk parameter. --generate-cli-skeleton

$ aws ec2 run-instances --generate-cli-skeleton
{ "DryRun": true, "ImageId": "", "MinCount": 0, "MaxCount": 0, "KeyName": "", "SecurityGroups": [ "" ], "SecurityGroupIds": [ "" ], "UserData": "", "InstanceType": "", "Placement": { "AvailabilityZone": "", "GroupName": "", "Tenancy": "" }, "KernelId": "", "RamdiskId": "", "BlockDeviceMappings": [ { "VirtualName": "", "DeviceName": "", "Ebs": { "SnapshotId": "", "VolumeSize": 0, "DeleteOnTermination": true, "VolumeType": "", "Iops": 0, "Encrypted": true }, "NoDevice": "" } ], "Monitoring": { "Enabled": true }, "SubnetId": "", "DisableApiTermination": true, "InstanceInitiatedShutdownBehavior": "", "PrivateIpAddress": "", "ClientToken": "", "AdditionalInfo": "", "NetworkInterfaces": [ { "NetworkInterfaceId": "", "DeviceIndex": 0, "SubnetId": "", "Description": "", "PrivateIpAddress": "", "Groups": [ "" ], "DeleteOnTermination": true, "PrivateIpAddresses": [ { "PrivateIpAddress": "", "Primary": true } ], "SecondaryPrivateIpAddressCount": 0, "AssociatePublicIpAddress": true } ], "IamInstanceProfile": { "Arn": "", "Name": "" }, "EbsOptimized": true }

Menghasilkan dan mengimpor kerangka perintah

Untuk menghasilkan dan menggunakan file kerangka parameter
  1. JSON
    $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
  2. Buka file kerangka parameter di editor teks Anda dan hapus salah satu parameter yang tidak Anda butuhkan. Misalnya, Anda dapat menghapus template ke bawah ini. Konfirmasikan file tersebut masih valid JSON setelah Anda menghapus elemen yang tidak Anda butuhkan.

    JSON
    { "DryRun": true, "ImageId": "", "KeyName": "", "SecurityGroups": [ "" ], "InstanceType": "", "Monitoring": { "Enabled": true } }

    Dalam contoh ini, kita membiarkan DryRun parameter disetel true untuk menggunakan fitur EC2 dry run Amazon. Fitur ini memungkinkan Anda menguji perintah dengan aman tanpa benar-benar membuat atau memodifikasi sumber daya apa pun.

  3. Isi nilai yang tersisa dengan nilai yang sesuai untuk skenario Anda. Dalam contoh ini, kami menyediakan jenis instans, nama kunci, grup keamanan, dan pengenal Amazon Machine Image (AMI) untuk digunakan. Contoh ini mengasumsikan default Wilayah AWS. AMI ami-dfc39aef adalah gambar Linux Amazon 64-bit yang dihosting di us-west-2 Wilayah. Jika Anda menggunakan Wilayah yang berbeda, Anda harus menemukan ID AMI yang benar untuk digunakan.

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  4. Jalankan perintah dengan parameter lengkap dengan meneruskan file template yang sudah ke cli-input-yaml parameter --cli-input-json dengan menggunakan file:// awalan. AWS CLI Menafsirkan jalur menjadi relatif terhadap direktori kerja Anda saat ini. Contoh berikut AWS CLI mencari file di direktori kerja saat ini.

    JSON
    $ aws ec2 run-instances --cli-input-json file://ec2runinst.json
    A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.

    Kesalahan dry run menunjukkan bahwa JSON dengan benar dan nilai parameternya valid. Jika masalah lain dilaporkan dalam output, perbaiki dan ulangi langkah sebelumnya hingga pesan Request would have succeeded "" ditampilkan.

  5. Sekarang Anda dapat mengatur DryRun parameter false untuk menonaktifkan dry run.

    JSON
    { "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  6. Jalankan perintah, dan run-instances benar-benar meluncurkan EC2 instance Amazon dan menampilkan detail yang dihasilkan oleh peluncuran yang berhasil. Format output dikendalikan oleh --output parameter, terpisah dari format template parameter input Anda.

    JSON
    $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
    { "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...

Menggabungkan file input dan parameter baris perintah

File input dapat digunakan untuk semua parameter, atau dapat dikombinasikan dengan parameter yang ditentukan dalam file AWS CLI. Anda dapat menggunakan fitur ini untuk pengaturan yang sering Anda gunakan kembali dalam file input, sambil menjaga pengaturan individual Anda dalam perintah itu sendiri.

aws ec2 run-instancesContoh berikut menggabungkan penggunaan file input dan parameter. Kami menyediakan jenis instans, nama kunci, grup keamanan, pengenal Amazon Machine Image (AMI) untuk digunakan dan mengasumsikan default Wilayah AWS. AMI ami-dfc39aef adalah gambar Linux Amazon 64-bit yang dihosting di us-west-2 Wilayah. Jika Anda menggunakan Wilayah yang berbeda, Anda harus menemukan ID AMI yang benar untuk digunakan.

JSON

Isi file JSON:

{ "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }

Contoh berikut menggunakan file input dalam kombinasi dengan --dry-run parameter untuk melakukan dry-run perintah untuk mengkonfirmasi apakah Anda memiliki izin yang diperlukan dan telah mengisi file dengan nilai yang valid.

JSON
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --dry-run
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.

Contoh berikut kemudian menggunakan file input yang sama, tetapi dengan --no-dry-run parameter untuk melakukan perintah secara penuh.

JSON
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --no-dry-run --output json
{ "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...