

¡Se Herramientas de AWS para PowerShell ha lanzado la versión 5 (V5) del\$1

Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el tema [sobre migración](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html).

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

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.

# AWS Servicios de llamadas en el Herramientas de AWS para PowerShell
<a name="pstools-using"></a>

En esta sección se proporcionan ejemplos del uso de los Herramientas de AWS para PowerShell para acceder a AWS los servicios. Estos ejemplos ayudan a demostrar cómo usar los cmdlets para realizar tareas reales AWS . Estos ejemplos se basan en los cmdlets que proporciona Tools for. PowerShell Para ver qué cmdlets están disponibles, consulte la [Referencia de cmdlets de Herramientas de AWS para PowerShell](https://docs.aws.amazon.com/powershell/v5/reference/).

Encontrará más Herramientas de AWS para PowerShell ejemplos en el [Ejemplos de código](powershell_code_examples.md) capítulo.

## PowerShell Codificación por concatenación de archivos
<a name="powershell-file-concatenation-encoding"></a>

Algunos cmdlets del archivo Herramientas de AWS para PowerShell editan los archivos o registros existentes en los que se encuentra. AWS Un ejemplo es `Edit-R53ResourceRecordSet` que llama a la [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html)API de Amazon Route 53.

Al editar o concatenar archivos en versiones PowerShell 5.1 o anteriores, PowerShell codifica la salida en UTF-16, no en UTF-8. Esto puede añadir caracteres no deseados y crear resultados no válidos. Un editor hexadecimal pueden mostrar los caracteres no deseados.

Para evitar convertir la salida del archivo a UTF-16, puede canalizar el comando al `Out-File` cmdlet y especificar la codificación UTF-8, como se PowerShell muestra en el siguiente ejemplo:

```
PS > *some file concatenation command* | Out-File filename.txt -Encoding utf8
```

Si ejecuta AWS CLI comandos desde la PowerShell consola, se aplica el mismo comportamiento. Puede canalizar el resultado de un AWS CLI comando a `Out-File` la PowerShell consola. Otros cmdlets, como `Export-Csv` o `Export-Clixml`, también tienen un parámetro `Encoding`. Para obtener una lista completa de cmdlets que tienen un parámetro `Encoding` y que permiten corregir la codificación de la salida de un archivo concatenado, ejecute el siguiente comando:

```
PS > Get-Command -ParameterName "Encoding"
```

**nota**  
PowerShell La versión 6.0 y versiones posteriores, incluida PowerShell Core, conservan automáticamente la codificación UTF-8 para la salida de archivos concatenados.

## Objetos devueltos para las herramientas PowerShell
<a name="returned-objects-for-the-powershell-tools"></a>

Para que resulte Herramientas de AWS para PowerShell más útil en un PowerShell entorno nativo, el objeto devuelto por un Herramientas de AWS para PowerShell cmdlet es un objeto.NET, no el objeto de texto JSON que normalmente devuelve la API correspondiente del AWS SDK. Por ejemplo, `Get-S3Bucket` emite una colección de `Buckets`, no un objeto de respuesta JSON de Amazon S3. La `Buckets` colección se puede colocar en la PowerShell canalización y se puede interactuar con ella de la manera adecuada. Del mismo modo, `Get-EC2Instance` emite una colección de objetos .NET `Reservation`, no un objeto resultante JSON `DescribeEC2Instances`. Este comportamiento se debe a un diseño y permite que la Herramientas de AWS para PowerShell experiencia sea más coherente con la idiomática PowerShell.

Las respuestas de servicio reales están disponibles para usted si las necesita. Se almacenan como propiedades `note` en los objetos devueltos. Para las acciones de la API que admiten paginación mediante campos `NextToken`, estas respuestas también se asocian como propiedades `note`.

## [Amazon EC2](pstools-ec2.md)
<a name="using-ec2"></a>

En esta sección se describen los pasos necesarios para lanzar una instancia de Amazon EC2 incluidos los siguientes:
+ Recupera una lista de Amazon Machine Images (AMIs).
+ Cree un par de claves para la autenticación SSH.
+ crear y configurar un grupo de seguridad de Amazon EC2
+ Lanzar la instancia y recuperar información sobre ella

## [Amazon S3](pstools-s3.md)
<a name="using-s3"></a>

En esta sección se describen los pasos necesarios para crear un sitio web estático alojado en Amazon S3. Muestra cómo:
+ crear y eliminar buckets de Amazon S3
+ cargar archivos en un bucket de Amazon S3 como objetos
+ eliminar objetos de un bucket de Amazon S3
+ designar un bucket de Amazon S3 como un sitio web

## [AWS Lambda y Herramientas de AWS para PowerShell](pstools-lambda.md)
<a name="using-lambda"></a>

En esta sección se proporciona una breve descripción general del PowerShell módulo AWS Lambda Tools for y se describen los pasos necesarios para configurar el módulo.

## [Amazon SNS y Amazon SQS](pstools-sqs-queue-sns-topic.md)
<a name="using-sns"></a>

En esta sección se describen los pasos necesarios para suscribir una cola de Amazon SQS a un tema de Amazon SNS. Muestra cómo:
+ Crear un tema de Amazon SNS
+ Crear una cola de Amazon SQS.
+ Suscriba la cola al tema de .
+ Enviar un mensaje al tema
+ Recibir el mensaje de la cola

## [CloudWatch](pstools-cw.md)
<a name="using-cw"></a>

En esta sección se proporciona un ejemplo de cómo publicar datos personalizados en CloudWatch.
+ Publique una métrica personalizada en su CloudWatch panel de control.

## Véase también
<a name="see-also"></a>
+  [Configuración y uso del Herramientas de AWS para PowerShell](pstools-getting-started.md) 

## Temas
<a name="w2aac13c23"></a>
+ [Amazon S3 y herramientas para Windows PowerShell](pstools-s3.md)
+ [Amazon EC2 y herramientas para Windows PowerShell](pstools-ec2.md)
+ [AWS Lambda y Herramientas de AWS para PowerShell](pstools-lambda.md)
+ [Amazon SQS, Amazon SNS y herramientas para Windows PowerShell](pstools-sqs-queue-sns-topic.md)
+ [CloudWatch desde el AWS Tools for Windows PowerShell](pstools-cw.md)
+ [Uso del ClientConfig parámetro en los cmdlets](pstools-clientconfig.md)

# Amazon S3 y herramientas para Windows PowerShell
<a name="pstools-s3"></a>

En esta sección, creamos un sitio web estático AWS Tools for Windows PowerShell utilizando Amazon S3 y CloudFront. En el proceso, mostraremos una serie de tareas comunes con estos servicios. Esta explicación sigue la Guía de introducción para [Alojar un sitio web estático](https://aws.amazon.com/getting-started/projects/host-static-website/), que describe un proceso similar con el uso de la [consola de administración de AWS](https://console.aws.amazon.com/s3/home).

Los comandos que se muestran aquí asumen que ha establecido las credenciales predeterminadas y una región predeterminada para su PowerShell sesión. Por lo tanto, las credenciales y las regiones no se incluyen en la invocación de los cmdlets.

**nota**  
Actualmente, no existe una API de Amazon S3 para cambiar el nombre de un bucket o un objeto y, por lo tanto, no hay un PowerShell cmdlet único de Tools for Windows para realizar esta tarea. Para cambiar el nombre de un objeto en S3, se recomienda copiar el objeto en uno con un nombre nuevo ejecutando el cmdlet y, a continuación, eliminar el objeto original ejecutando el [Copy-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/items/Copy-S3Object.html)cmdlet. [Remove-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/items/Remove-S3Object.html)

**Véase también**
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [Alojamiento de un sitio web estático en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) 
+  [Consola de Amazon S3](https://console.aws.amazon.com/s3/home) 

**Topics**
+ [Creación de un bucket de Amazon S3, verificación de su región y eliminación de este (opcional)](pstools-s3-bucket-create.md)
+ [Configuración de un bucket de Amazon S3 como un sitio web y habilitación del registro](pstools-s3-create-website.md)
+ [Carga de objetos en un bucket de Amazon S3](pstools-s3-upload-object.md)
+ [Eliminación de objetos y buckets de Amazon S3](pstools-s3-delete-website.md)
+ [Carga de contenido de texto insertado en Amazon S3](pstools-s3-upload-in-line-text.md)

# Creación de un bucket de Amazon S3, verificación de su región y eliminación de este (opcional)
<a name="pstools-s3-bucket-create"></a>

Utilice el cmdlet `New-S3Bucket` para crear un nuevo bucket de Amazon S3. En los ejemplos siguientes se crea un bucket denominado `website-example`. El nombre del bucket debe ser único en todas las regiones. En el ejemplo el bucket se crea en la región `us-west-1`.

```
PS > New-S3Bucket -BucketName website-example -Region us-west-2

CreationDate         BucketName
------------         ----------
8/16/19 8:45:38 PM   website-example
```

Puede verificar la región en la que se encuentra el bucket con el cmdlet `Get-S3BucketLocation`.

```
PS > Get-S3BucketLocation -BucketName website-example

Value
-----
us-west-2
```

Cuando haya terminado este tutorial, puede utilizar la siguiente línea para eliminar este bucket. Le recomendamos que mantenga este bucket ya que lo usaremos en los siguientes ejemplos.

```
PS > Remove-S3Bucket -BucketName website-example
```

Tenga en cuenta que el proceso de eliminación del bucket puede tardar algún tiempo en completarse. Si intenta volver a crear un bucket inmediatamente con el mismo nombre, el cmdlet `New-S3Bucket` puede producir un error hasta que el bucket anterior haya desaparecido por completo.

## Véase también
<a name="pstools-seealso-s3-bucket-create"></a>
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [Put Bucket (Referencia del servicio de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html) 
+  [AWS PowerShell Regiones de Amazon S3](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) 

# Configuración de un bucket de Amazon S3 como un sitio web y habilitación del registro
<a name="pstools-s3-create-website"></a>

Utilice el cmdlet `Write-S3BucketWebsite` para configurar un bucket de Amazon S3 como un sitio web estático. El siguiente ejemplo especifica un nombre de `index.html` para la página web de contenido predeterminada y un nombre de `error.html` para la página web de error predeterminada. Tenga en cuenta que este cmdlet no crea esas páginas. Deben ser [cargados como objetos de Amazon S3](pstools-s3-upload-object.md).

```
PS > Write-S3BucketWebsite -BucketName website-example -WebsiteConfiguration_IndexDocumentSuffix index.html -WebsiteConfiguration_ErrorDocument error.html
RequestId      : A1813E27995FFDDD
AmazonId2      : T7hlDOeLqA5Q2XfTe8j2q3SLoP3/5XwhUU3RyJBGHU/LnC+CIWLeGgP0MY24xAlI
ResponseStream :
Headers        : {x-amz-id-2, x-amz-request-id, Content-Length, Date...}
Metadata       : {}
ResponseXml    :
```

## Véase también
<a name="pstools-seealso-s3-create-website"></a>
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [Put Bucket Website (Referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html) 
+  [Put Bucket ACL (Referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 

# Carga de objetos en un bucket de Amazon S3
<a name="pstools-s3-upload-object"></a>

Utilice el cmdlet `Write-S3Object` para cargar archivos del sistema de archivos local en un bucket de Amazon S3 como objetos. En el siguiente ejemplo se crean y cargan dos archivos HTML sencillos en un bucket de Amazon S3 y se verifica la existencia de los objetos cargados. El parámetro `-File` de `Write-S3Object` especifica el nombre del archivo en el sistema de archivos local. El parámetro `-Key` especifica el nombre que el objeto correspondiente tendrá en Amazon S3.

Amazon determina el tipo de contenido de los objetos de las extensiones de archivo (en este caso, ".html").

```
PS > # Create the two files using here-strings and the Set-Content cmdlet
PS > $index_html = @"
>> <html>
>>   <body>
>>     <p>
>>       Hello, World!
>>     </p>
>>   </body>
>> </html>
>> "@
>>
PS > $index_html | Set-Content index.html
PS > $error_html = @"
>> <html>
>>   <body>
>>     <p>
>>       This is an error page.
>>     </p>
>>   </body>
>> </html>
>> "@
>>
>>$error_html | Set-Content error.html
>># Upload the files to Amazon S3 using a foreach loop
>>foreach ($f in "index.html", "error.html") {
>> Write-S3Object -BucketName website-example -File $f -Key $f -CannedACLName public-read
>> }
>>
PS > # Verify that the files were uploaded
PS > Get-S3BucketWebsite -BucketName website-example

IndexDocumentSuffix                                         ErrorDocument
-------------------                                         -------------
index.html                                                  error.html
```

 *Opciones de ACL empaquetadas* 

Los valores para especificar los valores predeterminados ACLs con las Herramientas para Windows PowerShell son los mismos que los utilizados por AWS SDK para .NET. Tenga en cuenta, sin embargo, que son diferentes de los valores utilizados por la acción `Put Object` de Amazon S3. Las herramientas para Windows PowerShell admiten las siguientes opciones predefinidas ACLs:
+ NoACL
+ private
+ public-read
+ public-read-write
+ aws-exec-read
+ authenticated-read
+ bucket-owner-read
+ bucket-owner-full-control
+ log-delivery-write

Para obtener más información acerca de estos ajustes de listas de control de acceso empaquetadas, consulte [Información general de las Access Control Lists (ACL, Listas de control de acceso)](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl).

## Nota relativa a la carga multiparte
<a name="note-regarding-multipart-upload"></a>

Si utiliza la API de Amazon S3 para cargar un archivo que sobrepasa los 5 GB de tamaño, debe utilizar la carga multiparte. Sin embargo, el `Write-S3Object` cmdlet proporcionado por las Herramientas para Windows PowerShell puede gestionar de forma transparente las cargas de archivos que superen los 5 GB.

### Probar el sitio web
<a name="pstools-amazon-s3-test-website"></a>

En este punto, puede probar el sitio web navegando hasta él con un navegador. URLs para los sitios web estáticos alojados en Amazon S3, siga un formato estándar.

```
http://<bucket-name>.s3-website-<region>.amazonaws.com
```

Por ejemplo:

```
http://website-example.s3-website-us-west-1.amazonaws.com
```

### Véase también
<a name="pstools-seealso-amazon-s3-test-website"></a>
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [Put Object (Referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) 
+  [Enlatado ACLs (referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/dev/ACLOverview.html#CannedACL) 

# Eliminación de objetos y buckets de Amazon S3
<a name="pstools-s3-delete-website"></a>

En esta sección se describe cómo eliminar el sitio web que creó en las secciones anteriores. Puede simplemente eliminar los objetos de los archivos HTML y, a continuación, eliminar el bucket de Amazon S3 del sitio.

En primer lugar, ejecute el cmdlet `Remove-S3Object` para eliminar los objetos de los archivos HTML del bucket de Amazon S3.

```
PS > foreach ( $obj in "index.html", "error.html" ) {
>> Remove-S3Object -BucketName website-example -Key $obj
>> }
>> 
IsDeleteMarker
--------------
False
```

La respuesta `False` es un artefacto esperado de la forma en la que Amazon S3 procesa la solicitud. En este contexto, no indica un problema.

Ahora, ejecute el cmdlet `Remove-S3Bucket` para eliminar el bucket de Amazon S3 que ahora está vacío del sitio.

```
PS > Remove-S3Bucket -BucketName website-example

RequestId      : E480ED92A2EC703D
AmazonId2      : k6tqaqC1nMkoeYwbuJXUx1/UDa49BJd6dfLN0Ls1mWYNPHjbc8/Nyvm6AGbWcc2P
ResponseStream :
Headers        : {x-amz-id-2, x-amz-request-id, Date, Server}
Metadata       : {}
ResponseXml    :
```

En la versión 1.1 y versiones posteriores de Herramientas de AWS para PowerShell, puede añadir el `-DeleteBucketContent` parámetro a`Remove-S3Bucket`, que primero elimina todos los objetos y las versiones de los objetos del depósito especificado antes de intentar eliminar el propio depósito. En función del número de objetos o versiones de objeto del bucket, esta operación puede tardar una cantidad de tiempo considerable. En las versiones de las Herramientas para Windows PowerShell anteriores a la 1.1, el depósito tenía que estar vacío para `Remove-S3Bucket` poder eliminarlo.

**nota**  
A menos que agregue el `-Force` parámetro, Herramientas de AWS para PowerShell solicitará su confirmación antes de ejecutar el cmdlet.

## Véase también
<a name="pstools-seealso-amazon-s3-delete-website"></a>
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [Delete Object (Referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) 
+  [DeleteBucket (Referencia de la API de Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETE.html) 

# Carga de contenido de texto insertado en Amazon S3
<a name="pstools-s3-upload-in-line-text"></a>

El cmdlet `Write-S3Object` permite cargar contenido de texto insertado en Amazon S3. Con el parámetro `-Content` (alias `-Text`), puede especificar el contenido de texto que debe cargarse en Amazon S3 sin necesidad de incluirlo primero en un archivo. El parámetro acepta cadenas sencillas de una sola línea, así como cadenas de varias líneas.

```
PS > # Specifying content in-line, single line text:
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content "file content"

PS > # Specifying content in-line, multi-line text: (note final newline needed to end in-line here-string)
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content @"
>> line 1
>> line 2
>> line 3
>> "@
>> 
PS > # Specifying content from a variable: (note final newline needed to end in-line here-string)
PS > $x = @"
>> line 1
>> line 2
>> line 3
>> "@
>> 
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content $x
```

# Amazon EC2 y herramientas para Windows PowerShell
<a name="pstools-ec2"></a>

Puedes realizar tareas comunes relacionadas con Amazon EC2 utilizando el Herramientas de AWS para PowerShell.

Los comandos de ejemplo que se muestran aquí suponen que ha establecido las credenciales y una región predeterminadas para la PowerShell sesión. Por lo tanto, no se incluyen las credenciales ni la región al invocar los cmdlets. Para obtener más información, consulte [Autenticarse con AWS](creds-idc.md) y [AWS Región](pstools-installing-specifying-region.md).

**Topics**
+ [Creación de un par de claves](pstools-ec2-keypairs.md)
+ [Creación de un grupo de seguridad](pstools-ec2-sg.md)
+ [Buscar una AMI](pstools-ec2-get-amis.md)
+ [Lanzamiento de una instancia](pstools-ec2-launch.md)

# Creación de un par de claves
<a name="pstools-ec2-keypairs"></a>

En el siguiente `New-EC2KeyPair` ejemplo, se crea un key pair y se almacena en la PowerShell variable `$myPSKeyPair` 

```
PS > $myPSKeyPair = New-EC2KeyPair -KeyName myPSKeyPair
```

Pase el objeto de par de claves al cmdlet `Get-Member` para ver la estructura del objeto.

```
PS > $myPSKeyPair | Get-Member

     TypeName: Amazon.EC2.Model.KeyPair

  Name                MemberType   Definition
  ----                ----------   ----------
  Equals              Method       bool Equals(System.Object obj)
  GetHashCode         Method       int GetHashCode()
  GetType             Method       type GetType()
  ToString            Method       string ToString()
  KeyFingerprint      Property     System.String KeyFingerprint {get;set;}
  KeyMaterial         Property     System.String KeyMaterial {get;set;}
  KeyName             Property     System.String KeyName {get;set;}
```

Pase el objeto de par de claves al cmdlet `Format-List` para ver los valores de los miembros `KeyName`, `KeyFingerprint` y `KeyMaterial`. (El resultado se ha truncado para facilitar su lectura).

```
PS > $myPSKeyPair | Format-List KeyName, KeyFingerprint, KeyMaterial

  KeyName        : myPSKeyPair
  KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c
  KeyMaterial    : ----BEGIN RSA PRIVATE KEY----
                   MIIEogIBAAKCAQEAkK+ANYUS9c7niNjYfaCn6KYj/D0I6djnFoQE...
                   Mz6btoxPcE7EMeH1wySUp8nouAS9xbl9l7+VkD74bN9KmNcPa/Mu...
                   Zyn4vVe0Q5il/MpkrRogHqOB0rigeTeV5Yc3lvO0RFFPu0Kz4kcm...
                   w3Jg8dKsWn0plOpX7V3sRC02KgJIbejQUvBFGi5OQK9bm4tXBIeC...
                   daxKIAQMtDUdmBDrhR1/YMv8itFe5DiLLbq7Ga+FDcS85NstBa3h...
                   iuskGkcvgWkcFQkLmRHRoDpPb+OdFsZtjHZDpMVFmA9tT8EdbkEF...
                   3SrNeqZPsxJJIxOodb3CxLJpg75JU5kyWnb0+sDNVHoJiZCULCr0...
                   GGlLfEgB95KjGIk7zEv2Q7K6s+DHclrDeMZWa7KFNRZuCuX7jssC...
                   xO98abxMr3o3TNU6p1ZYRJEQ0oJr0W+kc+/8SWb8NIwfLtwhmJEy...
                   1BX9X8WFX/A8VLHrT1elrKmLkNECgYEAwltkV1pOJAFhz9p7ZFEv...
                   vvVsPaF0Ev9bk9pqhx269PB5Ox2KokwCagDMMaYvasWobuLmNu/1...
                   lmwRx7KTeQ7W1J3OLgxHA1QNMkip9c4Tb3q9vVc3t/fPf8vwfJ8C...
                   63g6N6rk2FkHZX1E62BgbewUd3eZOS05Ip4VUdvtGcuc8/qa+e5C...
                   KXgyt9nl64pMv+VaXfXkZhdLAdY0Khc9TGB9++VMSG5TrD15YJId...
                   gYALEI7m1jJKpHWAEs0hiemw5VmKyIZpzGstSJsFStERlAjiETDH...
                   YAtnI4J8dRyP9I7BOVOn3wNfIjk85gi1/0Oc+j8S65giLAfndWGR...
                   9R9wIkm5BMUcSRRcDy0yuwKBgEbkOnGGSD0ah4HkvrUkepIbUDTD...
                   AnEBM1cXI5UT7BfKInpUihZi59QhgdK/hkOSmWhlZGWikJ5VizBf...
                   drkBr/vTKVRMTi3lVFB7KkIV1xJxC5E/BZ+YdZEpWoCZAoGAC/Cd...
                   TTld5N6opgOXAcQJwzqoGa9ZMwc5Q9f4bfRc67emkw0ZAAwSsvWR...
                   x3O2duuy7/smTwWwskEWRK5IrUxoMv/VVYaqdzcOajwieNrblr7c...
                   -----END RSA PRIVATE KEY-----
```

El miembro `KeyMaterial` almacena la clave privada del par de claves. La clave pública se almacena en AWS. No puedes recuperar la clave pública de AWS, pero puedes verificarla comparando la `KeyFingerprint` clave privada con la que se devuelve AWS para la clave pública.

## Ver la huella del par de claves
<a name="get-ec2keypair"></a>

Puede utilizar el cmdlet `Get-EC2KeyPair` para ver la huella del par de claves.

```
PS > Get-EC2KeyPair -KeyName myPSKeyPair | format-list KeyName, KeyFingerprint

  KeyName        : myPSKeyPair
  KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c
```

## Almacenar la clave privada
<a name="store-ec2keypair"></a>

Para almacenar la clave privada en un archivo, pase el miembro `KeyFingerMaterial` al cmdlet `Out-File`.

```
PS > $myPSKeyPair.KeyMaterial | Out-File -Encoding ascii myPSKeyPair.pem
```

Debe especificar `-Encoding ascii` cuando escriba la clave privada en un archivo. De lo contrario, herramientas tales como `openssl` no podrán leer el archivo correctamente. Puede verificar que el formato del archivo resultante es correcto mediante un comando como el siguiente:

```
PS > openssl rsa -check < myPSKeyPair.pem
```

(La `openssl` herramienta no se incluye con la Herramientas de AWS para PowerShell ni con la AWS SDK para .NET.)

## Eliminar el par de claves
<a name="remove-ec2keypair"></a>

Necesita el par de claves para lanzar una instancia y conectarse a ella. Cuando haya terminado de usar un par de claves, puede eliminarlo. Para quitar la clave pública AWS, utilice el `Remove-EC2KeyPair` cmdlet. Cuando se le solicite, pulse `Enter` para eliminar el par de claves.

```
PS > Remove-EC2KeyPair -KeyName myPSKeyPair

Confirm
Performing the operation "Remove-EC2KeyPair (DeleteKeyPair)" on target "myPSKeyPair".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
```

La variable,`$myPSKeyPair`, sigue existiendo en la PowerShell sesión actual y contiene la información del par de claves. El archivo `myPSKeyPair.pem` también existe. Sin embargo, la clave privada ya no es válida porque la clave pública del par de claves ya no se almacena en AWS.

# Creación de un grupo de seguridad mediante Windows PowerShell
<a name="pstools-ec2-sg"></a>

Puede utilizar el Herramientas de AWS para PowerShell para crear y configurar un grupo de seguridad. La respuesta es el ID del grupo de seguridad.

Si necesita conectarse a la instancia, debe configurar el grupo de seguridad para permitir el tráfico SSH (Linux) o el tráfico RDP (Windows).

**Topics**
+ [Requisitos previos](#sg-prerequisites)
+ [Creación de un grupo de seguridad para EC2 -VPC](#new-ec2securitygroup-vpc)

## Requisitos previos
<a name="sg-prerequisites"></a>

Necesitará la dirección IP pública de su equipo, en notación CIDR. Puede obtener la dirección IP pública de su equipo local usando un servicio. Por ejemplo, Amazon ofrece el siguiente servicio: [http://checkip.amazonaws.com/](http://checkip.amazonaws.com/) o [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/). Para buscar otro servicio que le brinde su dirección IP, utilice la frase de búsqueda "what is my IP address" (cuál es mi dirección IP). Si se conecta a través de un ISP o desde detrás del firewall sin una dirección IP estática, deberá encontrar el intervalo de direcciones IP que pueden utilizar los equipos cliente.

**aviso**  
Si especifica `0.0.0.0/0`, habilitará el tráfico desde cualquier dirección IP del mundo. Para los protocolos SSH y RDP, este método podría ser aceptable durante un periodo de tiempo corto en un entorno de prueba, pero no es seguro en entornos de producción. En producción, asegúrese de autorizar el acceso solo desde la dirección IP individual o el rango de direcciones adecuadas.

## Creación de un grupo de seguridad para EC2 -VPC
<a name="new-ec2securitygroup-vpc"></a>

**aviso**  
EC2-Classic se retiró el 15 de agosto de 2022. Se recomienda migrar de EC2 -Classic a una VPC. Para obtener más información, consulte la entrada del blog [EC2Classic Networking is Retiring: he aquí](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/) cómo prepararse.

El siguiente ejemplo de `New-EC2SecurityGroup` añade un parámetro `-VpcId` para crear un grupo de seguridad para la VPC especificada.

```
PS > $groupid = New-EC2SecurityGroup `
    -VpcId "vpc-da0013b3" `
    -GroupName "myPSSecurityGroup" `
    -GroupDescription "EC2-VPC from PowerShell"
```

Para ver la configuración inicial del grupo de seguridad, use el cmdlet `Get-EC2SecurityGroup`. De forma predeterminada, el grupo de seguridad de una VPC incluye una regla que permite todo el tráfico de salida. Tenga en cuenta que no puede hacer referencia a un grupo de seguridad para EC2 -VPC por su nombre.

```
PS > Get-EC2SecurityGroup -GroupId sg-5d293231

OwnerId             : 123456789012
GroupName           : myPSSecurityGroup
GroupId             : sg-5d293231
Description         : EC2-VPC from PowerShell
IpPermissions       : {}
IpPermissionsEgress : {Amazon.EC2.Model.IpPermission}
VpcId               : vpc-da0013b3
Tags                : {}
```

Para definir los permisos para el tráfico entrante en el puerto TCP 22 (SSH) y el puerto TCP 3389, utilice el cmdlet `New-Object`. En el siguiente script de ejemplo se definen los permisos para los puertos TCP 22 y 3389 desde una única dirección IP, `203.0.113.25/32`.

```
$ip1 = new-object Amazon.EC2.Model.IpPermission 
$ip1.IpProtocol = "tcp" 
$ip1.FromPort = 22 
$ip1.ToPort = 22 
$ip1.IpRanges.Add("203.0.113.25/32") 
$ip2 = new-object Amazon.EC2.Model.IpPermission 
$ip2.IpProtocol = "tcp" 
$ip2.FromPort = 3389 
$ip2.ToPort = 3389 
$ip2.IpRanges.Add("203.0.113.25/32") 
Grant-EC2SecurityGroupIngress -GroupId $groupid -IpPermissions @( $ip1, $ip2 )
```

Para verificar el grupo de seguridad que se ha actualizado, use de nuevo el cmdlet `Get-EC2SecurityGroup`.

```
PS > Get-EC2SecurityGroup -GroupIds sg-5d293231

OwnerId             : 123456789012
GroupName           : myPSSecurityGroup
GroupId             : sg-5d293231
Description         : EC2-VPC from PowerShell
IpPermissions       : {Amazon.EC2.Model.IpPermission}
IpPermissionsEgress : {Amazon.EC2.Model.IpPermission}
VpcId               : vpc-da0013b3
Tags                : {}
```

Para ver las reglas de entrada, puede recuperar la propiedad `IpPermissions` del objeto de colección devuelto por el comando anterior.

```
PS > (Get-EC2SecurityGroup -GroupIds sg-5d293231).IpPermissions

IpProtocol       : tcp
FromPort         : 22
ToPort           : 22
UserIdGroupPairs : {}
IpRanges         : {203.0.113.25/32}

IpProtocol       : tcp
FromPort         : 3389
ToPort           : 3389
UserIdGroupPairs : {}
IpRanges         : {203.0.113.25/32}
```

# Encuentra una imagen de máquina de Amazon con Windows PowerShell
<a name="pstools-ec2-get-amis"></a>

Cuando lanzas una EC2 instancia de Amazon, especificas una imagen de máquina de Amazon (AMI) para que sirva de plantilla para la instancia. Sin embargo, IDs las de AWS Windows AMIs cambian con frecuencia AWS porque incluyen AMIs las últimas actualizaciones y mejoras de seguridad. Puede usar el [Get-EC2Image](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-EC2Image.html)cmdlet para buscar el Windows actual AMIs y obtener el suyo. IDs

## Get-EC2Image
<a name="pstools-ec2-get-image"></a>

El `Get-EC2Image` cmdlet recupera una lista de los elementos que puede usar. AMIs 

Usa el `-Owner` parámetro con el valor de la matriz `amazon, self` para que `Get-EC2Image` recupere solo lo AMIs que te pertenece a Amazon o a ti. En este contexto, *hará* referencia al usuario cuyas credenciales utilizó para invocar el cmdlet.

```
PS > Get-EC2Image -Owner amazon, self
```

Puede definir el alcance de los resultados mediante el parámetro `-Filter`. Para especificar el filtro, cree un objeto de tipo `Amazon.EC2.Model.Filter`. Por ejemplo, utilice el siguiente filtro para mostrar solo Windows AMIs.

```
$platform_values = New-Object 'collections.generic.list[string]'
$platform_values.add("windows")
$filter_platform = New-Object Amazon.EC2.Model.Filter -Property @{Name = "platform"; Values = $platform_values}
Get-EC2Image -Owner amazon, self -Filter $filter_platform
```

A continuación se muestra un ejemplo de una de las AMIs opciones devueltas por el cmdlet; el resultado real del comando anterior proporciona información para muchos. AMIs

```
Architecture        : x86_64
BlockDeviceMappings : {/dev/sda1, xvdca, xvdcb, xvdcc…}
CreationDate        : 2019-06-12T10:41:31.000Z
Description         : Microsoft Windows Server 2019 Full Locale English with SQL Web 2017 AMI provided by Amazon
EnaSupport          : True
Hypervisor          : xen
ImageId             : ami-000226b77608d973b
ImageLocation       : amazon/Windows_Server-2019-English-Full-SQL_2017_Web-2019.06.12
ImageOwnerAlias     : amazon
ImageType           : machine
KernelId            : 
Name                : Windows_Server-2019-English-Full-SQL_2017_Web-2019.06.12
OwnerId             : 801119661308
Platform            : Windows
ProductCodes        : {}
Public              : True
RamdiskId           : 
RootDeviceName      : /dev/sda1
RootDeviceType      : ebs
SriovNetSupport     : simple
State               : available
StateReason         : 
Tags                : {}
VirtualizationType  : hvm
```

**nota**  
La versión 4 del `Get-EC2ImageByName` cmdlet Herramientas de AWS para PowerShell proporcionó para filtrar la lista de AMIs patrones por nombres. Para la versión 5 de las herramientas, utilice el cmdlet [Get- SSMLatest EC2 Image](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-SSMLatestEC2Image.html) en su lugar.

# Lance una EC2 instancia de Amazon con Windows PowerShell
<a name="pstools-ec2-launch"></a>

Para lanzar una EC2 instancia de Amazon, necesitas el key pair y el grupo de seguridad que creaste en las secciones anteriores. También necesita el ID de una imagen de máquina de Amazon (AMI). Para obtener más información, consulte la siguiente documentación sobre :
+  [Creación de un par de claves](pstools-ec2-keypairs.md) 
+  [Cree un grupo de seguridad con Windows PowerShell](pstools-ec2-sg.md) 
+  [Encuentra una imagen de máquina de Amazon con Windows PowerShell](pstools-ec2-get-amis.md) 

**importante**  
Si lanza una instancia que no figura en la capa gratuita, se le facturará en cuanto la lance y se le cobrará el tiempo en que la instancia esté funcionando, aunque permanezca inactiva.

**Topics**
+ [Lanzamiento de una instancia en una VPC](#new-ec2instance-vpc)
+ [Lanzamiento de una instancia de subasta en una VPC](#new-ec2instance-spot)

## Lanzamiento de una instancia en una VPC
<a name="new-ec2instance-vpc"></a>

**aviso**  
EC2-Classic se retiró el 15 de agosto de 2022. Se recomienda migrar de EC2 -Classic a una VPC. Para obtener más información, consulte la entrada del blog [EC2Classic Networking is Retiring: he aquí](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/) cómo prepararse.

El siguiente comando crea una sola instancia `m1.small` en la subred privada especificada. El grupo de seguridad debe ser válido para la subred especificada.

```
PS > New-EC2Instance `
    -ImageId ami-c49c0dac `
    -MinCount 1 -MaxCount 1 `
    -KeyName myPSKeyPair `
    -SecurityGroupId sg-5d293231 `
    -InstanceType m1.small `
    -SubnetId subnet-d60013bf

ReservationId   : r-b70a0ef1
OwnerId         : 123456789012
RequesterId     :
Groups          : {}
GroupName       : {}
Instances       : {}
```

Al principio, la instancia tiene el estado `pending`, pero cambia al estado `running` en unos minutos. Para ver información sobre la instancia, use el cmdlet `Get-EC2Instance`. Si tiene varias instancias, puede filtrar los resultados por ID de reserva mediante el parámetro `Filter`. En primer lugar, cree un objeto de tipo `Amazon.EC2.Model.Filter`. A continuación, llame a `Get-EC2Instance` que utiliza el filtro y, a continuación, muestra la propiedad `Instances`.

```
PS > $reservation = New-Object 'collections.generic.list[string]'
PS > $reservation.add("r-b70a0ef1")
PS > $filter_reservation = New-Object Amazon.EC2.Model.Filter -Property @{Name = "reservation-id"; Values = $reservation}
PS > (Get-EC2Instance -Filter $filter_reservation).Instances

AmiLaunchIndex        : 0
Architecture          : x86_64
BlockDeviceMappings   : {/dev/sda1}
ClientToken           :
EbsOptimized          : False
Hypervisor            : xen
IamInstanceProfile    :
ImageId               : ami-c49c0dac
InstanceId            : i-5203422c
InstanceLifecycle     :
InstanceType          : m1.small
KernelId              :
KeyName               : myPSKeyPair
LaunchTime            : 12/2/2018 3:38:52 PM
Monitoring            : Amazon.EC2.Model.Monitoring
NetworkInterfaces     : {}
Placement             : Amazon.EC2.Model.Placement
Platform              : Windows
PrivateDnsName        :
PrivateIpAddress      : 10.25.1.11
ProductCodes          : {}
PublicDnsName         :
PublicIpAddress       : 198.51.100.245
RamdiskId             :
RootDeviceName        : /dev/sda1
RootDeviceType        : ebs
SecurityGroups        : {myPSSecurityGroup}
SourceDestCheck       : True
SpotInstanceRequestId :
SriovNetSupport       :
State                 : Amazon.EC2.Model.InstanceState
StateReason           :
StateTransitionReason :
SubnetId              : subnet-d60013bf
Tags                  : {}
VirtualizationType    : hvm
VpcId                 : vpc-a01106c2
```

## Lanzamiento de una instancia de subasta en una VPC
<a name="new-ec2instance-spot"></a>

El script de ejemplo siguiente solicita una instancia de spot en la subred especificada. El grupo de seguridad debe ser uno que haya creado para la VPC que contenga la subred especificada.

```
$interface1 = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$interface1.DeviceIndex = 0
$interface1.SubnetId = "subnet-b61f49f0"
$interface1.PrivateIpAddress = "10.0.1.5"
$interface1.Groups.Add("sg-5d293231")
Request-EC2SpotInstance `
    -SpotPrice 0.007 `
    -InstanceCount 1 `
    -Type one-time `
    -LaunchSpecification_ImageId ami-7527031c `
    -LaunchSpecification_InstanceType m1.small `
    -Region us-west-2 `
    -LaunchSpecification_NetworkInterfaces $interface1
```

# AWS Lambda y Herramientas de AWS para PowerShell
<a name="pstools-lambda"></a>

Al usar el [AWSLambdaPSCore](https://www.powershellgallery.com/packages/AWSLambdaPSCore)módulo, puede desarrollar AWS Lambda funciones en PowerShell Core 6.0 utilizando el tiempo de ejecución de.NET Core 2.1. PowerShell los desarrolladores pueden administrar AWS los recursos y escribir scripts de automatización en el PowerShell entorno mediante Lambda. PowerShell la compatibilidad con Lambda le permite ejecutar PowerShell scripts o funciones en respuesta a cualquier evento de Lambda, como un evento de Amazon S3 o un evento programado de Amazon. CloudWatch El AWSLambda PSCore módulo es un AWS módulo independiente PowerShell; no forma parte del Herramientas de AWS para PowerShell AWSLambda PSCore módulo ni se instala el. Herramientas de AWS para PowerShell

Tras instalar el AWSLambda PSCore módulo, puede utilizar cualquier PowerShell cmdlet disponible (o desarrollar uno propio) para crear funciones sin servidor. El PowerShell módulo AWS Lambda Tools for incluye plantillas de proyectos para aplicaciones sin servidor PowerShell basadas en servidores y herramientas para publicar proyectos. AWS

AWSLambdaPSCore el soporte de módulos está disponible en todas las regiones que admiten Lambda. Para obtener más información acerca de las regiones admitidas, consulte la [Tabla de regiones de AWS](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Requisitos previos
<a name="prerequisites"></a>

Para poder instalar y usar el AWSLambda PSCore módulo, es necesario seguir los siguientes pasos. Para obtener más información sobre estos pasos, consulte [Configuración de un entorno de PowerShell desarrollo](https://docs.aws.amazon.com/lambda/latest/dg/lambda-powershell-setup-dev-environment.html) en la Guía para AWS Lambda desarrolladores.
+  **Instale la versión correcta de PowerShell**: el soporte de Lambda PowerShell se basa en la versión multiplataforma PowerShell Core 6.0. Puede desarrollar funciones PowerShell Lambda en Windows, Linux o Mac. Si no tiene PowerShell instalada al menos esta versión, encontrará instrucciones en el sitio [web de PowerShell documentación de Microsoft](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell).
+  **Instale el SDK de.NET Core 2.1**: dado que PowerShell Core está basado en .NET Core, la compatibilidad con Lambda PowerShell utiliza el mismo tiempo de ejecución Lambda de.NET Core 2.1 para las funciones de.NET Core y Lambda. PowerShell Los cmdlets de PowerShell publicación de Lambda utilizan el SDK .NET Core 2.1 para crear el paquete de implementación de Lambda. El SDK de .NET Core 2.1 está disponible desde el [Centro de descargas de Microsoft](https://www.microsoft.com/net/download). Asegúrese de instalar el SDK, no el runtime.

## Instale el módulo AWSLambda PSCore
<a name="install-the-awslambdapscore-module"></a>

Tras completar los requisitos previos, estará listo para instalar el AWSLambda PSCore módulo. Ejecute el siguiente comando en una sesión PowerShell básica.

```
PS> Install-Module AWSLambdaPSCore -Scope CurrentUser
```

Está listo para empezar a desarrollar funciones Lambda en. PowerShell Para obtener más información sobre cómo empezar, consulte [Modelo de programación para la creación de funciones Lambda PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-programming-model.html) en AWS Lambda la Guía para desarrolladores.

## Véase también
<a name="see-also"></a>
+  [Anunciamos el soporte de Lambda para PowerShell Core en el AWS blog para desarrolladores](https://aws.amazon.com/blogs/developer/announcing-lambda-support-for-powershell-core/) 
+  [AWSLambdaPSCore módulo en el sitio web de PowerShell Gallery](https://www.powershellgallery.com/packages/AWSLambdaPSCore/1.0.0.2) 
+  [Configuración de un entorno PowerShell de desarrollo](https://docs.aws.amazon.com/lambda/latest/dg/lambda-powershell-setup-dev-environment.html) 
+ [AWS Herramientas Lambda para Powershell en GitHub](https://github.com/aws/aws-lambda-dotnet/tree/master/PowerShell)
+  [AWS Consola Lambda](https://console.aws.amazon.com/lambda/home) 

# Amazon SQS, Amazon SNS y herramientas para Windows PowerShell
<a name="pstools-sqs-queue-sns-topic"></a>

Esta sección proporciona ejemplos que muestran cómo:
+ crear una cola de Amazon SQS y obtener el ARN (Nombre de recurso de Amazon) de la cola
+ Crear un tema de Amazon SNS
+ Conceder permisos al tema de SNS para que pueda enviar mensajes a la cola
+ Suscribir la cola al tema de SNS
+ Conceda a los usuarios o AWS cuentas de IAM permisos para publicar en el tema de SNS y leer los mensajes de la cola de SQS.
+ Verificar los resultados publicando un mensaje en el tema y leyendo el mensaje de la cola

## crear una cola de Amazon SQS y obtener el ARN de la cola
<a name="pstools-create-sqs-queue"></a>

El siguiente comando crea una cola de SQS en su región predeterminada. La salida muestra la URL de la nueva cola.

```
PS > New-SQSQueue -QueueName myQueue
https://sqs.us-west-2.amazonaws.com/123456789012/myQueue
```

El siguiente comando recupera el ARN de la cola.

```
PS > Get-SQSQueueAttribute -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue -AttributeName QueueArn
...
QueueARN               : arn:aws:sqs:us-west-2:123456789012:myQueue
...
```

## Crear un tema de Amazon SNS
<a name="pstools-create-sns-topic"></a>

El siguiente comando crea un tema de SNS en la región predeterminada y devuelve el ARN del nuevo tema.

```
PS > New-SNSTopic -Name myTopic
arn:aws:sns:us-west-2:123456789012:myTopic
```

## Conceder permisos al tema de SNS
<a name="pstools-permissions-sns-topic"></a>

El siguiente script de ejemplo crea una cola de SQS y un tema de SNS, y concede permisos al tema de SNS para que pueda enviar mensajes a la cola de SQS:

```
# create the queue and topic to be associated
$qurl = New-SQSQueue -QueueName "myQueue"
$topicarn = New-SNSTopic -Name "myTopic"

# get the queue ARN to inject into the policy; it will be returned
# in the output's QueueARN member but we need to put it into a variable
# so text expansion in the policy string takes effect
$qarn = (Get-SQSQueueAttribute -QueueUrl $qurl -AttributeNames "QueueArn").QueueARN

# construct the policy and inject arns
$policy = @"
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "SQS:SendMessage",
        "Resource": "$qarn",
        "Condition": { "ArnEquals": { "aws:SourceArn": "$topicarn" } }
    }
}
"@

# set the policy
Set-SQSQueueAttribute -QueueUrl $qurl -Attribute @{ Policy=$policy }
```

## Suscribir la cola al tema de SNS
<a name="pstools-subscribe-queue-topic"></a>

El siguiente comando suscribe la cola `myQueue` al tema de SNS `myTopic` y devuelve el ID de suscripción:

```
PS > Connect-SNSNotification `
    -TopicARN arn:aws:sns:us-west-2:123456789012:myTopic `
    -Protocol SQS `
    -Endpoint arn:aws:sqs:us-west-2:123456789012:myQueue
arn:aws:sns:us-west-2:123456789012:myTopic:f8ff77c6-e719-4d70-8e5c-a54d41feb754
```

## Conceder permisos
<a name="pstools-permissions-publish-read"></a>

El siguiente comando concede permiso para realizar la acción `sns:Publish` en el tema `myTopic`.

```
PS > Add-SNSPermission `
    -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
    -Label ps-cmdlet-topic `
    -AWSAccountIds 123456789012 `
    -ActionNames publish
```

El siguiente comando concede permiso para realizar las acciones `sqs:ReceiveMessage` y `sqs:DeleteMessage` en la cola `myQueue`.

```
PS > Add-SQSPermission `
    -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue `
    -AWSAccountId "123456789012" `
    -Label queue-permission `
    -ActionName SendMessage, ReceiveMessage
```

## Verificar los resultados
<a name="pstools-verify-publish-read"></a>

El siguiente comando prueba la nueva cola y el tema publicando un mensaje en el tema de SNS `myTopic` y devuelve el `MessageId`.

```
PS > Publish-SNSMessage `
    -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
    -Message "Have A Nice Day!"
728180b6-f62b-49d5-b4d3-3824bb2e77f4
```

El siguiente comando recupera el mensaje de la cola de SQS `myQueue` y lo muestra.

```
PS > Receive-SQSMessage -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue

Attributes             : {}
Body                   : {
                           "Type" : "Notification",
                           "MessageId" : "491c687d-b78d-5c48-b7a0-3d8d769ee91b",
                           "TopicArn" : "arn:aws:sns:us-west-2:123456789012:myTopic",
                           "Message" : "Have A Nice Day!",
                           "Timestamp" : "2019-09-09T21:06:27.201Z",
                           "SignatureVersion" : "1",
                           "Signature" : "llE17A2+XOuJZnw3TlgcXz4C4KPLXZxbxoEMIirelhl3u/oxkWmz5+9tJKFMns1ZOqQvKxk+ExfEZcD5yWt6biVuBb8pyRmZ1bO3hUENl3ayv2WQiQT1vpLpM7VEQN5m+hLIiPFcs
                         vyuGkJReV7lOJWPHnCN+qTE2lId2RPkFOeGtLGawTsSPTWEvJdDbLlf7E0zZ0q1niXTUtpsZ8Swx01X3QO6u9i9qBFt0ekJFZNJp6Avu05hIklb4yoRs1IkbLVNBK/y0a8Yl9lWp7a7EoWaBn0zhCESe7o
                         kZC6ncBJWphX7KCGVYD0qhVf/5VDgBuv9w8T+higJyvr3WbaSvg==",
                           "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-6aad65c2f9911b05cd53efda11f913f9.pem",
                           "UnsubscribeURL" : 
                         "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:myTopic:22b77de7-a216-4000-9a23-bf465744ca84"
                         }
MD5OfBody              : 5b5ee4f073e9c618eda3718b594fa257
MD5OfMessageAttributes : 
MessageAttributes      : {}
MessageId              : 728180b6-f62b-49d5-b4d3-3824bb2e77f4
ReceiptHandle          : AQEB2vvk1e5cOKFjeIWJticabkc664yuDEjhucnIOqdVUmie7bX7GiJbl7F0enABUgaI2XjEcNPxixhVc/wfsAJZLNHnl8SlbQa0R/kD+Saqa4OIvfj8x3M4Oh1yM1cVKpYmhAzsYrAwAD5g5FvxNBD6zs
                         +HmXdkax2Wd+9AxrHlQZV5ur1MoByKWWbDbsqoYJTJquCclOgWIak/sBx/daBRMTiVQ4GHsrQWMVHtNC14q7Jy/0L2dkmb4dzJfJq0VbFSX1G+u/lrSLpgae+Dfux646y8yFiPFzY4ua4mCF/SVUn63Spy
                         sHN12776axknhg3j9K/Xwj54DixdsegnrKoLx+ctI+0jzAetBR66Q1VhIoJAq7s0a2MseyOeM/Jjucg6Sr9VUnTWVhV8ErXmotoiEg==
```

# CloudWatch desde el AWS Tools for Windows PowerShell
<a name="pstools-cw"></a>

En esta sección se muestra un ejemplo de cómo utilizar las herramientas de Windows PowerShell para publicar datos de métricas personalizadas en CloudWatch.

En este ejemplo se supone que ha establecido las credenciales predeterminadas y una región predeterminada para la PowerShell sesión. 

## Publique una métrica personalizada en su CloudWatch panel
<a name="pstools-cw-custom-metric-publish"></a>

El siguiente PowerShell código inicializa un CloudWatch `MetricDatum` objeto y lo publica en el servicio. [Para ver el resultado de esta operación, diríjase a la CloudWatch consola.](https://console.aws.amazon.com/cloudwatch/home)

```
$dat = New-Object Amazon.CloudWatch.Model.MetricDatum
$dat.Timestamp = (Get-Date).ToUniversalTime()
$dat.MetricName = "New Posts"
$dat.Unit = "Count"
$dat.Value = ".50"
Write-CWMetricData -Namespace "Usage Metrics" -MetricData $dat
```

Tenga en cuenta lo siguiente:
+ La información de fecha y hora que usa para inicializar `$dat.Timestamp` debe estar en formato UTC (hora universal).
+ El valor que utiliza para inicializar `$dat.Value` puede ser un valor de cadena incluido entre comillas o un valor numérico (sin comillas). El ejemplo muestra un valor de cadena.

## Véase también
<a name="see-also"></a>
+  [AWS Servicios de llamadas en el Herramientas de AWS para PowerShell](pstools-using.md) 
+  [AmazonCloudWatchClient. PutMetricData](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudWatch/MCloudWatchPutMetricDataPutMetricDataRequest.html)(Referencia del SDK de.NET)
+  [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)(Referencia de la API de servicio)
+  [ CloudWatch Consola Amazon](https://console.aws.amazon.com/cloudwatch/home) 

# Uso del ClientConfig parámetro en los cmdlets
<a name="pstools-clientconfig"></a>

El parámetro `ClientConfig` se puede usar para especificar ciertos parámetros de configuración cuando se conecta a un servicio. La mayoría de las propiedades posibles de este parámetro se definen en la [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)clase, que se hereda de los AWS servicios APIs for. Para ver un ejemplo de herencia simple, consulte la clase [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Keyspaces/TKeyspacesConfig.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Keyspaces/TKeyspacesConfig.html). Además, algunos servicios definen propiedades adicionales que solo son apropiadas para ese servicio. Para ver un ejemplo de las propiedades adicionales que se han definido, consulte la clase [https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html), específicamente la propiedad `ForcePathStyle`.

## Uso del parámetro `ClientConfig`
<a name="clientconfig-operation"></a>

Para usar el `ClientConfig` parámetro, puede especificarlo en la línea de comandos como un `ClientConfig` objeto o utilizar la función PowerShell Splatting para pasar un conjunto de valores de parámetros a un comando como una unidad. Estos métodos se muestran en los siguientes ejemplos. En los ejemplos se supone que el módulo `AWS.Tools.S3` se ha instalado e importado y que tiene un perfil de credenciales `[default]` con los permisos adecuados.

******Definición de un objeto `ClientConfig`**

```
$s3Config = New-Object -TypeName Amazon.S3.AmazonS3Config
$s3Config.ForcePathStyle = $true
$s3Config.Timeout = [TimeSpan]::FromMilliseconds(150000)
Get-S3Object -BucketName <BUCKET_NAME> -ClientConfig $s3Config
```

**Añadir `ClientConfig` propiedades mediante el uso de salpicaduras PowerShell**

```
$params=@{
    ClientConfig=@{
        ForcePathStyle=$true
        Timeout=[TimeSpan]::FromMilliseconds(150000)
    }
    BucketName="<BUCKET_NAME>"
}

Get-S3Object @params
```

## Uso de una propiedad indefinida
<a name="clientconfig-undefined"></a>

Cuando se utiliza PowerShell la dispersión, si se especifica una `ClientConfig` propiedad que no existe, Herramientas de AWS para PowerShell no detecta el error hasta que se ejecuta, momento en el que devuelve una excepción. Modificación del ejemplo anterior:

```
$params=@{
    ClientConfig=@{
        ForcePathStyle=$true
        UndefinedProperty="Value"
        Timeout=[TimeSpan]::FromMilliseconds(150000)
    }
    BucketName="<BUCKET_NAME>"
}

Get-S3Object @params
```

En este ejemplo se produce una excepción similar a la siguiente:

```
Cannot bind parameter 'ClientConfig'. Cannot create object of type "Amazon.S3.AmazonS3Config". The UndefinedProperty property was not found for the Amazon.S3.AmazonS3Config object.
```

## Especificando el Región de AWS
<a name="clientconfig-region"></a>

Puede utilizar el `ClientConfig` parámetro para establecer el Región de AWS para el comando. La región se establece mediante la propiedad `RegionEndpoint`. Herramientas de AWS para PowerShell Calcula la región que se va a utilizar de acuerdo con la siguiente prioridad:

1. Parámetro `-Region`

1. Región incluida en el parámetro `ClientConfig`

1. El estado de la PowerShell sesión

1. El AWS `config` archivo compartido

1. Variables de entorno

1. Los metadatos de la EC2 instancia de Amazon, si están habilitados.