¡Se Herramientas de AWS para PowerShell ha lanzado la versión 5 (V5) del!
Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el tema sobre migración.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migración de la Herramientas de AWS para PowerShell versión 4 a la versión 5
Herramientas de AWS para PowerShell la versión 5 (V5) presenta cambios importantes que podrían provocar que los scripts existentes dejen de funcionar. En este tema se describen los cambios más importantes de la versión 5 y las posibles medidas que podría necesitar realizar para migrar el entorno o el código desde la versión 4.
Para obtener información adicional sobre los cambios notables en el, consulte Herramientas de AWS para PowerShell también los siguientes recursos:
-
La entrada del blog Herramientas de AWS para PowerShell V5 ya está disponible de forma general
. -
El problema del rastreador de desarrollo de V5
en. GitHub Además de la lista de cambios importantes, asegúrate de revisar los detalles de cada vista previa. -
La entrada del blog: Vista previa 1 de la Herramientas de AWS para PowerShell versión 5
nota
Dado que se Herramientas de AWS para PowerShell basan en la AWS SDK para .NET, algunos de los cambios relacionados con la V4 del SDK podrían afectar también a la V5 de las Herramientas para. PowerShell Para ver qué ha cambiado en la versión 4 del AWS SDK para .NET, consulta la información sobre la migración en la Guía para AWS SDK para .NET desarrolladores.
PowerShell Versión mínima
Para la versión antigua, específica para Windows, de módulo único y de gran tamaño Herramientas de AWS para PowerShell, denominada AWSPowerShell, la PowerShell versión mínima compatible del módulo se ha actualizado a 5.1. Esto debe coincidir con la AWS SDK para .NET nueva versión mínima de .NET Framework 4.7.2.
Para obtener más información sobre el módulo AWSPower Shell anterior, consulteInstalación en Windows.
Instale o actualice la AWS.Tools
V4
Al instalar o actualizar la versión modularizada de los Update-AWSToolsModule
cmdlets Install-AWSToolsModule
y Herramientas de AWS para PowerShellAWS.Tools
, por supuesto, utilizarán la versión 5 de de forma predeterminada. AWS.Tools
Si por alguna razón necesita instalar o actualizar la versión 4 deAWS.Tools
, puede hacerlo mediante los siguientes comandos, respectivamente:
Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'
Para obtener información adicional sobre la instalación y actualización de las herramientas para PowerShell, consulte Introducción
Cancela la ejecución del cmdlet con CTRL+C y CMD+C
La versión 5 de Herramientas de AWS para PowerShell permite cancelar la ejecución del cmdlet mediante un método abreviado de teclado como CTRL+C o CMD+C.
Tipos de valores que admiten valores NULL
Los tipos adoptados a partir del se AWS SDK para .NET han actualizado para utilizar los nuevos cambios anulables del SDK. Por ejemplo, las propiedades del tipo se int
han cambiado a. Nullable[int]
Este cambio no afecta a la forma en que se especifican los valores de los parámetros de entrada para los cmdlets de AWS, ya que esos parámetros de tipo de valor ya estaban modelados como anulables. Sin embargo, los tipos que admiten valores NULL en la salida de los cmdlets representan un cambio radical, ya que las propiedades de la salida del cmdlet contendrán los distintos valores predeterminados de los tipos, en lugar de los valores predeterminados. $null
En el siguiente ejemplo, se muestra el comportamiento en la versión 4 de Tools for. PowerShell En este ejemplo, la MissingMeta
propiedad se establece en 0 porque es el valor de tipo predeterminadoint
.
# 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
El siguiente ejemplo demuestra el comportamiento en la versión 5 de Tools for PowerShell. En este ejemplo, la MissingMeta
propiedad se establece en. $null
# 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
En la mayoría de los casos, no es necesario cambiar el código porque PowerShell implica una conversión implícita de tipos de valores que admiten valores NULL a tipos de valores que no admiten valores NULL. Sin embargo, se trata de un cambio radical en el código de lógica de comparación, que comprueba de forma explícita el valor predeterminado de un tipo de valor que admite valores nulos. La lógica de comparación que comprueba el valor predeterminado de un tipo no anulable debe modificarse para comprobarlo. $null
Para algunos de estos tipos, los siguientes ejemplos muestran cómo actualizar el código escrito para la versión 4 para comprobar si no se ha devuelto nada:
#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)
Dado que se Herramientas de AWS para PowerShell basan en el AWS SDK para .NET, podría ser útil examinar cómo afectaron cambios similares a la versión 4 del SDK. Para obtener esta información, consulte el contenido sobre migración de tipos de valores en la Guía para AWS SDK para .NET desarrolladores.
Colecciones
Se han modificado algunos resultados de los cmdlets para que $null
devuelvan colecciones vacías del tipo List
o. Dictionary
Para obtener información adicional, incluida la forma de volver al comportamiento anterior, consulte el contenido de migración de las colecciones en la AWS SDK para .NET Guía para desarrolladores.
DateTime frente a UTC DateTime
Algunos cmdlets de la versión 4 definen DateTime parámetros obsoletos, así como parámetros UTC DateTime alternativos. Estos DateTime parámetros obsoletos se han eliminado de los cmdlets de la versión 5 y se ha cambiado el nombre de DateTime los parámetros UTC por el nombre original de los parámetros que no son de UTC. DateTime
A continuación, se muestran algunos ejemplos de cmdlets en los que se ha implementado este cambio.
-
Get-ASScheduledAction
(cmdlet V4 y cmdlet V5):-
Se quitó el
StartTime
parámetro y se cambió su nombre aUtcStartTime
"». StartTime -
Se ha eliminado el
EndTime
parámetro y se ha cambiado su nombre a "EndTime».UtcEndTime
-
-
Copy-S3Object
(cmdlet V4 y cmdlet V5):-
Se quitó el
ModifiedSinceDate
parámetro y se cambió su nombre aUtcModifiedSinceDate
"». ModifiedSinceDate -
Se ha eliminado el
UnmodifiedSinceDate
parámetro y se ha cambiado su nombre a "UnmodifiedSinceDate».UtcUnmodifiedSinceDate
-
La siguiente es una lista completa de los cmdlets afectados por este cambio.
-
Get- CWMetric Statistic (alias Get- CWMetric Statistics)
-
Get- RSCluster Snapshot (alias Get- RSCluster Snapshots)
-
Get- RSEvent (alias Get-) RSEvents
Canalización y $AWSHistory
En las versiones Herramientas de AWS para PowerShell anteriores a la V4, se $AWSHistory
introdujo una variable de sesión llamada que mantiene un registro de las invocaciones de AWS cmdlets y las respuestas de servicio que se recibieron en cada invocación.
En la versión 4 de Tools for PowerShell, esta variable de sesión quedó obsoleta en favor del -Select *
parámetro y el argumento, que se pueden utilizar para devolver la respuesta completa del servicio. El -Select
*
parámetro se describe enCanalización, salida e iteración.
En la versión 5 de Tools for PowerShell, la variable de $AWSHistory
sesión se ha eliminado por completo. Como consecuencia, también se han Clear-AWSHistory
eliminado los Set-AWSHistoryConfiguration
cmdlets y.
Parámetro -PassThru
Se ha -PassThru
eliminado el parámetro. Cuando un cmdlet no devuelve ningún resultado de forma predeterminada, los usuarios pueden solicitar un valor de parámetro devuelto mediante. -Select ^ParameterName
Para obtener más detalles y ejemplos, consulte la entrada del blog Vista previa 1 de Herramientas de AWS para PowerShell
Algunos cmdlets de DynamoDB se movieron y cambiaron de nombre
Los Get-DDBStreamList
cmdlets Get-DDBStream
y se movieron del módulo Dynamo a un DBV2 módulo nuevo denominado Dynamo. DBStreams También se les ha cambiado el nombre a Get- DDBSStream y Get- List, DDBSStream respectivamente.
Registro de información confidencial
Se ha modificado el comportamiento de registro para que sea menos probable que se incluya información potencialmente confidencial en la salida del cmdlet, especialmente en CI/CD determinadas situaciones. Para obtener más información e instrucciones sobre cómo volver al comportamiento de la V4, consulte. Registro de información confidencial
Resolución de credencial y perfil
Se Herramientas de AWS para PowerShell han actualizado para utilizar determinadas variables de entorno al resolver las credenciales de un cmdlet:AWS_PROFILE
,AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
y. AWS_SESSION_TOKEN
Además, se han producido algunos cambios en el orden de resolución de las credenciales y los perfiles. Para obtener más información, consulte Resolución de credencial y perfil.
Mensaje de error de credenciales
Ha cambiado el mensaje de error que Herramientas de AWS para PowerShell devuelve si no puede obtener las credenciales adecuadas.
En la versión 4 de las herramientas, el mensaje era similar al siguiente:
Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: No credentials specified or obtained from persisted/shell defaults.
En la versión 5 de las herramientas, el mensaje es similar al siguiente:
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>
Iteración automática coherente
Todos los cmdlets paginados se han actualizado para iterar automáticamente todos los datos de forma predeterminada. Puede revertir este comportamiento mediante el cmdlet Set-. AWSAuto IterationMode Si se ejecutaSet-AWSAutoIterationMode -IterationMode
v4
, las operaciones que se iteraron automáticamente en la versión 4 seguirán repitiéndose automáticamente, pero el resto volverá a la iteración manual. Para determinar en qué modo está establecido la iteración automática, utilice el cmdlet Get- AWSAuto IterationMode.
Para ver un ejemplo de un cmdlet que se ha actualizado de esta manera, consulte el cmdlet (cmdlet V4 y Get-CWLLogEvent
cmdlet V5).
Para obtener más información sobre la iteración automática, consulte. Iteración a través de datos paginados
Los cmdlets de S3 han quedado obsoletos y han sido reemplazados
En Amazon S3, los cmdlets Get-S3ACL y Set-S3ACL han quedado obsoletos. En su lugar, utilice los siguientes cmdlets nuevos: ACL, ACL, ACL. Get-S3Bucket Set-S3Bucket Get-S3Object Set-S3Object
Limpiar y recortar los parámetros clave de S3
Algunos cmdlets de Amazon S3 aceptan parámetros denominados Key
y. KeyPrefix
La versión 4 de ellos Herramientas de AWS para PowerShell limpiaría y recortaría estos parámetros de las siguientes maneras: eliminaría los espacios iniciales, las barras diagonales («/») y las barras invertidas («\»), convertiría todas las demás barras invertidas en barras diagonales directas y eliminaría los espacios finales. En la versión 5 de Tools for PowerShell, este comportamiento ya no es el predeterminado. Puede volver a este comportamiento especificando el -EnableLegacyKeyCleaning
parámetro.
Esta información se aplica a los siguientes cmdlets:
Capacidades de sesión interactiva
Se han agregado capacidades de sesión interactiva al SSMSession cmdlet Start-, que se alinean con el comportamiento. AWS CLI Por ejemplo:
Start-SSMSession -Target 'i-1234567890abcdef0'
Si necesita un comportamiento heredado, incluya el -DisablePluginInvocation
parámetro en el comando. Start-SSMSession
CloudWatch alarmas
El CWAlarm cmdlet Get- se ha actualizado para que devuelva CloudWatch alarmas métricas y compuestas de Amazon de forma predeterminada. Para limitar la salida a alarmas métricas o compuestas, debe especificar el -AlarmType
parámetro: Get-CWAlarm -AlarmType
'MetricAlarms'
oGet-CWAlarm -AlarmType 'CompositeAlarms'
, respectivamente.
LitJson
Se Herramientas de AWS para PowerShell han actualizado para System.Text.Json
su uso en lugar de LitJson
para la serialización. LitJson
se ha eliminado de la versión 5 de las herramientas.
La propiedad LoggedAt
de salida
Se ha eliminado la propiedad de LoggedAt
salida. En la versión 4 de las herramientas, esta propiedad se devolvía de forma predeterminada en algunos cmdlets (por ejemplo, Get-SSMCommandInvocationDetail
yInvoke-LMFunction
).
Si necesita replicar la información proporcionada por la propiedad de LoggedAt
salida, puede incluir algo similar a lo siguiente en los scripts:
$loggedAt = (Get-Date).ToUniversalTime().ToString('s')
Elementos de programación que se eliminaron
Se han eliminado varios elementos de programación de la versión 5 de Tools for PowerShell. Estos se enumeran a continuación, si no se han mencionado anteriormente, junto con las posibles medidas que puede tomar para proceder a su eliminación, si las hubiera.
-
El
Invoke-LMFunctionAsync
cmdlet. -
El
Get-EC2ImageByName
cmdlet. En su lugar, utilice el cmdlet Get- SSMLatest EC2 Image. -
El
CalculateContentMD5Header
parámetro del cmdlet. Write-S3Object