Migrasi dari AWS Tools for PowerShell Versi 3.3 ke Versi 4 - AWS Tools for PowerShell

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

Migrasi dari AWS Tools for PowerShell Versi 3.3 ke Versi 4

AWS Tools for PowerShell versi 4 adalah pembaruan yang kompatibel ke belakang ke AWS Tools for PowerShell versi 3.3. Versi ini menambahkan perbaikan yang signifikan dengan tetap mempertahankan perilaku cmdlet yang ada.

Skrip Anda yang ada harus terus bekerja setelah diperbarui ke versi baru, tetapi kami rekomendasikan Anda mengujinya secara menyeluruh sebelum memperbarui lingkungan produksi Anda.

Bagian ini menjelaskan perubahan dan menjelaskan bagaimana kemungkinan dampaknya terhadap skrip Anda.

Versi AWS.Tools Baru yang Sepenuhnya Termodulasi

The AWSPowerShell. NetCore dan AWSPowerShell paket “monolitik”. Ini berarti bahwa semua AWS layanan didukung dalam modul yang sama, membuatnya sangat besar, dan tumbuh lebih besar karena setiap AWS layanan dan fitur baru ditambahkan. AWS.ToolsPaket baru dipecah menjadi modul yang lebih kecil yang memberi Anda fleksibilitas untuk mengunduh dan menginstal hanya yang Anda butuhkan untuk AWS layanan yang Anda gunakan. Paket termasuk modul AWS.Tools.Common bersama yang diperlukan oleh semua modul lainnya, dan modul AWS.Tools.Installer yang menyederhanakan pemasangan, pembaruan, dan penghapusan modul sesuai kebutuhan.

Hal ini juga memungkinkan pengimporan otomatis cmdlet pada panggilan pertama, tanpa harus terlebih dulu memanggil Import-module. Namun, untuk berinteraksi dengan yang terkait. NETobjek sebelum memanggil cmdlet, Anda masih harus menelepon Import-Module untuk memberi PowerShell tahu tentang yang relevan. NETjenis.

Misalnya, perintah berikut memiliki referensi ke Amazon.EC2.Model.Filter. Jenis referensi ini tidak dapat memicu pengimporan otomatis, jadi Anda harus terlebih dulu memanggil Import-Module atau perintah ini akan gagal.

PS > $filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"} InvalidOperation: Unable to find type [Amazon.EC2.Model.Filter].
PS > Import-Module AWS.Tools.EC2 PS > $filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"} PS > Get-EC2Instance -Filter $filter -Select Reservations.Instances.InstanceId i-0123456789abcdefg i-0123456789hijklmn

Cmdlet Get-AWSService baru

Untuk membantu Anda menemukan nama modul untuk setiap AWS layanan dalam AWS.Tools kumpulan modul, Anda dapat menggunakan Get-AWSService cmdlet.

PS > Get-AWSService Service : ACMPCA CmdletNounPrefix : PCA ModuleName : AWS.Tools.ACMPCA SDKAssemblyVersion : 3.3.101.56 ServiceName : Certificate Manager Private Certificate Authority Service : AlexaForBusiness CmdletNounPrefix : ALXB ModuleName : AWS.Tools.AlexaForBusiness SDKAssemblyVersion : 3.3.106.26 ServiceName : Alexa For Business ...

Parameter -Select baru untuk Mengendalikan Obyek yang Dikembalikan oleh Cmdlet

Sebagian besar cmdlet dalam versi 4 mendukung parameter -Select baru. Setiap cmdlet memanggil AWS layanan APIs untuk Anda menggunakan. AWS SDK for .NET Kemudian AWS Tools for PowerShell klien mengubah respons menjadi objek yang dapat Anda gunakan dalam PowerShell skrip dan pipa ke perintah lain. Terkadang PowerShell objek akhir memiliki lebih banyak bidang atau properti dalam respons asli daripada yang Anda butuhkan, dan di lain waktu Anda mungkin ingin objek menyertakan bidang atau properti respons yang tidak ada secara default. -SelectParameter memungkinkan Anda untuk menentukan apa yang termasuk dalam. NETobjek dikembalikan oleh cmdlet.

Misalnya, Get-S3Objectcmdlet memanggil operasi Amazon S3. SDK ListObjects Operasi itu mengembalikan ListObjectsResponseobjek. Namun, secara default, Get-S3Object cmdlet hanya mengembalikan S3Objects elemen SDK respons kepada pengguna. PowerShell Pada contoh berikut, obyek adalah array dengan dua elemen.

PS > Get-S3Object -BucketName amzn-s3-demo-bucket ETag : "01234567890123456789012345678901111" BucketName : amzn-s3-demo-bucket Key : file1.txt LastModified : 9/30/2019 1:31:40 PM Owner : Amazon.S3.Model.Owner Size : 568 StorageClass : STANDARD ETag : "01234567890123456789012345678902222" BucketName : amzn-s3-demo-bucket Key : file2.txt LastModified : 7/15/2019 9:36:54 AM Owner : Amazon.S3.Model.Owner Size : 392 StorageClass : STANDARD

Di AWS Tools for PowerShell versi 4, Anda dapat menentukan -Select * untuk mengembalikan yang lengkap. NETobjek respon dikembalikan oleh SDK API panggilan.

PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select * IsTruncated : False NextMarker : S3Objects : {file1.txt, file2.txt} Name : amzn-s3-demo-bucket Prefix : MaxKeys : 1000 CommonPrefixes : {} Delimiter :

Anda juga dapat menyebutkan jalur ke properti nest tertentu yang Anda inginkan. Contoh berikut hanya mengembalikan properti Key dari setiap elemen dalam array S3Objects.

PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select S3Objects.Key file1.txt file2.txt

Dalam situasi tertentu, ini dapat berguna untuk mengembalikan parameter cmdlet. Anda dapat melakukannya dengan -Select ^ParameterName. Fitur ini menggantikan parameter -PassThru, yang masih tersedia tetapi tidak lagi digunakan.

PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select S3Objects.Key | >> Write-S3ObjectTagSet -Select ^Key -BucketName amzn-s3-demo-bucket -Tagging_TagSet @{ Key='key'; Value='value'} file1.txt file2.txt

Topik referensi untuk setiap cmdlet menentukan apakah mendukung parameter -Select tersebut atau tidak.

Pembatasan Lebih Konsisten dari Jumlah Item dalam Output

Versi sebelumnya AWS Tools for PowerShell memungkinkan Anda untuk menggunakan -MaxItems parameter untuk menentukan jumlah maksimum objek yang dikembalikan dalam output akhir.

Perilaku ini dihapus dari AWS.Tools.

Perilaku ini tidak digunakan lagi di. AWSPowerShell NetCore dan AWSPowerShell, dan akan dihapus dari versi tersebut di rilis mendatang.

Jika layanan yang mendasari API mendukung MaxItems parameter, itu masih tersedia dan berfungsi seperti yang API ditentukan. Tetapi tidak lagi mempunyai perilaku tambahan yang membatasi jumlah item yang dikembalikan dalam output cmdlet.

Untuk membatasi jumlah item yang dikembalikan dalam output akhir, pipa output ke Select-Object cmdlet dan tentukan -First n parameter, di mana n adalah jumlah maksimum item untuk dimasukkan dalam output akhir.

PS > Get-S3ObjectV2 -BucketName amzn-s3-demo-bucket -Select S3Objects.Key | select -first 2 file1.txt file2.txt

Tidak semua AWS layanan didukung dengan -MaxItems cara yang sama, jadi ini menghilangkan ketidakkonsistenan itu dan hasil tak terduga yang terkadang terjadi. Dan juga, -MaxItems yang dikombinasikan dengan parameter -Select baru terkadang dapat mengakibatkan hasil yang membingungkan.

Lebih Mudah Menggunakan Parameter Pengaliran

Parameter jenis Stream atau byte[] sekarang dapat menerima nilai string, string[], atau FileInfo.

Misalnya, Anda dapat menggunakan hal berikut.

PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream '{ >> "some": "json" >> }'
PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream (ls .\some.json)
PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream @('{', '"some": "json"', '}')

AWS Tools for PowerShell mengkonversi semua string untuk byte[] menggunakan UTF -8 encoding.

Memperluas Alur dengan Nama Properti

Agar pengalaman pengguna lebih konsisten, Anda sekarang dapat melewati input alur dengan menyebutkan nama properti untuk parameter apa pun.

Pada contoh berikut, kita membuat obyek kustom dengan properti yang memiliki nama yang cocok dengan nama parameter cmdlet target. Ketika cmdlet berjalan, maka secara otomatis menggunakan properti tersebut sebagai parameternya.

PS > [pscustomobject] @{ BucketName='amzn-s3-demo-bucket'; Key='file1.txt'; PartNumber=1 } | Get-S3ObjectMetadata
catatan

Beberapa properti mendukung ini di versi sebelumnya AWS Tools for PowerShell. Versi 4 membuatnya lebih konsisten dengan memungkinkannya untuk semua parameter.

Parameter Umum Statis

Untuk meningkatkan konsistensi di versi 4.0 AWS Tools for PowerShell, semua parameter bersifat statis.

Pada versi sebelumnya AWS Tools for PowerShell, beberapa parameter umum sepertiAccessKey,,SecretKey, atau ProfileNameRegion, bersifat dinamis, sementara semua parameter lainnya bersifat statis. Ini dapat menimbulkan masalah karena PowerShell mengikat parameter statis sebelum parameter dinamis. Sebagai contoh, katakanlah Anda menjalankan perintah berikut.

PS > Get-EC2Region -Region us-west-2

Versi sebelumnya PowerShell mengikat nilai us-west-2 ke parameter -RegionName statis alih-alih parameter -Region dinamis. Kemungkinan besar, hal ini dapat membingungkan pengguna.

AWS.Tools Menyatakan dan Menerapkan Parameter Wajib

Modul-modul AWS.Tools.* saat ini menyatakan dan menerapkan parameter cmdlet wajib. Ketika AWS Layanan menyatakan bahwa parameter dari sebuah API diperlukan, akan PowerShell meminta Anda untuk parameter cmdlet yang sesuai jika Anda tidak menentukannya. Ini hanya berlaku untuk AWS.Tools. Untuk memastikan kompatibilitas mundur, ini tidak berlaku untuk AWSPowerShell. NetCore atau AWSPowerShell.

Semua Parameter Dapat Dibatalkan

Sekarang Anda dapat menetapkan $null untuk parameter jenis nilai (angka dan tanggal). Perubahan ini seharusnya tidak mempengaruhi skrip yang ada. Hal ini memungkinkan Anda untuk memotong prompt untuk parameter wajib. Parameter wajib diterapkan hanya di AWS.Tools.

Jika Anda menjalankan contoh berikut menggunakan versi 4, maka akan secara efektif memotong validasi sisi klien karena Anda memberikan "value" untuk setiap parameter wajib. Namun, panggilan EC2 API layanan Amazon gagal karena AWS layanan masih memerlukan informasi itu.

PS > Get-EC2InstanceAttribute -InstanceId $null -Attribute $null WARNING: You are passing $null as a value for parameter Attribute which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues. WARNING: You are passing $null as a value for parameter InstanceId which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues. Get-EC2InstanceAttribute : The request must contain the parameter instanceId

Menghapus Fitur yang Sudah Tidak Lagi Digunakan

Fitur-fitur berikut tidak digunakan lagi dalam rilis sebelumnya AWS Tools for PowerShell dan dihapus di versi 4:

  • Menghapus parameter -Terminate dari cmdlet Stop-EC2Instance. Sebagai gantinya, gunakan Remove-EC2Instance.

  • Menghapus -ProfileName parameter dari Clear- AWSCredential cmdlet. Sebagai gantinya, gunakan Remove-AWSCredentialProfile.

  • Menghapus cmdlet Import-EC2Instance dan Import-EC2Volume.