Migración de la Herramientas de AWS para PowerShell versión 4 a la versión 5 - Herramientas de AWS para PowerShell (versión 5)

¡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:

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 -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

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 -BucketName amzn-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 a UtcStartTime "». 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 a UtcModifiedSinceDate "». 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.

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 la versión 5.

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. LitJsonse 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.