Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pipelining, output, dan iterasi di AWS Tools for PowerShell
Pipelining
PowerShell mendorong pengguna untuk menghubungkan cmdlet ke saluran pipa
PS >
Get-EC2Instance | Stop-EC2Instance
Keluaran cmdlet
Untuk mendukung pipelining dengan lebih baik, beberapa data dari tanggapan AWS SDK for .NET mungkin dibuang secara default. Output dari AWS Tools for PowerShell cmdlet tidak dibentuk ulang untuk menyertakan respons layanan dan instance hasil sebagai Note
properti pada objek koleksi yang dipancarkan. Sebaliknya, untuk panggilan yang memancarkan satu koleksi sebagai output, koleksi sekarang disebutkan ke pipeline. PowerShell Ini berarti bahwa data SDK respons dan hasil tidak dapat ada dalam pipeline karena tidak ada objek koleksi yang dapat dilampirkan.
Meskipun sebagian besar pengguna mungkin tidak memerlukan data ini, ini dapat berguna untuk tujuan diagnostik karena Anda dapat melihat dengan tepat apa yang dikirim dan diterima dari panggilan AWS layanan yang mendasari yang dibuat oleh cmdlet. Dimulai dengan AWS Tools for PowerShell V4, cmdlet dapat menggunakan -Select *
parameter dan argumen untuk mengembalikan seluruh respons layanan.
catatan
Dalam versi AWS Tools for PowerShell sebelum V4, variabel sesi yang disebut $AWSHistory
diperkenalkan yang menyimpan catatan pemanggilan AWS cmdlet dan respons layanan yang diterima untuk setiap pemanggilan. Di V4 dari Tools for PowerShell, variabel sesi ini tidak digunakan lagi demi -Select *
parameter dan argumen, yang dapat digunakan untuk mengembalikan seluruh respons layanan. Parameter ini dijelaskan dalam topik ini.
Ini adalah dokumentasi prarilis untuk fitur dalam rilis pratinjau. Dokumentasi dapat berubah. |
$AWSHistory
Variabel akan dihapus di V5 dari file. AWS Tools for PowerShell Untuk informasi lebih lanjut, lihat posting blog Pemberitahuan versi utama 5 AWS Alat yang akan datang untuk PowerShell
Untuk mengilustrasikan bagaimana semua data dari respons dapat dikembalikan, pertimbangkan contoh berikut.
Contoh pertama hanya mengembalikan daftar ember Amazon S3. Ini adalah perilaku default.
PS >
Get-S3Bucket
CreationDate BucketName ------------ ---------- 9/22/2023 10:54:35 PM amzn-s3-demo-bucket1 9/22/2023 11:04:37 AM amzn-s3-demo-bucket2 9/22/2023 12:54:34 PM amzn-s3-demo-bucket3
Contoh kedua mengembalikan objek AWS SDK for .NET respon. Karena -Select *
telah ditentukan, output mencakup seluruh API respons, yang berisi kumpulan ember di Buckets
properti. Dalam contoh ini, Format-List
cmdlet tidak sepenuhnya diperlukan, tetapi hadir untuk memastikan bahwa semua properti ditampilkan.
PS >
Get-S3Bucket -Select * | Format-List
LoggedAt : 10/1/2023 9:45:52 AM Buckets : {amzn-s3-demo-bucket1, amzn-s3-demo-bucket2, amzn-s3-demo-bucket3} Owner : Amazon.S3.Model.Owner ContinuationToken : ResponseMetadata : Amazon.Runtime.ResponseMetadata ContentLength : 0 HttpStatusCode : OK
Iterasi melalui data halaman
Bagian berikut menjelaskan berbagai jenis iterasi yang mungkin.
Iterasi otomatis
Untuk layanan APIs yang memaksakan jumlah maksimum default objek yang dikembalikan untuk panggilan tertentu atau yang mendukung set hasil yang dapat dihalaman, sebagian besar cmdlet menerapkan iterasi otomatis, yang memungkinkan perilaku default "”. page-to-completion Dalam skenario ini, cmdlet membuat panggilan sebanyak yang diperlukan atas nama Anda untuk mengembalikan kumpulan data lengkap ke pipeline.
Dalam contoh berikut, yang menggunakan Get-S3Object
cmdlet, $result
variabel berisi S3Object
instance untuk setiap kunci dalam bucket yang disebutamzn-s3-demo-bucket1
, yang berpotensi merupakan kumpulan data yang sangat besar.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1
Contoh berikut mengurangi jumlah hasil untuk setiap halaman selama iterasi otomatis dari nilai default 1000 menjadi 500. Contoh melakukan dua kali lebih banyak panggilan iterasi otomatis karena hanya setengah dari banyak hasil yang dikembalikan untuk setiap panggilan.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500
catatan
Di AWS Tools for PowerShell V4, beberapa cmdlet untuk operasi paged tidak menerapkan iterasi otomatis. Jika cmdlet tidak memiliki -NoAutoIteration
parameter, yang dibahas di bagian berikutnya, maka cmdlet tidak menerapkan iterasi otomatis.
Nonaktifkan iterasi otomatis
Jika Anda ingin Alat PowerShell untuk mengembalikan hanya halaman pertama data, Anda dapat menambahkan -NoAutoIteration
parameter untuk mencegah halaman data tambahan dikembalikan.
Contoh berikut menggunakan -MaxKey
parameter -NoAutoIteration
and untuk membatasi jumlah S3Object
instance yang dikembalikan tidak lebih dari 500 pertama yang ditemukan di bucket.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration
Untuk menentukan apakah lebih banyak data tersedia tetapi tidak dikembalikan, gunakan -Select *
parameter dan argumen dan periksa apakah ada nilai di properti token berikutnya.
Contoh berikut kembali $true
jika ada lebih dari 500 objek dalam ember dan $false
sebaliknya.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration -Select *
PS >
$null -eq $result.NextMarker
catatan
Nama-nama properti respons token berikutnya dan parameter cmdlet bervariasi di antara cmdlet. Untuk detailnya, lihat dokumentasi bantuan untuk setiap cmdlet.
Iterasi manual
Contoh berikut mengembalikan semua objek S3 dari bucket menggunakan dodo
Loop melakukan iterasi hingga Get-S3Object
set $result.NextMarker
ke$null
, menunjukkan bahwa tidak ada lagi data halaman yang tersisa. Output dari loop ditugaskan ke $s3Objects
variabel.
$s3Objects = do { $splatParams = @{ BucketName = 'amzn-s3-demo-bucket1' MaxKey = 500 Marker = $result.NextMarker NoAutoIteration = $true Select = '*' } $result = Get-S3Object @splatParams $result.S3Objects } while ($null -ne $result.NextMarker)
Contoh ini menggunakan PowerShell percikan