

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 Lambda
<a name="lambda-index"></a>

Desarrolle e implemente sus funciones Lambda de C\$1 basadas en .NET Core con. AWS Toolkit for Visual Studio AWS Lambda es un servicio informático que le permite ejecutar código sin aprovisionar ni administrar servidores. El Toolkit for Visual Studio AWS Lambda incluye plantillas de proyectos de.NET Core para Visual Studio. 

Para obtener más información al respecto AWS Lambda, consulte la Guía para desarrolladores de [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Para obtener más información acerca de .NET Core, consulte la Guía Microsoft [.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/). Para obtener información acerca de los requisitos previos y las instrucciones de instalación de .NET Core para las plataformas Windows, macOS y Linux, consulte [.NET Core Downloads](https://www.microsoft.com/net/download/core).

En los temas siguientes se describe cómo trabajar con el AWS Lambda uso del Toolkit for Visual Studio.

**Topics**
+ [AWS Lambda Proyecto básico](lambda-creating-project-in-visual-studio.md)
+ [AWS Lambda Proyecto básico: creación de una imagen de Docker](lambda-creating-project-docker-image.md)
+ [Tutorial: Cree y pruebe una aplicación sin servidor con AWS Lambda](lambda-build-test-severless-app.md)
+ [Tutorial: creación de una aplicación de Lambda con Amazon Rekognition](lambda-rekognition-example.md)
+ [Tutorial: Uso de Amazon Logging Frameworks AWS Lambda para crear registros de aplicaciones](cw-log-frameworks.md)

# AWS Lambda Proyecto básico
<a name="lambda-creating-project-in-visual-studio"></a>

Puede crear una función de Lambda usando plantillas Microsoft .NET Core, en AWS Toolkit for Visual Studio.

## Creación de un proyecto de Lambda con .NET Core en Visual Studio
<a name="create-a-visual-studio-net-core-lam-project"></a>

Puede usar plantillas y esquemas de Visual Studio de Lambda para acelerar la inicialización del proyecto. Los esquemas de Lambda contienen funciones escritas previamente que simplifican la creación de una base de proyecto flexible.

**nota**  
El servicio Lambda aplica límites de datos para diferentes tipos de paquetes. Para obtener información detallada sobre los límites de datos, consulte el tema [Cuotas de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) en la Guía del usuario de *AWS Lambda*.

**Para crear un proyecto de Lambda en Visual Studio**

1. Desde Visual Studio, expanda el menú **Archivo**, expanda **Nuevo** y, a continuación, elija **Proyecto**.

1. Desde el cuadro de diálogo **Nuevo proyecto**, configure los cuadros desplegables **Idioma**, **Plataforma** y **Tipo de proyecto** en "Todo…" e introduzca **aws lambda** en el campo **Buscar**. Elija la plantilla **Lambda Project (.NET Core - C\$1) de AWS **.

1. En el campo **Nombre**, introduzca **AWSLambdaSample**, especifique la **Ubicación** del archivo y, a continuación, seleccione **Crear** para proceder.

1. Desde la página **Seleccionar esquema,** seleccione el esquema **Función vacía**, a continuación, elija **Finalizar** para crear el proyecto de Visual Studio.

## Revisión de los archivos del proyecto
<a name="review-the-project-files"></a>

Hay dos archivos de proyecto que revisar: `aws-lambda-tools-defaults.json` y `Function.cs`.

El siguiente ejemplo muestra el archivo `aws-lambda-tools-defaults.json`, que se crea automáticamente como parte del proyecto. Puede configurar las opciones de compilación con los campos de este archivo. 

**nota**  
 Las plantillas de proyecto en Visual Studio contienen muchos campos diferentes. Tenga en cuenta lo siguiente:  
**function-handler**: especifica el método que se ejecuta al poner en marcha la función de Lambda
Al especificar un valor en el campo **function-handler**, ese valor se autocompleta en el asistente de publicación.
Pero si cambia el nombre de la función, la clase o el conjunto, también tendrá que actualizar el campo correspondiente en el archivo `aws-lambda-tools-defaults.json`.

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "function-architecture": "x86_64",
  "function-runtime": "dotnet8",
  "function-memory-size": 512,
  "function-timeout": 30,
  "function-handler": "AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler"
}
```

Examine el archivo `Function.cs`. `Function.cs` define las funciones de C\$1 que se expondrán como funciones de Lambda. Este `FunctionHandler` es la funcionalidad de Lambda que tiene lugar cuando se ejecuta la función de Lambda. En este proyecto, hay una función definida: `FunctionHandler`, que llama a `ToUpper()` en el texto de entrada. 

Ahora, el proyecto ya está listo para la publicación en Lambda.

## Publicación en Lambda
<a name="publish-to-lam"></a>

El procedimiento y la imagen siguientes muestran cómo cargar la función en Lambda mediante el AWS Toolkit for Visual Studio.

![\[Página para invocar la función de prueba\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**Publicar su función en Lambda**

1. Navegue hasta el AWS Explorador expandiendo **Ver** y eligiendo el **AWS Explorador**.

1. En el **Explorador de soluciones**, abra el menú contextual del proyecto que desee publicar (haga clic con el botón derecho) y, a continuación, seleccione **Publicar en AWS Lambda** para abrir la ventana Cargar **función Lambda**.

1. Desde la ventana **Cargar función de Lambda**, complete los siguientes campos:

   1. **Tipo de paquete**: elija **Zip**. Se creará un archivo ZIP como resultado del proceso de compilación y se cargará en Lambda. Como alternativa, puede elegir el **Tipo de paquete** **Image**. En el tutorial [Proyecto básico de AWS Lambda: creación de una imagen de Docker](lambda-creating-project-docker-image.md) se describe cómo publicar con el **Tipo de paquete** **Image**.

   1. **Tiempo de ejecución de Lambda**: elija su tiempo de ejecución de Lambda en el menú desplegable.

   1. **Arquitectura**: seleccione su arquitectura preferida.

   1. **Nombre de la función**: seleccione **Crear nueva función** y, a continuación, introduzca un nombre para mostrar para la instancia de Lambda. Tanto el AWS Explorador como la pantalla hacen referencia a este nombre. Consola de administración de AWS 

   1. **Controlador**: utilice este campo para especificar un controlador de funciones. Por ejemplo: **AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**.

   1. *(Opcional) ***Descripción**: escriba el texto descriptivo que se mostrará con la instancia, desde la Consola de administración de AWS.

   1. **Configuración**: elija la configuración que prefiera en el menú desplegable.

   1. **Marco**: elija el marco que prefiera en el menú desplegable.

   1. **Guardar configuración**: seleccione esta casilla para guardar la configuración actual de `aws-lambda-tools-defaults.json` como predeterminada para futuras implementaciones.

   1. Seleccione **Siguiente** para pasar a la ventana **Detalles avanzados de la función**.

1. En la ventana **Advanced Function Details**, complete los siguientes campos:

   1. **Nombre del rol**: elija un rol asociado a su cuenta. El rol proporciona credenciales temporales para cualquier llamada de AWS servicio realizada mediante el código de la función. Si no tiene un rol, desplácese hasta encontrar el **nuevo rol basado en la política AWS administrada** en el selector desplegable y, a continuación, elija **AWSLambdaBasicExecutionRole**. Este rol tiene permisos de acceso mínimos. 
**nota**  
Su cuenta debe tener permiso para ejecutar la ListPolicies acción de IAM o la lista de **nombres de rol** estará vacía y no podrá continuar.

   1. *(Opcional)* Si su función de Lambda obtiene acceso a los recursos de una Amazon VPC, seleccione las subredes y los grupos de seguridad.

   1. *(Opcional)* Defina las variables de entorno que su función de Lambda necesita. Las claves se cifran automáticamente con la clave de servicio predeterminada gratuita. Como alternativa, puede especificar una AWS KMS clave, por la que se cobrará. [KMS](https://aws.amazon.com/kms/) es un servicio administrado que se puede usar para crear y controlar las claves de cifrado que se utilizan para cifrar los datos. Si tiene una AWS KMS clave, puede seleccionarla de la lista.

1. Seleccione **Cargar** para abrir la ventana **Función de carga** y comenzar el proceso de carga.
**nota**  
La página de la **función de carga** se muestra mientras la función se carga en. AWS Para mantener abierto el asistente tras la carga y poder ver el informe, desactive **Cerrar automáticamente el asistente una vez completado correctamente** en la parte inferior del formulario antes de que se complete el proceso de carga.   
Una vez cargada la función, la función de Lambda estará activa. Se abre la página de visualización **Función:** y aparece la configuración de la nueva función de Lambda.

1. Desde la pestaña **Probar función**, introduzca `hello lambda!` en el campo de entrada de texto y, a continuación, seleccione **Invocar** para invocar manualmente la función de Lambda. El texto, aparecerá en la pestaña **Respuesta**, convertido a mayúsculas. 
**nota**  
Puede volver a abrir **Función**: acceda en cualquier momento haciendo doble clic en la instancia implementada ubicada en el **Explorador de AWS **, debajo del nodo **AWS Lambda**.  
![\[Página para invocar la función de prueba\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *(Opcional)* Para confirmar que ha publicado correctamente la función Lambda, inicie sesión en Consola de administración de AWS y, a continuación, seleccione Lambda. La consola muestra todas las funciones de Lambda publicadas, incluida la que acaba de crear.

## Eliminación
<a name="cleanup-lam"></a>

Si no va a seguir desarrollando con este ejemplo, elimine la función que ha implementado para que no se le facturen los recursos no utilizados de la cuenta.

**nota**  
Lambda supervisa automáticamente las funciones de Lambda por usted e informa de las métricas a través de Amazon. CloudWatch Para supervisar su función y solucionar sus problemas, consulte el tema [Solución de problemas y supervisión de funciones AWS Lambda con CloudWatch Amazon](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html) en AWS Lambda la Guía para desarrolladores.

**Para eliminar la función**

1. Desde el **Explorador de AWS **, expanda el nodo **AWS Lambda**.

1. Haga clic con el botón derecho en la instancia implementada y, a continuación, seleccione **Eliminar**.

# AWS Lambda Proyecto básico: creación de una imagen de Docker
<a name="lambda-creating-project-docker-image"></a>

Puede usar el Toolkit for Visual Studio para implementar AWS Lambda la función como una imagen de Docker. Con Docker, tiene más control sobre su tiempo de ejecución. Por ejemplo, puede elegir tiempos de ejecución personalizados, como .NET 8.0. La imagen de Docker se despliega de la misma forma que cualquier otra imagen de contenedor. Este tutorial es muy similar al [Tutorial: proyecto básico de Lambda](lambda-creating-project-in-visual-studio.md), con dos diferencias:
+ El proyecto incluye un Dockerfile.
+ Se elige una configuración de publicación alternativa.

Para obtener más información sobre las imágenes de contenedor de Lambda, consulte [Paquetes de implementación de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) en la *Guía para desarrolladores de AWS Lambda *.

Para obtener información adicional sobre cómo trabajar con Lambda AWS Toolkit for Visual Studio, consulte el AWS Toolkit for Visual Studio tema [Uso de las AWS Lambda plantillas de esta Guía del](lambda-index.md) usuario.

## Creación de un proyecto de Lambda con .NET Core en Visual Studio
<a name="create-a-visual-studio-net-core-lam-project"></a>

Puede usar plantillas y esquemas de Visual Studio de Lambda para acelerar la inicialización del proyecto. Los esquemas de Lambda contienen funciones escritas previamente que simplifican la creación de una base de proyecto flexible.

**Para crear un proyecto de Lambda con .NET Core en Visual Studio**

1. Desde Visual Studio, expanda el menú **Archivo**, expanda **Nuevo** y, a continuación, elija **Proyecto**.

1. Desde el cuadro de diálogo **Nuevo proyecto**, configure los cuadros desplegables **Idioma**, **Plataforma** y **Tipo de proyecto** en "Todo…" e introduzca **aws lambda** en el campo **Buscar**. Elija la plantilla **Lambda Project (.NET Core - C\$1) de AWS **.

1. En el campo **Nombre del proyecto**, introduzca **AWSLambdaDocker**, especifique la **Ubicación** del archivo y, a continuación, seleccione **Crear**.

1. En la página **Seleccionar un esquema, elija el blueprint.NET** **8 (Container Image)** y, a continuación, elija **Finalizar** para crear el proyecto de Visual Studio. Ahora puede revisar la estructura y el código del proyecto.

## Revisión de los archivos del proyecto
<a name="review-the-project-files"></a>

En las siguientes secciones se examinan los tres archivos de proyecto creados por el esquema **.NET 8 (Imagen de contenedor)**:

1. `Dockerfile`

1. `aws-lambda-tools-defaults.json`

1. `Function.cs`

### 1. Dockerfile
<a name="dockerfile"></a>

Un `Dockerfile` realiza tres acciones principales:
+ `FROM`: establece la imagen de base que se utilizará en esta imagen. Esta imagen base proporciona el tiempo de ejecución de.NET, el tiempo de ejecución de Lambda y un script del intérprete de comandos que facilita un punto de entrada para el proceso de Lambda .NET.
+ `WORKDIR`: Establece el directorio de trabajo interno de la imagen como. `/var/task`
+ `COPY`: copiará los archivos generados a partir del proceso de creación desde su ubicación local al directorio de trabajo de la imagen.

Las siguientes son acciones opcionales de un `Dockerfile` que se pueden especificar:
+ `ENTRYPOINT`: la imagen de base ya incluye un `ENTRYPOINT`, que es el proceso de inicio que se ejecuta cuando se inicia la imagen. Si desea especificar el suyo propio, anulará ese punto de entrada de base.
+ `CMD`: Indica AWS qué código personalizado desea ejecutar. Espera un nombre completo para su método personalizado. Esta línea debe incluirse directamente en el Dockerfile o puede especificarse durante el proceso de publicación. 

  ```
  # Example of alternative way to specify the Lambda target method rather than during the publish process.
  CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]
  ```

A continuación se muestra un ejemplo de un Dockerfile creado mediante el esquema .NET 8 (Imagen de contenedor).

```
FROM public.ecr.aws/lambda/dotnet:8

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach checkout the project's README.md file.
COPY "bin/Release/lambda-publish"  .
```

### 2. aws-lambda-tools-defaults.json
<a name="aws-lambda-tools-defaults"></a>

El archivo `aws-lambda-tools-defaults.json` se utiliza para especificar los valores predeterminados del asistente de implementación del Kit de herramientas para Visual Studio y la CLI de .NET Core. En la siguiente lista se describen los campos que puede configurar en el archivo `aws-lambda-tools-defaults.json`.
+ `profile`: establece tu AWS perfil.
+ `region`: establece la AWS región en la que se almacenan los recursos.
+ `configuration`: establece la configuración utilizada para publicar la función.
+ `package-type`: establece el tipo de paquete de implementación como una imagen de contenedor o archivo .zip.
+ `function-memory-size`: establece la asignación de memoria para la función en MB.
+ `function-timeout`: el tiempo de espera es la cantidad máxima de tiempo en segundos que una función de Lambda puede ejecutarse. Puede ajustarlo en incrementos de 1 segundo hasta un valor máximo de 15 minutos.
+ `docker-host-build-output-dir`: establece el directorio de salida del proceso de compilación que se correlaciona con las instrucciones del `Dockerfile`.
+ `image-command`: es un nombre completo para su método, el código que desea que ejecute la función de Lambda. La sintaxis es la siguiente: `{Assembly}::{Namespace}.{ClassName}::{MethodName}`. Para obtener más información, consulte [Firmas de controlador](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures). Si se establece `image-command` aquí, este valor se rellena de forma automática en el asistente de publicación de Visual Studio más adelante. 

A continuación, se muestra un ejemplo de un aws-lambda-tools-defaults archivo .json creado mediante el blueprint.NET 8 (Container Image).

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "package-type": "image",
  "function-memory-size": 512,
  "function-timeout": 30,
  "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler",
  "docker-host-build-output-dir": "./bin/Release/lambda-publish"
}
```

### 3. Function.cs
<a name="w2aac15c45c16c17c21"></a>

El archivo `Function.cs` define las funciones de C\$1 que se expondrán como funciones de Lambda. `FunctionHandler` es la funcionalidad de Lambda que tiene lugar cuando se ejecuta la función de Lambda. En este proyecto, `FunctionHandler` llama a `ToUpper()` en el texto de entrada. 

## Publicación en Lambda
<a name="publish-to-lam"></a>

Las imágenes de Docker generadas por el proceso de compilación se cargan en Amazon Elastic Container Registry (Amazon ECR). Amazon ECR es un registro de contenedores de Docker completamente gestionado que facilita a los desarrolladores el almacenamiento, la administración y la implementación de imágenes de contenedores de Docker. Amazon ECR aloja la imagen, a la que Lambda hace referencia para proporcionar la funcionalidad Lambda programada cuando se invoca. 

**Para publicar su función en Lambda**

1. Desde el **Explorador de soluciones**, abra el menú contextual del proyecto (haga clic con el botón derecho) y, a continuación, seleccione **Publicar en AWS Lambda** para abrir la ventana **Cargar función de Lambda**.

1. Desde la ventana **Cargar función de Lambda**, haga lo siguiente:  
![\[Cargue la pantalla para publicar la función Lambda basada en imágenes en AWS\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  En **Tipo de paquete**, se ha seleccionado **Image** automáticamente como su **tipo de paquete** porque el asistente de publicación detectó un `Dockerfile` en su proyecto. 

   1. En **Nombre de la función**, introduzca un nombre para mostrar para la instancia de Lambda. Este nombre es el nombre de referencia que aparece tanto en el Explorador de AWS en Visual Studio como en la Consola de administración de AWS.

   1.  En **Descripción**, escriba el texto que se mostrará con la instancia en la Consola de administración de AWS.

   1. En **Comando de imagen**, introduzca una ruta completa al método que desee que ejecute la función de Lambda: **AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler** 
**nota**  
Cualquier nombre de método que se introduzca aquí anulará cualquier instrucción del CMD en el Dockerfile. Introducir **el comando Image** es opcional solo SI su `Dockerfile` incluye un `CMD` para indicar cómo iniciar la función de Lambda.

   1. En **Repositorio de imagen**, introduzca el nombre de un Amazon Elastic Container Registry nuevo o existente. La imagen de Docker que crea el proceso de compilación se carga en este registro. La definición de Lambda que se publique hará referencia a esa imagen de Amazon ECR.

   1.  En **Etiqueta de la imagen**, introduzca una etiqueta de Docker para asociarla a su imagen en el repositorio. 

   1. Elija **Siguiente**.

1. En la página **Detalles avanzados de la función**, en **Nombre del rol**, elija un rol asociado a su cuenta. El rol se utiliza para proporcionar credenciales temporales para las llamadas a los servicios de Amazon Web Services realizadas por el código en la función. Si no tiene un rol, elija **Nuevo rol basado en la política AWS gestionada** y, a continuación, elija. **AWSLambdaBasicExecutionRole** 
**nota**  
Su cuenta debe tener permiso para ejecutar la ListPolicies acción de IAM o la lista de **nombres de rol** estará vacía.

1. Elija **Cargar **para iniciar el proceso de carga y publicación.
**nota**  
Se mostrará la página **Cargando función** durante la carga de la función. A continuación, el proceso de publicación crea la imagen en función de los parámetros de configuración, genera el repositorio de Amazon ECR si es necesario, carga la imagen en el repositorio y crea la Lambda que hace referencia al repositorio con esa imagen.   
Una vez cargada la función, se abre la página de **Función** y muestra la configuración de la nueva función de Lambda. 

1. Para invocar manualmente la función de Lambda, en la pestaña **Probar función**, escriba `hello image based lambda` en el campo de entrada de texto libre de la solicitud y, a continuación, seleccione **Invocar**. El texto, convertido a mayúsculas, aparecerá en **Respuesta**.   
![\[La pestaña Probar función de la página de visualización Función publicada tiene un botón para invocar manualmente el método de Lambda.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. Para ver el repositorio, en el **Explorador de AWS **, en **Amazon Elastic Container Service**, seleccione **Repositorios**.

   Puede volver a abrir **Función**: acceda en cualquier momento haciendo doble clic en la instancia implementada ubicada en el **Explorador de AWS **, debajo del nodo **AWS Lambda**.
**nota**  
**Si la ventana del AWS explorador no está abierta, puede acoplarla mediante **Ver** ->AWS Explorador**

1. Consulte las opciones de configuración adicionales específicas de la imagen en la pestaña **Configuración**. Esta pestaña ofrece una forma de anular los datos de `ENTRYPOINT`, `CMD` y `WORKDIR` que pueden haberse especificado en el Dockerfile. **Descripción** es la descripción que introdujo (de hacerlo) durante la carga o publicación.

## Eliminación
<a name="cleanup-lam"></a>

Si no va a seguir desarrollando con este ejemplo, recuerde eliminar la función y la imagen de ECR que se implementaron para que no se le facturen los recursos no utilizados de la cuenta. 
+ Las funciones se pueden eliminar haciendo clic con el botón derecho en la instancia implementada ubicada en el **Explorador de AWS **, debajo del nodo **AWS Lambda**. 
+ Los repositorios se pueden eliminar en el **Explorador de AWS **, desde **Amazon Elastic Container Service** -> **Repositorios**.

## Siguientes pasos
<a name="next-steps-lam"></a>

Para obtener información sobre cómo crear y probar imágenes de Lambda, consulte [Uso de imágenes de contenedor con Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html).

Para obtener información sobre la implementación de imágenes de contenedores, sus permisos y la anulación de los valores de configuración, consulte [Funciones de configuración](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html).

# Tutorial: Cree y pruebe una aplicación sin servidor con AWS Lambda
<a name="lambda-build-test-severless-app"></a>

Puede crear una aplicación Lambda sin servidor mediante AWS Toolkit for Visual Studio una plantilla. Las plantillas del proyecto Lambda incluyen una para una **aplicación AWS sin servidor**, que es la AWS Toolkit for Visual Studio implementación del [modelo de aplicaciones AWS sin servidor](https://github.com/awslabs/serverless-application-model) (SAM).AWS Con este tipo de proyecto, puede desarrollar un conjunto de AWS Lambda funciones e implementarlas con los AWS recursos necesarios como una aplicación completa, que se utiliza AWS CloudFormation para organizar la implementación.

Para obtener información sobre los requisitos previos y la configuración de AWS Toolkit for Visual Studio, consulte [Uso de plantillas AWS Lambda en AWS el Toolkit](lambda-index.md) for Visual Studio.

**Topics**
+ [Cree un nuevo proyecto de aplicación sin servidor AWS](#create-a-new-aws-serverless-application-project)
+ [Revisión de los archivos de la aplicación sin servidor](#examine-the-files-in-the-serverless-application)
+ [Implementación de la aplicación sin servidor](#deploy-the-serverless-application)
+ [Prueba de la aplicación sin servidor](#test-the-serverless-application)

## Cree un nuevo proyecto de aplicación sin servidor AWS
<a name="create-a-new-aws-serverless-application-project"></a>

AWS Los proyectos de aplicaciones sin servidor crean funciones Lambda con una CloudFormation plantilla sin servidor. CloudFormation Las plantillas le permiten definir recursos adicionales, como bases de datos, añadir funciones de IAM e implementar varias funciones a la vez. Esto difiere de los proyectos AWS Lambda, que se centran en desarrollar e implementar una sola función Lambda.

En el siguiente procedimiento se describe cómo crear un nuevo proyecto de aplicación sin servidor de AWS .

1. Desde Visual Studio, expanda el menú **Archivo**, expanda **Nuevo** y, a continuación, elija **Proyecto**.

1. En el cuadro de diálogo **Nuevo proyecto**, asegúrese de que los cuadros desplegables **Idioma**, **Plataforma** y **Tipo de proyecto** están definidos en "Todo…" e introduzca **aws lambda** en el campo **Buscar**.

1. Seleccione la plantilla **Aplicación sin servidor de AWS con pruebas (.NET Core - C\$1)**.
**nota**  
Es posible que la plantilla **Aplicación sin servidor de AWS con pruebas (.NET Core - C\$1)** no aparezca en la parte superior de los resultados.

1. Haga clic en **Siguiente** para abrir el cuadro de diálogo **Configurar su nuevo proyecto**.

1. En el cuadro de diálogo **Configurar su nuevo proyecto**, introduzca **ServerlessPowertools** para el **Nombre** y, a continuación, complete los campos restantes según sus preferencias. Pulse el botón **Crear** para pasar al cuadro de diálogo de **Selección de esquemas**.

1. En la página **Seleccionar esquema,** elija el esquema **Powertools para AWS Lambda** y, a continuación, elija **Finalizar** para crear el proyecto de Visual Studio.

## Revisión de los archivos de la aplicación sin servidor
<a name="examine-the-files-in-the-serverless-application"></a>

En las siguientes secciones se ofrece una visión detallada de los tres archivos de aplicaciones sin servidor creados para el proyecto:

1. serverless.template

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. serverless.template
<a name="blogcs"></a>

Un `serverless.template` archivo es una AWS CloudFormation plantilla para declarar las funciones de Serverless y otros AWS recursos. El archivo incluido en este proyecto contiene una declaración para una sola función de Lambda que se expondrá a través de Amazon API Gateway como una operación `HTTP *Get*`. Puede editar esta plantilla para personalizar la función existente o añadir más funciones y otros recursos que necesite su aplicación.

A continuación se muestra un ejemplo de un archivo `serverless.template`:

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application.",
  "Resources": {
    "Get": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
         "Architectures": [
            "x86_64"
            ],
         "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get",
         "Runtime": "dotnet8",
         "CodeUri": "",
         "MemorySize": 512,
         "Timeout": 30,
         "Role": null,
         "Policies": [
            "AWSLambdaBasicExecutionRole"
            ],
         "Environment": {
            "Variables": {
               "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting",
               "POWERTOOLS_LOG_LEVEL": "Info",
               "POWERTOOLS_LOGGER_CASE": "PascalCase",
               "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true,
               "POWERTOOLS_TRACER_CAPTURE_ERROR": true,
               "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting"
               }
            },
         "Events": {
            "RootGet": {
               "Type": "Api",
               "Properties": {
                  "Path": "/",
                  "Method": "GET"
                  }
               }
            }
         }
      }
   },
  "Outputs": {
    "ApiURL": {
      "Description": "API endpoint URL for Prod environment",
      "Value": {
        "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
      }
    }
  }
}
```

Tenga en cuenta que muchos de los campos de declaración `...AWS:: Serverless::Function...` son similares a los campos de la implementación de un proyecto de Lambda. El registro, las métricas y el rastreo de Powertools se configuran mediante las siguientes variables de entorno:
+ POWERTOOLS\$1SERVICE\$1NAME= ServerlessGreeting
+ POWERTOOLS\$1LOG\$1LEVEL=Info
+ POWERTOOLS\$1LOGGER\$1CASE= PascalCase
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1RESPONSE=true
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1ERROR=true
+ POWERTOOLS\$1METRICS\$1NAMESPACE= ServerlessGreeting

[Para obtener definiciones y detalles adicionales sobre las variables de entorno, consulte el sitio web Powertools para obtener referencias. AWS Lambda](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/)

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs` es un archivo de clase que contiene un método de C\$1 asignado a una sola función declarada en el archivo de plantilla. La función de Lambda responde a los métodos `HTTP Get` de la API Gateway. A continuación se muestra un ejemplo del archivo `Functions.cs`:

```
public class Functions
{
    [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)]
    [Metrics(CaptureColdStart = true)]
    [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
    public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context)
    {
        Logger.LogInformation("Get Request");

        var greeting = GetGreeting();

        var response = new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = greeting,
            Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } }
        };

        return response;
    }

    [Tracing(SegmentName = "GetGreeting Method")]
    private static string GetGreeting()
    {
        Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count);

        return "Hello Powertools for AWS Lambda (.NET)";
    }
}
```

### 3. aws-lambda-tools-defaults.json
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json`proporciona los valores predeterminados para el asistente de AWS implementación en Visual Studio y los AWS Lambda comandos agregados a la CLI de.NET Core. A continuación se muestra un ejemplo del archivo `aws-lambda-tools-defaults.json` que se incluye en este proyecto:

```
{
  "profile": "Default",
  "region": "us-east-1",
  "configuration": "Release",
  "s3-prefix": "ServerlessPowertools/",
  "template": "serverless.template",
  "template-parameters": ""
}
```

## Implementación de la aplicación sin servidor
<a name="deploy-the-serverless-application"></a>

Para implementar la aplicación sin servidor complete los siguientes pasos.

1. En el **Explorador de soluciones**, abra el menú contextual del proyecto (haga clic con el botón derecho) y seleccione **Publicar en AWS Lambda para** abrir el cuadro de diálogo **Publicar aplicación AWS sin servidor**.

1. En el cuadro de diálogo **Publicar una aplicación AWS sin servidor**, introduzca un nombre para el contenedor de la CloudFormation pila en el campo Nombre de la **pila**.

1. En el campo **Bucket de S3**, elija un bucket de Amazon S3 en el que se cargará el paquete de aplicaciones o elija el botón **Nuevo...** e introduzca el nombre de un nuevo bucket de Amazon S3. A continuación, seleccione **Publicar** para publicar e implementar la aplicación.
**nota**  
La CloudFormation pila y el bucket de Amazon S3 deben estar en la misma AWS región. El resto de los ajustes del proyecto se definen en el archivo `serverless.template`.  
![\[Imagen del cuadro de diálogo Publicar una aplicación AWS sin servidor.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. La ventana de vista de **Pila** se abre durante el proceso de publicación. Cuando se completa la implementación, el campo **Estado** muestra: `CREATE_COMPLETE`.  
![\[Imagen de la ventana de visualización de la pila de implementación en Visual Studio.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## Prueba de la aplicación sin servidor
<a name="test-the-serverless-application"></a>

Cuando se complete la creación de la pila, podrá ver la aplicación mediante la **URL sin servidor de AWS **. Si ha completado este tutorial sin agregar funciones o parámetros adicionales, al acceder a su URL AWS sin servidor, se muestra la siguiente frase en su navegador web:. `Hello Powertools for AWS Lambda (.NET)`

# Tutorial: creación de una aplicación de Lambda con Amazon Rekognition
<a name="lambda-rekognition-example"></a>

En este tutorial se muestra cómo crear una aplicación de Lambda que utilice Amazon Rekognition para etiquetar objetos de S3 con las etiquetas detectadas.

Para obtener información sobre los requisitos previos y la configuración de AWS Toolkit for Visual Studio, consulte [Uso de plantillas AWS Lambda en AWS el Toolkit](lambda-index.md) for Visual Studio.

## Creación de un proyecto Image Rekognition de Lambda con .NET Core
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

En el siguiente procedimiento se describe cómo crear una aplicación de Lambda de Amazon Rekognition desde el AWS Toolkit for Visual Studio.

**nota**  
En el momento de su creación, su aplicación tendrá una solución con dos proyectos: el proyecto de origen que contiene el código de la función de Lambda que se implementará en Lambda y un proyecto de prueba que utiliza xUnit para probar la función localmente.  
A veces, Visual Studio no puede encontrar todas las NuGet referencias de sus proyectos. Esto se debe a que los blueprints requieren dependencias de las que hay que recuperar. NuGet Cuando se crean nuevos proyectos, Visual Studio solo extrae referencias locales y no referencias remotas. NuGet Para corregir NuGet errores: haga clic con el botón derecho en las referencias y seleccione **Restaurar paquetes**.

1. Desde Visual Studio, expanda el menú **Archivo**, expanda **Nuevo** y, a continuación, elija **Proyecto**.

1. En el cuadro de diálogo **Nuevo proyecto**, asegúrese de que los cuadros desplegables **Idioma**, **Plataforma** y **Tipo de proyecto** están definidos en "Todo…" e introduzca **aws lambda** en el campo **Buscar**.

1. Seleccione la plantilla **AWS Lambda con pruebas (.NET Core - C\$1)**.

1. Haga clic en **Siguiente** para abrir el cuadro de diálogo **Configurar su nuevo proyecto**.

1. En el cuadro de diálogo **Configure su nuevo proyecto**, introduzca ImageRekognition «» como **nombre** y, a continuación, complete los campos restantes según sus preferencias. Pulse el botón **Crear** para pasar al cuadro de diálogo de **Selección de esquemas**.

1. Desde el diálogo **Seleccionar esquema**, elija el esquema **Detectar etiquetas de imágenes** y, a continuación, elija **Finalizar** para crear el proyecto de Visual Studio.
**nota**  
Este esquema proporciona código para escuchar los eventos de Amazon S3 y utiliza Amazon Rekognition para detectar etiquetados y añadirlos al objeto de S3 como etiquetas.

## Revisión de los archivos del proyecto
<a name="examine-the-files"></a>

En las siguientes secciones, se examinan estos archivos de proyecto:

1. `Function.cs`

1. `aws-lambda-tools-defaults.json`

### 1. Function.cs
<a name="functioncs"></a>

Dentro del archivo `Function.cs`, el primer segmento de código es el atributo de ensamblado, ubicado en la parte superior del archivo. De forma predeterminada, Lambda acepta únicamente parámetros de entrada y tipos devueltos de tipo `System.IO.Stream`. Debe registrar un serializador para utilizar las clases con tipos para los parámetros de entrada y los tipos devueltos. El atributo de conjunto registra el serializador JSON de Lambda, que utiliza `Newtonsoft.Json` para convertir secuencias en clases con tipos. Puede definir el serializador en el nivel del conjunto o del método.

A continuación se muestra un ejemplo de conjunto de atributos:

```
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
```

La clase tiene dos constructores. El primero es un constructor predeterminado que se utiliza cuando Lambda invoca la función. Este constructor crea los clientes de los servicios Amazon S3 y Amazon Rekognition. El constructor también recupera las AWS credenciales de estos clientes de la función de IAM que se asigna a la función al desplegarla. La AWS región de los clientes se establece en la región en la que se ejecuta la función Lambda. En este esquema, solo desea añadir etiquetas al objeto de Amazon S3 si el servicio Amazon Rekognition tiene un nivel mínimo de confianza en la etiqueta. Este constructor comprueba la variable de entorno `MinConfidence` para determinar el nivel de confianza aceptable. Puede configurar esta variable de entorno cuando implemente la función de Lambda.

A continuación, se muestra un ejemplo del constructor de primera clase de `Function.cs`:

```
public Function()
{
    this.S3Client = new AmazonS3Client();
    this.RekognitionClient = new AmazonRekognitionClient();

    var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME);
    if(!string.IsNullOrWhiteSpace(environmentMinConfidence))
    {
        float value;
        if(float.TryParse(environmentMinConfidence, out value))
        {
            this.MinConfidence = value;
            Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}");
        }
        else
        {
            Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}");
        }
    }
    else
    {
        Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}");
    }
}
```

En el ejemplo siguiente se muestra cómo se puede utilizar el segundo constructor para realizar pruebas. El proyecto de prueba configura sus propios clientes de S3 y Rekognition y los transfiere a:

```
public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence)
{
    this.S3Client = s3Client;
    this.RekognitionClient = rekognitionClient;
    this.MinConfidence = minConfidence;
}
```

En siguiente es un ejemplo del método `FunctionHandler` que está en el archivo `Function.cs`.

```
public async Task FunctionHandler(S3Event input, ILambdaContext context)
{
    foreach(var record in input.Records)
    {
        if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key)))
        {
            Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type");
            continue;
        }

        Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}");
        var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
        {
            MinConfidence = MinConfidence,
            Image = new Image
            {
                S3Object = new Amazon.Rekognition.Model.S3Object
                {
                    Bucket = record.S3.Bucket.Name,
                    Name = record.S3.Object.Key
                }
            }
        });

        var tags = new List();
        foreach(var label in detectResponses.Labels)
        {
            if(tags.Count < 10)
            {
                Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}");
                tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() });
            }
            else
            {
                Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached");
            }
        }

        await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest
        {
            BucketName = record.S3.Bucket.Name,
            Key = record.S3.Object.Key,
            Tagging = new Tagging
            {
                TagSet = tags
            }
        });
    }
    return;
}
```

 `FunctionHandler` es el método al que Lambda llama después de construir la instancia. Observe que el parámetro de entrada es de tipo `S3Event` y no `Stream`. Puede hacerlo gracias al serializador JSON de Lambda registrado. El `S3Event` contiene toda la información acerca del evento activado en S3. La función recorre cíclicamente todos los objetos de S3 que forman parte del evento e indica a Rekognition que detecte etiquetas. Una vez que las etiquetas se han detectado, se añaden como etiquetas al objeto de S3.

**nota**  
El código contiene llamadas a `Console.WriteLine()`. Cuando la función se ejecuta en Lambda, todas las llamadas se `Console.WriteLine()` redirigen a Amazon CloudWatch Logs.

### 2. aws-lambda-tools-defaults.json
<a name="toolsdefaults"></a>

El archivo `aws-lambda-tools-defaults.json` contiene los valores predeterminados que el esquema ha establecido para rellenar automáticamente algunos de los campos del asistente de implementación. También resulta útil para configurar las opciones de línea de comandos para la integración con la CLI de .NET Core.

Para acceder a la integración de la CLI de .NET Core, navegue hasta el directorio del proyecto de la función y escriba **dotnet lambda help**.

**nota**  
El controlador de funciones indica a qué método debe llamar Lambda en respuesta a la función invocada. El formato de este campo es:`<assembly-name>::<full-type-name>::<method-name>`. El espacio de nombres se debe incluir con el nombre del tipo.

## Implementación de la función
<a name="deploy-the-function"></a>

En el siguiente procedimiento se describe cómo implementar la función de Lambda.

1. **En el **Explorador de soluciones**, haga clic con el botón derecho en el proyecto de Lambda y seleccione **Publicar en AWS Lambda** para abrir la ventana Cargar a. AWS Lambda**
**nota**  
Los valores preestablecidos se recuperan del archivo `aws-lambda-tools-defaults.json`.

1. En la ventana **Cargar en AWS Lambda**, introduzca un nombre en el campo **Nombre de la función** y, a continuación, pulse el botón **Siguiente** para acceder a la ventana **Detalles avanzados de la función**.
**nota**  
En este ejemplo se utiliza el **Nombre de la función** **ImageRekognition**.  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. Desde la ventana **Detalles avanzados de la función**, seleccione un rol de IAM que conceda al código permiso para obtener acceso a los recursos Amazon S3 y Amazon Rekognition.
**nota**  
Si sigue este ejemplo, seleccione el rol `AWSLambda_FullAccess`.

1. Establezca la variable de entorno `MinConfidence` en 60 y, a continuación, seleccione **Cargar** para iniciar el proceso de implementación. Cuando el proceso de publicación finaliza, aparece la vista **Función** en el **Explorador de AWS **.  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. Tras una implementación correcta, configure Amazon S3 para que envíe sus eventos a la nueva función desplazándose hasta la pestaña **Orígenes de eventos**.

1. En la pestaña **Orígenes de eventos**, pulse el botón **Añadir** y, a continuación, seleccione el bucket de Amazon S3 que desee conectar con su función de Lambda.
**nota**  
El depósito debe estar en la misma AWS región que la función Lambda.

## Prueba de la función
<a name="test-the-function"></a>

Ahora que la función se ha implementado y que se ha configurado un bucket de S3 como origen de eventos para ella, abra el navegador de buckets de S3 desde el **Explorador de AWS ** para el bucket seleccionado. A continuación, cargue algunas imágenes.

Cuando se haya completado la carga, puede confirmar que su función se ha ejecutado comprobando los registros en la vista de la función. O bien, haga clic con el botón derecho del ratón en las imágenes del navegador del bucket y elija **Properties (Propiedades)**. En la pestaña **Tags (Etiquetas)**, puede ver las etiquetas que se han aplicado al objeto.

![\[Properties window showing metadata tags for an image file in a cloud storage bucket.\]](http://docs.aws.amazon.com/es_es/toolkit-for-visual-studio/latest/user-guide/images/lambda-object-properties.png)


# Tutorial: Uso de Amazon Logging Frameworks AWS Lambda para crear registros de aplicaciones
<a name="cw-log-frameworks"></a>

Puedes usar Amazon CloudWatch Logs para monitorear, almacenar y acceder a los registros de tu aplicación. Para incluir los datos de registro en CloudWatch Logs, utilice un AWS SDK o instale el agente de CloudWatch Logs para supervisar determinadas carpetas de registro. CloudWatch Logs está integrado con varios marcos de registro populares de.NET, lo que simplifica los flujos de trabajo.

Para empezar a trabajar con CloudWatch Logs y los marcos de registro de.NET, añada el NuGet paquete y la fuente de salida de CloudWatch Logs adecuados a su aplicación y, a continuación, utilice la biblioteca de registros como lo haría normalmente. Esto permite a la aplicación registrar los mensajes con su framework de.NET, enviarlos a CloudWatch Logs y mostrar los mensajes de registro de la aplicación en la consola de CloudWatch Logs. También puede configurar métricas y alarmas desde la consola de CloudWatch registros, en función de los mensajes de registro de la aplicación.

Estos son los marcos de registro de. NET compatibles:
+ **NLog**: Para verlo, consulta el paquete [nuget.org NLog ](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **Log4net**[: para verlo, consulte el paquete Log4net de nuget.org](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **Marco de registro ASP.NET Core**: para verlo, consulte el [paquete de marco de registro ASP.NET Core de nuget.org](https://www.nuget.org/packages/AWS.Logger.AspNetCore/).

A continuación se muestra un ejemplo de un `NLog.config` archivo que permite tanto a CloudWatch los registros como a la consola como salida de los mensajes de registro añadiendo el `AWS.Logger.NLog` NuGet paquete y el AWS destino a ellos. `NLog.config`

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
  <targets>
    <target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
    <target name="logfile" xsi:type="Console" layout="${callsite} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile,aws" />
  </rules>
</nlog>
```



Todos los complementos de registro se basan en las AWS credenciales AWS SDK para .NET y las autentican mediante un proceso similar al del SDK. El siguiente ejemplo detalla los permisos que requieren las credenciales del complemento de registro para acceder a CloudWatch los registros:

**nota**  
Los complementos de registro AWS de.NET son un proyecto de código abierto. Para obtener información, ejemplos e instrucciones adicionales, consulte los temas de [ejemplos](https://github.com/aws/aws-logging-dotnet/tree/master/samples) e [instrucciones](https://github.com/aws/aws-logging-dotnet/blob/master/README.md) del GitHub repositorio [AWS Logger.NET](https://github.com/aws/aws-logging-dotnet).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}
```

------