Version 5 (V5) von AWS -Tools für PowerShell wurde veröffentlicht!
Informationen zu wichtigen Änderungen und zur Migration Ihrer Anwendungen finden Sie im Migrationsthema.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Migration von AWS -Tools für PowerShell Version 4 zu Version 5
AWS -Tools für PowerShell Version 5 (V5) enthält grundlegende Änderungen, die dazu führen könnten, dass Ihre vorhandenen Skripts nicht mehr funktionieren. In diesem Thema werden die wichtigsten Änderungen in Version 5 und mögliche Maßnahmen beschrieben, die Sie möglicherweise durchführen müssen, um Ihre Umgebung oder Ihren Code von Version 4 zu migrieren.
Weitere Informationen zu wichtigen Änderungen in der finden Sie AWS -Tools für PowerShell auch in den folgenden Ressourcen:
-
Der Blogbeitrag AWS -Tools für PowerShell V5 ist jetzt allgemein verfügbar
. -
Das V5 Development Tracker-Problem
in. GitHub Schauen Sie sich neben der Liste der wichtigsten Änderungen auch die Details der einzelnen Vorschauen an. -
Der Blogbeitrag Vorschau 1 von AWS -Tools für PowerShell V5
Anmerkung
Da sie AWS -Tools für PowerShell sich auf die verlassen AWS SDK für .NET, könnten sich einige der Änderungen im Zusammenhang mit Version 4 des SDK auch auf Version 5 der Tools für auswirken. PowerShell Informationen zu den Änderungen für Version 4 des AWS SDK für .NET finden Sie in den Migrationsinformationen im AWS SDK für .NET Entwicklerhandbuch.
Minimale PowerShell Version
Für die ältere, Windows-spezifische, einzelne, umfangreiche Modulversion der AWS -Tools für PowerShell sogenannten AWSPowerShell wurde die unterstützte PowerShell Mindestversion des Moduls auf 5.1 aktualisiert. Dies entspricht der AWS SDK für .NET neuen Mindestversion von.NET Framework 4.7.2.
Weitere Informationen zum AWSPower Legacy-Shell-Modul finden Sie unterInstallation unter Windows.
Installieren oder aktualisieren Sie AWS.Tools
V4
Bei der Installation oder Aktualisierung der modularisierten Version der Update-AWSToolsModule
Cmdlets AWS -Tools für PowerShellAWS.Tools
, called, Install-AWSToolsModule
and wird natürlich standardmäßig Version 5 von AWS.Tools
verwendet. Falls Sie aus irgendeinem Grund AWS.Tools
stattdessen Version 4 von installieren oder aktualisieren müssen, können Sie dies mit den folgenden Befehlen tun:
Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'
Weitere Informationen zur Installation und Aktualisierung der Tools für PowerShell finden Sie unter Erste Schritte
Brechen Sie die Cmdlet-Ausführung mit STRG+C und CMD+C ab
Version 5 von AWS -Tools für PowerShell ermöglicht es Ihnen, die Ausführung von Cmdlets mithilfe einer Tastenkombination wie STRG+C oder CMD+C abzubrechen.
Werttypen, für die Nullwerte zulässig sind
Die aus dem übernommenen Typen AWS SDK für .NET wurden aktualisiert, sodass sie die neuen Änderungen des SDK verwenden, die NULL-Werte zulassen. Beispielsweise wurden die Eigenschaften des Typs in int
geändert. Nullable[int]
Diese Änderung hat keinen Einfluss darauf, wie Eingabeparameterwerte für AWS-Cmdlets angegeben werden, da diese Wertetypparameter bereits als NULL-Werte modelliert wurden. Typen, die Nullwerte für die Cmdlet-Ausgabe zulassen, sind jedoch eine grundlegende Änderung, da Eigenschaften in der Cmdlet-Ausgabe die verschiedenen Standardwerte für Typen anstelle der verschiedenen Standardwerte enthalten. $null
Das folgende Beispiel zeigt das Verhalten von Tools for in Version 4. PowerShell In diesem Beispiel ist die MissingMeta
Eigenschaft auf 0 gesetzt, da dies der Standardwert von type istint
.
# In V4
PS >
Get-S3ObjectMetadata -BucketNameamzn-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
Das folgende Beispiel demonstriert das Verhalten von Tools for PowerShell in Version 5. In diesem Beispiel ist die MissingMeta
Eigenschaft auf $null
gesetzt.
# In V5
PS >
Get-S3ObjectMetadata -BucketNameamzn-s3-demo-bucket
-Key 'test
' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM
In den meisten Fällen ist keine Codeänderung erforderlich, da PowerShell eine implizite Konvertierung von Werttypen, für die keine Nullwerte zulässig sind, in Werttypen erfolgt, die keine NULL-Werte zulassen. Dies ist jedoch eine grundlegende Änderung für Code mit Vergleichslogik, der explizit nach einem Standardwert eines Nullwerttyps sucht. Die Vergleichslogik, die nach dem Standardwert eines Typs sucht, der keine NULL-Werte zulässt, muss geändert werden, um nach einem Wert zu suchen. $null
Für einige dieser Typen zeigen die folgenden Beispiele, wie der für V4 geschriebene Code aktualisiert wird, der prüft, ob nichts zurückgegeben wurde:
#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)
Da sie auf das AWS -Tools für PowerShell angewiesen sind AWS SDK für .NET, könnte es nützlich sein, zu untersuchen, wie sich ähnliche Änderungen auf Version 4 des SDK ausgewirkt haben. Diese Informationen finden Sie in der Dokumentation zur Migration von Werttypen im AWS SDK für .NET Entwicklerhandbuch.
Sammlungen
Einige Cmdlet-Ausgaben wurden dahingehend geändert, dass $null
statt leerer Sammlungen des Typs List
oder zurückgegeben werden. Dictionary
Weitere Informationen, einschließlich der Rückkehr zum alten Verhalten, finden Sie in den Migrationsinhalten für Sammlungen im AWS SDK für .NET Entwicklerhandbuch.
DateTime im Vergleich zu UTC DateTime
Einige V4-Cmdlets definieren veraltete DateTime Parameter sowie alternative DateTime UTC-Parameter. Diese veralteten DateTime Parameter wurden aus den V5-Cmdlets entfernt, und der Name der DateTime UTC-Parameter wurde in den ursprünglichen Namen der Nicht-UTC-Parameter geändert. DateTime
Im Folgenden finden Sie einige Beispiele für Cmdlets, für die diese Änderung implementiert wurde.
-
Get-ASScheduledAction
(V4-Cmdlet und V5-Cmdlet):-
Der
StartTime
Parameter wurde entfernt und der Name desUtcStartTime
Parameters wurde in "" geändert. StartTime -
Der
EndTime
Parameter wurde entfernt und der Name desUtcEndTime
Parameters wurde in "EndTime" geändert.
-
-
Copy-S3Object
(V4-Cmdlet und V5-Cmdlet):-
Der
ModifiedSinceDate
Parameter wurde entfernt und der Name desUtcModifiedSinceDate
Parameters wurde in "" geändert. ModifiedSinceDate -
Der
UnmodifiedSinceDate
Parameter wurde entfernt und der Name desUtcUnmodifiedSinceDate
Parameters wurde in "UnmodifiedSinceDate" geändert.
-
Im Folgenden finden Sie eine vollständige Liste der Cmdlets, die von dieser Änderung betroffen sind.
-
Get- CWMetric Statistic (auch bekannt als Get- CWMetric Statistics)
-
Get- RSCluster Snapshot (auch bekannt als Get- RSCluster Snapshots)
-
Get- RSEvent (auch bekannt als Get-RSEvents)
Pipelining und $AWSHistory
In Versionen AWS -Tools für PowerShell vor Version 4 $AWSHistory
wurde eine Sitzungsvariable namens eingeführt, die eine Aufzeichnung der AWS Cmdlet-Aufrufe und der Dienstantworten verwaltet, die für jeden Aufruf empfangen wurden.
In Version 4 der Tools for PowerShell wurde diese Sitzungsvariable zugunsten des -Select *
Parameters und des Arguments, mit denen die gesamte Dienstantwort zurückgegeben werden kann, als veraltet eingestuft. Der -Select
*
Parameter wird unter beschrieben. Pipelining, Ausgabe und Iteration
In Version 5 der Tools for PowerShell wurde die $AWSHistory
Sitzungsvariable vollständig entfernt. Infolgedessen wurden auch die Set-AWSHistoryConfiguration
Cmdlets Clear-AWSHistory
und entfernt.
Der Parameter -PassThru
Der -PassThru
Parameter wurde entfernt. Wenn ein Cmdlet standardmäßig keine Ausgabe zurückgibt, können Benutzer einen zurückgegebenen Parameterwert anfordern, indem sie -Select ^ParameterName
Weitere Details und Beispiele finden Sie im Blogbeitrag Preview 1 of AWS -Tools für PowerShell
Einige DynamoDB-Cmdlets wurden verschoben und umbenannt
Die Get-DDBStreamList
Cmdlets Get-DDBStream
und wurden aus dem Dynamo-Modul in ein neues DBV2 Modul namens Dynamo verschoben. DBStreams Sie wurden außerdem in Get- bzw. Get DDBSStream - DDBSStream List umbenannt.
Protokollierung sensibler Informationen
Das Protokollierungsverhalten wurde geändert, sodass es weniger wahrscheinlich ist, dass potenziell vertrauliche Informationen in die Cmdlet-Ausgabe aufgenommen werden, insbesondere in CI/CD bestimmten Situationen. Weitere Informationen und Anweisungen zur Wiederherstellung des V4-Verhaltens finden Sie unter. Protokollierung vertraulicher Informationen
Auflösung von Anmeldeinformationen und Profilen
Sie AWS -Tools für PowerShell wurden aktualisiert und verwenden nun bestimmte Umgebungsvariablen bei der Auflösung von Anmeldeinformationen für ein Cmdlet:AWS_PROFILE
,, undAWS_ACCESS_KEY_ID
. AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
Darüber hinaus wurden einige Änderungen in der Reihenfolge der Auflösung von Anmeldeinformationen und Profilen vorgenommen. Weitere Informationen finden Sie unter Auflösung von Anmeldeinformationen und Profilen.
Fehlermeldung bei den Anmeldeinformationen
Die Fehlermeldung, die AWS -Tools für PowerShell zurückgibt, wenn die entsprechenden Anmeldeinformationen nicht abgerufen werden können, hat sich geändert.
In Version 4 der Tools lautete die Meldung etwa wie folgt:
Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: No credentials specified or obtained from persisted/shell defaults.
In Version 5 der Tools sieht die Meldung stattdessen wie folgt aus:
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>
Konsistente automatische Iteration
Alle paginierten Cmdlets wurden aktualisiert, sodass sie standardmäßig alle Daten automatisch iterieren. Sie können dieses Verhalten rückgängig machen, indem Sie das Set-Cmdlet verwenden. AWSAuto IterationMode Wenn Sie ausführenSet-AWSAutoIterationMode -IterationMode
v4
, werden Operationen, die in Version 4 automatisch iteriert wurden, immer noch automatisch iteriert, aber der Rest kehrt zur manuellen Iteration zurück. Verwenden Sie das Cmdlet Get- AWSAuto IterationMode, um zu ermitteln, auf welchen Modus die automatische Iteration eingestellt ist.
Ein Beispiel für ein Cmdlet, das auf diese Weise aktualisiert wurde, finden Sie im Cmdlet (V4-Cmdlet und Get-CWLLogEvent
V5-Cmdlet).
Einzelheiten zur automatischen Iteration finden Sie unter. Iteration durch seitenweise gespeicherte Daten
S3-Cmdlets sind veraltet und wurden ersetzt
Für Amazon S3 sind die Cmdlets Get-S3ACL und Set-S3ACL veraltet. Verwenden Sie stattdessen die folgenden neuen Cmdlets: ACL, ACL, ACL, ACL. Get-S3Bucket Set-S3Bucket Get-S3Object Set-S3Object
S3-Schlüsselparameter bereinigen und kürzen
Bestimmte Amazon S3 S3-Cmdlets akzeptieren Parameter mit dem Namen Key
und. KeyPrefix
Version 4 von AWS -Tools für PowerShell würde diese Parameter auf folgende Weise bereinigen und kürzen: führende Leerzeichen, Schrägstriche („/“) und umgekehrte Schrägstriche („\“) entfernen, alle anderen umgekehrten Schrägstriche in Schrägstriche umwandeln und nachfolgende Leerzeichen entfernen. In Version 5 der Tools für PowerShell ist dies nicht mehr das Standardverhalten. Sie können zu diesem Verhalten zurückkehren, indem Sie den -EnableLegacyKeyCleaning
Parameter angeben.
Diese Informationen gelten für die folgenden Cmdlets:
Funktionen für interaktive Sitzungen
Dem SSMSessionStart-Cmdlet wurden interaktive Sitzungsfunktionen hinzugefügt, die dem Verhalten entsprechen. AWS CLI Zum Beispiel:
Start-SSMSession -Target 'i-1234567890abcdef0'
Wenn Sie ein veraltetes Verhalten benötigen, fügen Sie den -DisablePluginInvocation
Parameter in den Befehl ein. Start-SSMSession
CloudWatch Alarme
Das CWAlarm Cmdlet Get- wurde aktualisiert und gibt nun standardmäßig sowohl metrische als auch zusammengesetzte CloudWatch Amazon-Alarme zurück. Um die Ausgabe auf metrische oder zusammengesetzte Alarme zu beschränken, müssen Sie jeweils den -AlarmType
Parameter: Get-CWAlarm -AlarmType
'MetricAlarms'
oder Get-CWAlarm -AlarmType 'CompositeAlarms'
angeben.
LitJson
AWS -Tools für PowerShell Sie wurden aktualisiert, sodass sie jetzt verwendet werden und System.Text.Json
nicht mehr LitJson
zur Serialisierung verwendet werden. LitJson
wurde aus Version 5 der Tools entfernt.
Die LoggedAt
Ausgabeeigenschaft
Die LoggedAt
Ausgabeeigenschaft wurde entfernt. In Version 4 der Tools wurde diese Eigenschaft standardmäßig für einige Cmdlets zurückgegeben (z. B. Get-SSMCommandInvocationDetail
undInvoke-LMFunction
).
Wenn Sie die von der LoggedAt
Output-Eigenschaft bereitgestellten Informationen replizieren müssen, können Sie etwas Ähnliches wie das Folgende in Ihre Skripts aufnehmen:
$loggedAt = (Get-Date).ToUniversalTime().ToString('s')
Programmierelemente, die entfernt wurden
Eine Reihe von Programmierelementen wurde aus Version 5 der Tools for PowerShell entfernt. Diese sind unten aufgeführt, sofern sie nicht bereits behandelt wurden, zusammen mit möglichen Schritten, die Sie ergreifen können, um deren Entfernung zu ermöglichen, falls vorhanden.
-
Das
Invoke-LMFunctionAsync
Cmdlet. -
Das
Get-EC2ImageByName
Cmdlet. Verwenden Sie stattdessen das Cmdlet Get- SSMLatest EC2 Image. -
Der
CalculateContentMD5Header
Parameter aus dem Cmdlet. Write-S3Object