Migrasi dari Alat AWS untuk PowerShell versi 4 ke versi 5 - Alat AWS untuk PowerShell (versi 5)

Versi 5 (V5) dari Alat AWS untuk PowerShell telah dirilis!

Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat topik migrasi.

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

Migrasi dari Alat AWS untuk PowerShell versi 4 ke versi 5

Alat AWS untuk PowerShell versi 5 (V5) memiliki perubahan yang melanggar, yang dapat menyebabkan skrip Anda yang ada berhenti berfungsi. Topik ini menjelaskan perubahan yang melanggar di V5 dan kemungkinan pekerjaan yang mungkin perlu Anda lakukan untuk memigrasikan lingkungan atau kode Anda dari V4.

Untuk informasi tambahan tentang perubahan penting dalam Alat AWS untuk PowerShell juga lihat sumber daya berikut:

catatan

Karena Alat AWS untuk PowerShell bergantung pada AWS SDK untuk .NET, beberapa perubahan yang terkait dengan V4 SDK mungkin juga memengaruhi V5 Alat untuk. PowerShell Untuk melihat apa yang telah berubah untuk V4 AWS SDK untuk .NET, lihat informasi migrasi di Panduan AWS SDK untuk .NET Pengembang.

PowerShell Versi minimum

Untuk versi lama, khusus Windows, tunggal, modul besar dari, yang disebut AWSPowerShell Alat AWS untuk PowerShell, versi minimum yang didukung PowerShell modul telah diperbarui ke 5.1. Ini untuk mencocokkan versi minimum AWS SDK untuk .NET baru dari .NET Framework 4.7.2.

Untuk informasi selengkapnya tentang modul AWSPower Shell lama, lihatMenginstal pada Windows.

Instal atau perbarui AWS.Tools V4

Saat menginstal atau memperbarui versi termodulasi dari, yang disebut Alat AWS untuk PowerShellAWS.Tools, Install-AWSToolsModule dan Update-AWSToolsModule cmdlet secara alami akan menggunakan versi 5 secara default. AWS.Tools Jika karena alasan tertentu Anda perlu menginstal atau memperbarui versi 4 AWS.Tools sebagai gantinya, Anda dapat melakukannya dengan menggunakan perintah berikut, masing-masing:

Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'

Untuk informasi tambahan tentang menginstal dan memperbarui Alat untuk PowerShell, lihat Memulai

Batalkan eksekusi cmdlet dengan CTRL+C dan CMD+C

Versi 5 Alat AWS untuk PowerShell memungkinkan Anda untuk membatalkan eksekusi cmdlet dengan menggunakan pintasan keyboard seperti CTRL+C atau CMD+C.

Jenis nilai nullable

Jenis yang diadopsi dari AWS SDK untuk .NET telah diperbarui untuk menggunakan perubahan nullable baru SDK. Misalnya, properti tipe int telah diubah menjadiNullable[int]. Perubahan ini tidak memengaruhi cara nilai parameter input ditentukan untuk cmdlet AWS karena parameter tipe nilai tersebut sudah dimodelkan sebagai nullable. Namun, tipe nullable untuk output cmdlet adalah perubahan besar karena properti dalam output cmdlet akan berisi $null alih-alih berbagai nilai default untuk tipe.

Contoh berikut menunjukkan perilaku di V4 dari Tools for. PowerShell Dalam contoh ini, MissingMeta properti diatur ke 0 karena itu adalah nilai default dari tipeint.

# In V4 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM 0 1/1/0001 12:00:00 AM

Contoh berikut menunjukkan perilaku di V5 dari Tools for. PowerShell Dalam contoh ini, MissingMeta properti diatur ke$null.

# In V5 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM

Dalam kebanyakan kasus, tidak ada perubahan kode yang diperlukan karena PowerShell memiliki konversi implisit dari tipe nilai nullable ke tipe nilai non-nullable. Namun, ini adalah perubahan besar untuk kode logika perbandingan yang memeriksa secara eksplisit untuk nilai default dari jenis nilai nullable. Logika perbandingan yang memeriksa nilai default dari tipe non-nullable harus dimodifikasi untuk diperiksa. $null

Untuk beberapa jenis ini, contoh berikut menunjukkan cara memperbarui kode yang ditulis untuk V4 yang memeriksa apakah tidak ada yang dikembalikan:

#Type int: # In V4, if you were checking whether an int is 0... if($s3Metadata.MissingMeta -eq 0){} # In V5, check if the int is null instead: if($s3Metadata.MissingMeta -eq $null) {} # Type datetime: # In V4, if you were checking whether a datetime is '0001-01-01'... if($s3Metadata.ObjectLockRetainUntilDate -eq '0001-01-01'){} # In V5, check if the datetime is null instead: if($s3Metadata.ObjectLockRetainUntilDate -eq $null){} # Type boolean: # In V4, if you were checking whether a boolean is $false... if($s3Metadata.BucketKeyEnabled -eq $false){} # In V5, check if the boolean is null instead: if($s3Metadata.BucketKeyEnabled -eq $null)

Karena Alat AWS untuk PowerShell mengandalkan AWS SDK untuk .NET, mungkin berguna untuk memeriksa bagaimana perubahan serupa memengaruhi SDK versi 4. Untuk menemukan informasi ini, lihat Konten migrasi tipe nilai di Panduan AWS SDK untuk .NET Pengembang.

Koleksi

Beberapa output cmdlet telah diubah untuk kembali, $null bukan koleksi tipe List kosong atau. Dictionary Untuk informasi tambahan, termasuk cara mengembalikan ke perilaku lama, lihat konten migrasi untuk Koleksi di Panduan AWS SDK untuk .NET Pengembang.

DateTime versus UTC DateTime

Beberapa cmdlet V4 menentukan DateTime parameter yang sudah usang, serta parameter UTC alternatif. DateTime DateTime Parameter usang ini telah dihapus dari cmdlet V5, dan nama parameter UTC telah diubah menjadi nama asli DateTime parameter non-UTC. DateTime

Berikut ini adalah beberapa contoh cmdlet yang perubahannya telah diterapkan.

  • Get-ASScheduledAction(Cmdlet V4 dan cmdlet V5):

    • StartTimeParameter telah dihapus, dan nama UtcStartTime parameter telah diubah menjadi "StartTime”.

    • EndTimeParameter telah dihapus, dan nama UtcEndTime parameter telah diubah menjadi "EndTime”.

  • Copy-S3Object(Cmdlet V4 dan cmdlet V5):

    • ModifiedSinceDateParameter telah dihapus, dan nama UtcModifiedSinceDate parameter telah diubah menjadi "ModifiedSinceDate”.

    • UnmodifiedSinceDateParameter telah dihapus, dan nama UtcUnmodifiedSinceDate parameter telah diubah menjadi "UnmodifiedSinceDate”.

Berikut ini adalah daftar lengkap cmdlet yang terpengaruh oleh perubahan ini.

Pipelining dan $AWSHistory

Dalam versi Alat AWS untuk 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. -Select *Parameter dijelaskan dalamPipelining, output, dan iterasi.

Di V5 dari Tools for PowerShell, variabel $AWSHistory sesi telah dihapus sepenuhnya. Sebagai konsekuensinya, Clear-AWSHistory dan Set-AWSHistoryConfiguration cmdlet juga telah dihapus.

-PassThruParameternya

-PassThruParameter telah dihapus. Ketika cmdlet tidak mengembalikan output apa pun secara default, pengguna dapat meminta nilai parameter yang dikembalikan dengan menggunakan. -Select ^ParameterName Untuk detail dan contoh tambahan, lihat posting blog Pratinjau 1 dari Alat AWS untuk PowerShell V5.

Beberapa cmdlet DynamoDB dipindahkan dan diganti namanya

Get-DDBStreamListCmdlet Get-DDBStream dan telah dipindahkan dari modul Dynamo ke DBV2 modul baru yang disebut Dynamo. DBStreams Mereka juga telah berganti nama menjadi Get- DDBSStream dan Get- DDBSStream List, masing-masing.

Pencatatan informasi sensitif

Perilaku logging telah diubah sehingga informasi yang berpotensi sensitif cenderung tidak dimasukkan dalam output cmdlet, terutama dalam CI/CD situasi. Untuk informasi selengkapnya dan petunjuk tentang cara kembali ke perilaku V4, lihat. Pencatatan informasi sensitif

Resolusi kredensi dan profil

Alat AWS untuk PowerShell Telah diperbarui untuk menggunakan variabel lingkungan tertentu saat menyelesaikan kredensil untuk cmdlet:AWS_PROFILE,, dan. AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN Selain itu, ada beberapa perubahan dalam urutan resolusi untuk kredensil dan profil. Untuk informasi selengkapnya, lihat Resolusi kredensi dan profil.

Pesan kesalahan kredenal

Pesan kesalahan yang Alat AWS untuk PowerShell dikembalikan jika tidak dapat memperoleh kredensil yang sesuai telah berubah.

Di v4 alat, pesannya mirip dengan yang berikut:

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: No credentials specified or obtained from persisted/shell defaults.

Di V5 alat, pesannya mirip dengan yang berikut:

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: Failed to resolve AWS credentials. The credential providers used to search for credentials returned the following errors: ... <list of specific exceptions>

Iterasi otomatis yang konsisten

Semua cmdlet paginasi telah diperbarui untuk mengulangi semua data secara otomatis secara default. Anda dapat mengembalikan perilaku ini dengan menggunakan set- AWSAuto IterationMode cmdlet. Jika Anda menjalankanSet-AWSAutoIterationMode -IterationMode v4, operasi yang diulang secara otomatis di v4 masih akan diulang secara otomatis, tetapi sisanya akan kembali ke iterasi manual. Untuk menentukan mode iterasi otomatis yang disetel, gunakan cmdlet Get- AWSAuto IterationMode.

Untuk melihat contoh cmdlet yang telah diperbarui dengan cara ini, lihat cmdlet (cmdlet V4 dan Get-CWLLogEvent cmdlet V5).

Untuk detail tentang iterasi otomatis, lihat. Iterasi melalui data halaman

Cmdlet S3 tidak digunakan lagi dan diganti

Untuk Amazon S3, cmdlet Get-S3acl dan Set-S3acl tidak digunakan lagi. Gunakan cmdlet baru berikut sebagai gantinya: Get-S3BucketACL, ACL, ACL, Set-S3BucketACL. Get-S3Object Set-S3Object

Membersihkan dan memangkas parameter kunci S3

Cmdlet Amazon S3 tertentu menerima parameter bernama dan. Key KeyPrefix V4 dari Alat AWS untuk PowerShell akan membersihkan dan memangkas parameter ini dengan cara berikut: hapus spasi terdepan, garis miring maju (“/”), dan garis miring terbalik (“\”), ubah semua garis miring terbalik lainnya menjadi garis miring maju, dan hapus spasi tambahan. Di V5 dari Tools for PowerShell, ini bukan lagi perilaku default. Anda dapat kembali ke perilaku ini dengan menentukan parameter. -EnableLegacyKeyCleaning

Informasi ini berlaku untuk cmdlet berikut:

Kemampuan sesi interaktif

Kemampuan sesi interaktif telah ditambahkan ke Start- SSMSession cmdlet, yang selaras dengan perilaku. AWS CLI Misalnya:

Start-SSMSession -Target 'i-1234567890abcdef0'

Jika Anda membutuhkan perilaku lama, sertakan -DisablePluginInvocation parameter dalam Start-SSMSession perintah.

CloudWatch alarm

Get- CWAlarm cmdlet telah diperbarui untuk mengembalikan CloudWatch alarm Amazon metrik dan komposit secara default. Untuk membatasi output ke alarm metrik atau komposit, Anda harus menentukan -AlarmType parameter: Get-CWAlarm -AlarmType 'MetricAlarms' atauGet-CWAlarm -AlarmType 'CompositeAlarms', masing-masing.

LitJson

Alat AWS untuk PowerShell Telah diperbarui untuk digunakan System.Text.Json alih-alih LitJson untuk serialisasi. LitJsontelah dihapus dari V5 alat.

Properti LoggedAt output

Properti LoggedAt output telah dihapus. Di V4 alat, properti ini dikembalikan secara default pada beberapa cmdlet (misalnya Get-SSMCommandInvocationDetail dan). Invoke-LMFunction

Jika Anda perlu mereplikasi informasi yang disediakan oleh properti LoggedAt output, Anda dapat menyertakan sesuatu yang mirip dengan yang berikut ini dalam skrip Anda:

$loggedAt = (Get-Date).ToUniversalTime().ToString('s')

Elemen pemrograman yang telah dihapus

Sejumlah elemen pemrograman telah dihapus dari V5 dari Tools for PowerShell. Ini tercantum di bawah ini, jika belum tercakup sebelumnya, bersama dengan langkah-langkah potensial yang dapat Anda ambil untuk mengakomodasi penghapusan mereka, jika ada.