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.
Canalización, salida e iteración en el AWS Tools for PowerShell
Canalización
PowerShell anima a los usuarios a conectar los cmdlets a canalizaciones
PS >
Get-EC2Instance | Stop-EC2Instance
Salida del cmdlet
Para facilitar la canalización, es AWS SDK for .NET posible que algunos datos de las respuestas del se descarten de forma predeterminada. El resultado de los AWS Tools for PowerShell cmdlets no se ha modificado para incluir las instancias de respuesta y resultado del servicio como Note
propiedades del objeto de colección emitido. En cambio, en el caso de las llamadas que emiten una única colección como salida, la colección ahora se enumera en la canalización. PowerShell Esto significa que los datos de SDK respuesta y resultado no pueden existir en la canalización porque no hay ningún objeto de recopilación al que puedan adjuntarse.
Aunque es probable que la mayoría de los usuarios no necesiten estos datos, pueden resultar útiles con fines de diagnóstico, ya que permiten ver exactamente lo que se envió y lo que se recibió de las llamadas de AWS servicio subyacentes que realizó el cmdlet. A partir de la AWS Tools for PowerShell versión 4, los cmdlets pueden usar el -Select *
parámetro y el argumento para devolver la respuesta completa del servicio.
nota
En las versiones AWS Tools for 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. Este parámetro se describe en este tema.
Esta es una documentación preliminar para una característica en versión de vista previa. Está sujeta a cambios. |
La $AWSHistory
variable se eliminará en la versión 5 del AWS Tools for PowerShell. Para obtener más información, consulte la entrada del blog Aviso de la próxima versión principal 5 de AWS Tools for PowerShell
Para ilustrar cómo se pueden devolver todos los datos de una respuesta, considere los siguientes ejemplos.
El primer ejemplo simplemente devuelve una lista de buckets de Amazon S3. Este es el comportamiento predeterminado.
PS >
Get-S3Bucket
CreationDate BucketName ------------ ---------- 9/22/2023 10:54:35 PM amzn-s3-demo-bucket1 9/22/2023 11:04:37 AM amzn-s3-demo-bucket2 9/22/2023 12:54:34 PM amzn-s3-demo-bucket3
El segundo ejemplo devuelve un objeto de AWS SDK for .NET respuesta. Como -Select *
se especificó, el resultado incluye la API respuesta completa, que contiene el conjunto de cubos de la Buckets
propiedad. En este ejemplo, el Format-List
cmdlet no es estrictamente necesario, pero está presente para garantizar que se muestren todas las propiedades.
PS >
Get-S3Bucket -Select * | Format-List
LoggedAt : 10/1/2023 9:45:52 AM Buckets : {amzn-s3-demo-bucket1, amzn-s3-demo-bucket2, amzn-s3-demo-bucket3} Owner : Amazon.S3.Model.Owner ContinuationToken : ResponseMetadata : Amazon.Runtime.ResponseMetadata ContentLength : 0 HttpStatusCode : OK
Iteración a través de datos paginados
En las siguientes secciones se describen los distintos tipos de iteración posibles.
Iteración automática
En el caso de los servicios APIs que imponen un número máximo predeterminado de objetos devueltos para una llamada determinada o que admiten conjuntos de resultados paginables, la mayoría de los cmdlets implementan la iteración automática, lo que habilita el comportamiento predeterminado de "». page-to-completion En este escenario, un cmdlet realiza tantas llamadas como sea necesario en su nombre para devolver el conjunto de datos completo a la canalización.
En el siguiente ejemplo, que usa el Get-S3Object
cmdlet, la $result
variable contiene S3Object
instancias para cada clave de un depósito llamadoamzn-s3-demo-bucket1
, lo que puede ser un conjunto de datos muy grande.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1
En el siguiente ejemplo, se reduce el número de resultados de cada página durante la iteración automática del valor predeterminado de 1000 a 500. El ejemplo realiza el doble de llamadas de iteración automática porque solo se devuelve la mitad de los resultados por cada llamada.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500
nota
En la AWS Tools for PowerShell versión 4, algunos cmdlets para operaciones paginadas no implementan la iteración automática. Si un cmdlet no tiene el -NoAutoIteration
parámetro, como se explica en la siguiente sección, no implementa la iteración automática.
Deshabilita la iteración automática
Si desea que las Herramientas PowerShell devuelvan solo la primera página de datos, puede añadir el -NoAutoIteration
parámetro para evitar que se devuelvan páginas de datos adicionales.
En el siguiente ejemplo, se utilizan los -MaxKey
parámetros -NoAutoIteration
y para limitar el número de S3Object
instancias devueltas a no más de las 500 primeras que se encuentren en el depósito.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration
Para determinar si había más datos disponibles pero no se devolvieron, usa el -Select *
parámetro y el argumento y comprueba si hay un valor en la siguiente propiedad del token.
En el ejemplo siguiente se muestra $true
si hay más de 500 objetos en el depósito o si $false
no.
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration -Select *
PS >
$null -eq $result.NextMarker
nota
Los nombres de la siguiente propiedad de respuesta del token y del parámetro del cmdlet varían de un cmdlet a otro. Para obtener más información, consulte la documentación de ayuda de cada cmdlet.
Iteración manual
En el siguiente ejemplo, se devuelven todos los objetos S3 de un bucket mediante un bucle dodo
bucle realiza iteraciones hasta que se Get-S3Object
establece $result.NextMarker
en$null
, lo que indica que no quedan más datos paginados. La salida del bucle se asigna a la $s3Objects
variable.
$s3Objects = do { $splatParams = @{ BucketName = 'amzn-s3-demo-bucket1' MaxKey = 500 Marker = $result.NextMarker NoAutoIteration = $true Select = '*' } $result = Get-S3Object @splatParams $result.S3Objects } while ($null -ne $result.NextMarker)
En este ejemplo, se utilizan PowerShell salpicaduras