

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.

# Creación de funciones Lambda de.NET con compilación AOT nativa en AWS SAM
<a name="build-dotnet7"></a>

Cree y empaquete sus AWS Lambda funciones de.NET 8 con AWS Serverless Application Model (AWS SAM), utilizando la compilación nativa Ahead-of-Time (AOT) para mejorar los tiempos de arranque en AWS Lambda frío.

**Topics**
+ [Descripción general de AOT nativo para .NET 8](#build-dotnet7-overview)
+ [Uso AWS SAM con funciones Lambda de.NET 8](#build-dotnet7-sam)
+ [Requisitos previos de instalación](#build-dotnet7-prerequisites)
+ [Defina las funciones Lambda de.NET 8 en su plantilla AWS SAM](#build-dotnet7-sam-define)
+ [Crea tu aplicación con la CLI de AWS SAM.](#build-dotnet7-sam-build)
+ [Más información](#build-dotnet7-learn-more)

## Descripción general de AOT nativo para .NET 8
<a name="build-dotnet7-overview"></a>

Históricamente, las funciones de Lambda .NET tienen tiempos de inicio en frío que afectan a la experiencia del usuario, la latencia del sistema y los costos de uso de las aplicaciones sin servidor. Con la compilación de AOT nativo de .NET, puede mejorar los tiempos de arranque en frío de sus funciones de Lambda. *Para obtener más información sobre el AOT nativo para .NET 8, consulte [Uso del AOT nativo en el repositorio de Dotnet](https://github.com/dotnet/runtime/tree/main/src/coreclr/nativeaot#readme). GitHub *

## Uso AWS SAM con funciones Lambda de.NET 8
<a name="build-dotnet7-sam"></a>

Siga estos pasos para configurar las funciones de Lambda de .NET 8 con AWS Serverless Application Model (AWS SAM):
+ Instala los requisitos previos en su máquina de desarrollo.
+ Defina las funciones Lambda de.NET 8 en su plantilla. AWS SAM 
+ Cree su aplicación con. AWS SAMCLI

## Requisitos previos de instalación
<a name="build-dotnet7-prerequisites"></a>

A continuación, se indican los requisitos previos.
+ El AWS SAMCLI
+ La CLI de .NET Core
+ La herramienta global .NET Core de Amazon.Lambda.Tools.
+ Docker

**Instala la CLI AWS SAM**

1. Para comprobar si ya tienes la CLI de AWS SAM instalada, ejecuta lo siguiente:

   ```
   sam --version
   ```

1. Para instalar el AWS SAMCLI, consulte[Instala la AWS SAM CLI](install-sam-cli.md).

1. Para actualizar una versión instalada del AWS SAMCLI, consulte[Actualización de AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

**Instalar la CLI de .NET Core**

1. Para descargar e instalar la CLI de .NET Core, consulta [Descargar .NET](https://dotnet.microsoft.com/download) desde el sitio web de Microsoft.

1. Para obtener más información sobre la CLI de .NET Core, consulta la [CLI de .NET Core](https://docs.aws.amazon.com/lambda/latest/dg/csharp-package-cli.html) en la *Guía para desarrolladores de AWS Lambda *.

**Instala la herramienta global .NET Core de Amazon.Lambda.Tools.**

1. Ejecuta el siguiente comando:

   ```
   dotnet tool install -g Amazon.Lambda.Tools
   ```

1. Si ya tienes la herramienta instalada, puedes asegurarse de que es la versión más reciente usando el siguiente comando:

   ```
   dotnet tool update -g Amazon.Lambda.Tools
   ```

1. Para obtener más información acerca de la herramienta global .NET Core de Amazon.Lambda.Tools, consulte el repositorio CLI de extensiones [AWS para](https://github.com/aws/aws-extensions-for-dotnet-cli) .NET en. GitHub

**Instalar Docker**
+ Para compilar con AOT nativo, es necesario instalar Docker. Para obtener las instrucciones de instalación, consulta [Instalación de Docker para usarlo con la CLI de AWS SAM](install-docker.md).

## Defina las funciones Lambda de.NET 8 en su plantilla AWS SAM
<a name="build-dotnet7-sam-define"></a>

Para definir un. NET8 Función Lambda en su AWS SAM plantilla, haga lo siguiente:

1. Ejecute el siguiente comando desde el directorio de inicio que quiera:

   ```
   sam init
   ```

1. Seleccione `AWS Quick Start Templates` para elegir una plantilla de inicio.

1. Elige la plantilla `Hello World Example`.

1. Introduzca `n` para no utilizar la versión ejecutable y el tipo de paquete más populares.

1. Para la versión ejecutable, elija `dotnet8`.

1. Para el tipo de paquete, elija `Zip`.

1. Para su plantilla de inicio, elija `Hello World Example using native AOT`.

**Instalar Docker**
+ Para compilar con AOT nativo, es necesario instalar Docker. Para obtener las instrucciones de instalación, consulta [Instalación de Docker para usarlo con la CLI de AWS SAM](install-docker.md).

```
Resources:
HelloWorldFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ./src/HelloWorldAot/
    Handler: bootstrap
    Runtime: dotnet8
    Architectures:
      - x86_64
    Events:
      HelloWorldAot:
        Type: Api 
        Properties:
          Path: /hello
          Method: get
```

**nota**  
Cuando la `Event` propiedad de an `AWS::Serverless::Function` se establece en`Api`, pero no se especifica, AWS SAM genera el `AWS::ApiGateway::RestApi` CloudFormation recurso. `RestApiId`

## Crea tu aplicación con la CLI de AWS SAM.
<a name="build-dotnet7-sam-build"></a>

 Desde el directorio raíz del proyecto, ejecute el comando `sam build` para empezar a crear la aplicación. Si la propiedad `PublishAot` se ha definido en el archivo de proyecto de .NET 8, la AWS SAM de CLI se compilará con la compilación de AOT nativo. Para obtener más información sobre la propiedad `PublishAot`, consulta [Implementación nativa de AOT](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/) en la documentación de *.NET de Microsoft*.

Para crear la función, AWS SAMCLI invoca la CLI de .NET Core, que utiliza la herramienta de .NET Core Global Amazon.Lambda.Tools.

**nota**  
Al compilar, si existe un archivo `.sln` en el mismo directorio o en el directorio principal del proyecto, el directorio que contienes el archivo `.sln` se montará en el contenedor. Si no se encuentra ningún archivo `.sln`, solo se montará la carpeta del proyecto. Por lo tanto, si está creando una aplicación para varios proyectos, asegúrese de que el archivo `.sln` esté ubicado en la propiedad.

## Más información
<a name="build-dotnet7-learn-more"></a>

Para obtener más información sobre la creación de funciones de Lambda de .NET 8, consulte [Introducing the .NET 8 runtime for AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-the-net-8-runtime-for-aws-lambda/).

Para obtener más información sobre el comando **sam build**, consulta [sam build](sam-cli-command-reference-sam-build.md).