Pipelining dan $AWSHistory - AWS Tools for PowerShell

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

Pipelining dan $AWSHistory

Untuk panggilan layanan AWS yang mengembalikan pengumpulan, obyek yang dikumpulkan dihitung ke alur. Hasil obyek yang berisi bidang tambahan di luar pengumpulan dan yang tidak membagi bidang kontrol mendapatkan bidang ini ditambahkan sebagai properti Catatan untuk panggilan. Properti Catatan ini dicatat dalam variabel sesi $AWSHistory, jika Anda perlu untuk mengakses data ini. Variabel $AWSHistory dijelaskan di bagian berikut.

catatan

Dalam versi Tools for Windows PowerShell sebelum v1.1, objek pengumpulan itu sendiri dipancarkan, yang memerlukan penggunaan foreach {$_.getenumerator ()} untuk melanjutkan pipelining.

Contoh

Contoh berikut mengembalikan daftar WIlayah AWS dan citra mesin Amazon EC2 (AMIS) Anda di setiap WIlayah.

PS > Get-AWSRegion | % { Echo $_.Name; Get-EC2Image -Owner self -Region $_ }

Contoh berikut memfilter stopword semua instans Amazon EC2 di wilayah default saat ini.

PS > Get-EC2Instance | Stop-EC2Instance

Karena pengumpulan menghitung alur, output dari cmdlet tertentu mungkin berupa $null, satu objek, atau kumpulan obyek. Jika berupa kumpulan obyek, Anda dapat menggunakan properti .Count untuk menentukan ukuran kumpulan tersebut. Namun, properti .Count tidak ada ketika hanya satu objek yang dipancarkan. Jika skrip Anda perlu menentukan, secara konsisten, berapa banyak objek yang dipancarkan, Anda dapat memeriksa properti EmittedObjectsCount dari nilai perintah terakhir di $AWSHistory.

$AWSHistory

Untuk mendukung pipelining yang lebih baik, output dari cmdlet AWS tidak dibentuk kembali untuk menyertakan respons layanan dan instans hasil sebagai properti Catatan pada objek pengumpulan yang dipancarkan. Sebaliknya, untuk panggilan yang memancarkan pengumpulan tunggal sebagai output, pengumpulan tersebut dihitung ke PowerShell alur. Ini berarti bahwa respon dan data hasil SDK AWS tidak dapat tersedia dalam alur, karena tidak ada objek pengumpulan 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 ke dan diterima dari panggilan layanan AWS yang mendasari yang dilakukan oleh cmdlet.

Dimulai dengan versi 1.1, data ini dan banyak lagi saat ini tersedia dalam variabel shell baru bernama $AWSHistory. Variabel ini menyimpan catatan invokasi cmdlet AWS dan respons layanan yang diterima untuk setiap invokasi. Secara opsional, riwayat ini dapat dikonfigurasi juga untuk mencatat permintaan layanan yang dibuat setiap cmdlet. Tambahan data yang berguna, seperti waktu eksekusi keseluruhan cmdlet, juga dapat diperoleh dari setiap entri. Demi alasan keamanan, permintaan dan tanggapan yang berisi data sensitif tidak direkam secara default. Namun, riwayat dapat dikonfigurasi untuk menimpa perilaku ini jika diperlukan. Untuk informasi selengkapnya, lihatSet-AWSHistoryConfiguration cmdlet yang ditunjukkan di bawah ini.

Setiap entri di daftar $AWSHistory.Commands adalah tipe AWSCmdletHistory. Tipe ini memiliki anggota yang berguna sebagai berikut:

CmdletName

Nama cmdlet.

CmdletStart

DateTime saat cmdlet dijalankan.

CmdletEnd

DateTime saat cmdlet menyelesaikan semua proses.

Permintaan

Jika perekaman permintaan diaktifkan, daftar permintaan layanan terakhir.

Tanggapan

Daftar tanggapan layanan terakhir yang diterima.

LastServiceResponse

Helper akan mengembalikan tangggapan layanan terkini.

LastServiceRequest

Helper akan mengembalikan permintaan layanan terkini, jika tersedia.

Perhatikan bahwa variabel $AWSHistory tidak dibuat hingga cmdlet AWS yang membuat panggilan layanan digunakan. Ini mengevaluasi ke $null sampai saat itu.

catatan

Versi sebelumnya dari Tools for Windows PowerShell memancarkan data yang terkait dengan jawaban layanan sebagaiNote properti pada objek yang dikembalikan. Ini sekarang ditemukan pada entri jawaban yang direkam untuk setiap invokasi dalam daftar.

Set-AWSHistoryConfiguration

Invokasi cmdlet dapat menahan nol atau lebih entri permintaan dan jawaban layanan. Untuk membatasi dampak memori, daftar $AWSHistory menyimpan catatan hanya lima eksekusi cmdlet terakhir secara default; dan untuk masing-masing, lima jawaban layanan terakhir (dan jika diaktifkan, lima permintaan layanan terakhir). Anda dapat mengubah batas default ini dengan menjalankan cmdlet Set-AWSHistoryConfiguration. Hal ini memungkinkan Anda untuk mengontrol ukuran daftar, dan apakah permintaan layanan juga dicatat atau tidak:

PS > Set-AWSHistoryConfiguration -MaxCmdletHistory <value> -MaxServiceCallHistory <value> -RecordServiceRequests -IncludeSensitiveData

Semua parameter bersifat opsional.

Parameter MaxCmdletHistory menetapkan jumlah maksimum cmdlet yang dapat dilacak setiap saat. Nilai 0 mematikan perekaman kegiatan cmdlet AWS. Parameter MaxServiceCallHistory menetapkan jumlah maksimum jawaban (dan/atau permintaan) layanan yang dilacak untuk setiap cmdlet. Parameter RecordServiceRequests, jika ditentukan, mengaktifkan pelacakan permintaan layanan untuk setiap cmdlet. IncludeSensitiveDataParameter, jika ditentukan, mengaktifkan pelacakan jawaban layanan dan permintaan (jika dilacak) yang berisi data sensitif untuk setiap cmdlet.

Jika dijalankan tanpa parameter, Set-AWSHistoryConfiguration hanya mematikan setiap rekaman permintaan sebelumnya, tidak merubah ukuran daftar saat ini.

Untuk menghapus semua entri dalam daftar riwayat saat ini, jalankan cmdlet Clear-AWSHistory.

Contoh $AWSHistory

Menghitung rincian cmdlet AWS yang sedang disimpan dalam daftar ke alur.

PS > $AWSHistory.Commands

Mengakses rincian yang cmdlet AWS terakhir yang dijalankan:

PS > $AWSHistory.LastCommand

Mengakses rincian jawaban layanan terakhir yang diterima oleh cmdlet AWS terakhir yang dijalankan. Jika cmdlet AWS membagi output, cmdlet tersebut dapat membuat beberapa panggilan layanan untuk mendapatkan semua data atau jumlah maksimum data (ditentukan oleh parameter pada cmdlet).

PS > $AWSHistory.LastServiceResponse

Mengakses rincian permintaan terakhir yang dibuat (sekali lagi, cmdlet dapat membuat lebih dari satu permintaan jika membaginya atas nama pengguna). Hasil $null kecuali pelacakan permintaan layanan diaktifkan.

PS > $AWSHistory.LastServiceRequest

Page-to-Completion Otomatis untuk Operasi yang Mengembalikan Banyak Pembagian

Untuk API layanan yang memaksakan obyek maksimum default mengembalikan jumlah untuk panggilan tertentu atau yang mendukung set hasil yang dapat dihitung, semua cmdlet "page-to-completion" secara default. Setiap cmdlet membuat panggilan sebanyak yang diperlukan atas nama Anda untuk mengembalikan data lengkap ke alur.

Pada contoh berikut, yang menggunakan Get-S3Object, variabel $c berisi S3Object instans untuk setiap kunci dalam test bucket, kemungkinan merupakan data lengkap yang sangat besar.

PS > $c = Get-S3Object -BucketName test

Jika Anda ingin mempertahankan kontrol jumlah data yang dikembalikan, Anda dapat menggunakan parameter pada masing-masing cmdlet (misalnya, MaxKey pada Get-S3Object) atau Anda dapat secara eksplisit menangani pembagian sendiri dengan menggunakan kombinasi parameter pembagian pada cmdlet, dan data yang ditempatkan di variabel $AWSHistory untuk mendapatkan data token berikutnya dari layanan. Contoh berikut menggunakan MaxKeys parameter untuk membatasi jumlahS3Object instans yang dikembalikan ke paling banyak 500 pertama yang ditemukan dalam bucket.

PS > $c = Get-S3Object -BucketName test -MaxKey 500

Untuk mengetahui apakah lebih banyak data tersedia tetapi tidak dikembalikan, gunakan entri variabel sesi $AWSHistory yang mencatat panggilan layanan yang dibuat oleh cmdlet.

Jika ekspresi berikut mengevaluasi ke $true, Anda dapat menemukan penanda next untuk rangkaian hasil berikutnya menggunakan $AWSHistory.LastServiceResponse.NextMarker:

$AWSHistory.LastServiceResponse -ne $null && $AWSHistory.LastServiceResponse.IsTruncated

Untuk mengontrol pembagian secara manual dengan Get-S3Object, gunakan kombinasi dari parameter MaxKey dan Marker untuk cmdlet dan catatan IsTruncated/NextMarker pada jawaban yang direkam terakhir. Pada contoh berikut, variabel $c berisi hingga maksimum 500 instans S3Object untuk 500 objek berikutnya yang ditemukan dalam bucket setelah dimulainya penanda prefiks kunci tertentu.

PS > $c = Get-S3Object -BucketName test -MaxKey 500 -Marker $AWSHistory.LastServiceResponse.NextMarker