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.Tools
Paket 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. -Select
Parameter 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.Keyfile1.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
parameter, di mana n
n
adalah jumlah maksimum item untuk dimasukkan dalam output akhir.
PS >
Get-S3ObjectV2 -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Key | select -first 2file1.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 ProfileName
Region
, bersifat dinamis
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 cmdletStop-EC2Instance
. Sebagai gantinya, gunakanRemove-EC2Instance
. -
Menghapus
-ProfileName
parameter dari Clear- AWSCredential cmdlet. Sebagai gantinya, gunakanRemove-AWSCredentialProfile
. -
Menghapus cmdlet
Import-EC2Instance
danImport-EC2Volume
.