Creación de una aplicación AWS SAM - AWS Serverless Application Model

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 una aplicación AWS SAM

Después de terminar de leer y empezar¿Cómo utilizar AWS Serverless Application Model (AWS SAM)?, estarás listo para crear un AWS SAM proyecto en tu entorno de desarrollador. Su AWS SAM proyecto servirá como punto de partida para escribir tu aplicación sin servidor. Para ver una lista de opciones de comandos sam init de la CLI de AWS SAM, consulta sam init.

El comando sam init de la interfaz de la línea de comandos de AWS Serverless Application Model (CLI de AWS SAM) proporciona opciones para inicializar una nueva aplicación sin servidor que consta de:

  • Una plantilla de AWS SAM para definir el código de infraestructura.

  • Una estructura de carpetas que organiza la aplicación.

  • Configuración para sus funciones AWS Lambda.

Para crear un AWS SAM proyecto, consulta los temas de estas secciones.

Inicialización de aplicación sin servidor

Cómo inicializar una nueva aplicación sin servidor mediante la CLI de AWS SAM
  1. cd a un directorio de inicio.

  2. Ejecute lo siguiente en la línea de comandos:

    $ sam init
  3. La CLI de AWS SAM lo guiará a través de un flujo interactivo para crear una nueva aplicación sin servidor.

    nota

    Como se detalla enTutorial: Implemente una aplicación Hello World con AWS SAM, este comando inicializa la aplicación sin servidor y crea el directorio del proyecto. Este directorio contendrá varios archivos y carpetas. El archivo más importante estemplate.yaml. Esta es la plantilla de AWS SAM. Su versión de python debe coincidir con la versión de python que aparece en el template.yaml archivo que creó el sam init comando.

Elegir una plantilla inicial

Una plantilla consta de lo siguiente:

  1. Una plantilla de AWS SAM para el código de infraestructura.

  2. Un directorio inicial del proyecto que organiza los archivos del proyecto. Por ejemplo, esto puede incluir:

    1. Una estructura para el código de la función de Lambda y sus dependencias.

    2. Una carpeta events que contiene los eventos de prueba para las testeo local.

    3. Una carpeta tests para respaldar las pruebas unitarias.

    4. Un archivo samconfig.toml para configurar los ajustes del proyecto.

    5. Un archivo ReadMe y otros archivos básicos de inicio del proyecto.

    A continuación, se muestra un ejemplo de un directorio inicial para un proyecto:

    sam-app
    ├── README.md
    ├── __init__.py
    ├── events
    │   └── event.json
    ├── hello_world
    │   ├── __init__.py
    │   ├── app.py
    │   └── requirements.txt
    ├── samconfig.toml
    ├── template.yaml
    └── tests
        ├── __init__.py
        ├── integration
        │   ├── __init__.py
        │   └── test_api_gateway.py
        ├── requirements.txt
        └── unit
            ├── __init__.py
            └── test_handler.py

Puede seleccionar de una lista de plantillas de inicio rápido de AWS disponibles o proporcionar su propia ubicación de plantilla personalizada.

Para elegir una plantilla de inicio rápido de AWS
  1. Cuando se le solicite, seleccione Plantillas de inicio rápido de AWS.

  2. Para empezar, seleccione una plantilla de inicio rápido de AWS. A continuación, se muestra un ejemplo:

    Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
    Choice: 1
    
    Choose an AWS Quick Start application template
        1 - Hello World Example
        2 - Multi-step workflow
        3 - Serverless API
        4 - Scheduled task
        5 - Standalone function
        6 - Data processing
        7 - Hello World Example With Powertools
        8 - Infrastructure event management
        9 - Serverless Connector Hello World Example
        10 - Multi-step workflow with Connectors
        11 - Lambda EFS example
        12 - DynamoDB Example
        13 - Machine Learning
    Template: 4
Para elegir su propia ubicación de plantilla personalizada
  1. Cuando se le solicite, seleccione la ubicación de la plantilla personalizada.

    Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
    Choice: 2
  2. La CLI de AWS SAM le pedirá que proporciona una ubicación para la plantilla.

    Template location (git, mercurial, http(s), zip, path):

    Proporciona cualquiera de las siguientes ubicaciones al archivo.zip de la plantilla:

    • Repositorio GitHub: la ruta al archivo.zip de su repositorio GitHub. El archivo debe estar en la raíz del repositorio.

    • Repositorio Mercurial: la ruta al archivo.zip de su repositorio Mercurial. El archivo debe estar en la raíz del repositorio.

    • Ruta.zip: una ruta HTTPS o local a su archivo.zip.

  3. La CLI de AWS SAM inicializará la aplicación sin servidor con su plantilla personalizada.

Elija un tiempo de ejecución

Al elegir una plantilla de inicio rápido de AWS, la CLI de AWS SAM le pide que seleccione un tiempo de ejecución para las funciones de Lambda. La lista de opciones que muestra la CLI de AWS SAM son los tiempos de ejecución compatibles de forma nativa con Lambda.

  • El tiempo de ejecución proporciona un entorno específico del lenguaje que se ejecuta en el entorno de ejecución.

  • Cuando se implementa en Nube de AWS, el servicio Lambda invoca su función en un entorno de ejecución.

Puedes utilizar cualquier otro lenguaje de programación con un tiempo de ejecución personalizado. Para ello, debe crear manualmente la estructura inicial de la aplicación. A continuación, puede utilizar sam init para inicializar rápidamente la aplicación configurando una ubicación de plantilla personalizada.

A partir de tu selección, la CLI de AWS SAM crea el directorio de inicio para el código y las dependencias de la función de Lambda.

Si Lambda admite varios administradores de dependencias para su tiempo de ejecución, se le solicitará que elija el administrador de dependencias que prefiera.

Elija un tipo de paquete

Cuando elige una plantilla de inicio rápido de AWS y un tiempo de ejecución, la CLI de AWS SAM le pide que seleccione un tipo de paquete. El tipo de paquete determina cómo se implementan las funciones de Lambda para usarlas con el servicio de Lambda. Los dos tipos de paquetes compatibles son:

  1. Imagen del contenedor: contiene el sistema operativo base, el tiempo de ejecución, las extensiones de Lambda, el código de tu aplicación y sus dependencias.

  2. Un archivo de archivo .zip, que incluye el código de la aplicación y sus dependencias.

Para obtener más información sobre paquetes de implementación, consulta Paquetes de implementación de Lambda en la Guía para desarrolladores de AWS Lambda.

A continuación, se muestra un ejemplo de estructura de directorios de una aplicación con una función de Lambda empaquetada como imagen de contenedor. La CLI de AWS SAM descarga la imagen y crea un directorio Dockerfile en el directorio de la función para especificar la imagen.

sam-app
├── README.md
├── __init__.py
├── events
│   └── event.json
├── hello_world
│   ├── Dockerfile
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── samconfig.toml
├── template.yaml
└── tests
    ├── __init__.py
    └── unit
        ├── __init__.py
        └── test_handler.py

A continuación, se muestra un ejemplo de estructura de directorios de una aplicación con una función empaquetada como un archivo de archivos.zip.

sam-app
├── README.md
├── __init__.py
├── events
│   └── event.json
├── hello_world
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── samconfig.toml
├── template.yaml
└── tests
    ├── __init__.py
    ├── integration
    │   ├── __init__.py
    │   └── test_api_gateway.py
    ├── requirements.txt
    └── unit
        ├── __init__.py
        └── test_handler.py

Configura el rastreo AWS X-Ray

Puede optar por activar el rastreo AWS X-Ray. Para obtener más información, consulta ¿Qué es AWS X-Ray? en la Guía para desarrolladores de AWS X-Ray.

Si lo activa, la CLI de AWS SAM configura la plantilla AWS SAM. A continuación, se muestra un ejemplo:

Globals: Function: ... Tracing: Active Api: TracingEnabled: True

Configuración de la supervisión con Información de aplicaciones de Amazon CloudWatch

Puede optar por activar la supervisión con Información de aplicaciones de Amazon CloudWatch. Para obtener más información, consulta Información de aplicaciones de Amazon CloudWatch en la Guía del usuario de Amazon CloudWatch.

Si lo activa, la CLI de AWS SAM configura la plantilla AWS SAM. A continuación, se muestra un ejemplo:

Resources: ApplicationResourceGroup: Type: AWS::ResourceGroups::Group Properties: Name: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName ResourceQuery: Type: CLOUDFORMATION_STACK_1_0 ApplicationInsightsMonitoring: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName AutoConfigurationEnabled: 'true' DependsOn: ApplicationResourceGroup

Asigne un nombre a la aplicación.

Indique un nombre para su solicitud. La CLI de AWS SAM crea una carpeta de nivel superior para la aplicación con este nombre.

Opciones para el inicio de sesión

Estas son algunas de las opciones principales que puede utilizar con el comando sam init. Para obtener una lista de todas las opciones, consulta sam init.

Inicializa una aplicación mediante una ubicación de plantilla personalizada

Utiliza la opción --location y proporciona una ubicación de plantilla personalizada compatible. A continuación, se muestra un ejemplo:

$ sam init --location https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip

Inicializa una aplicación sin el flujo interactivo

Utiliza la opción --no-interactive y proporciona las opciones de configuración en la línea de comandos para omitir el flujo interactivo. A continuación, se muestra un ejemplo:

$ sam init --no-interactive --runtime go1.x --name go-demo --dependency-manager mod --app-template hello-world

Resolución de problemas

Para solucionar problemas de la CLI de AWS SAM, consulta Solución de problemas para AWS SAM CLI.

Ejemplos

Inicializa una aplicación sin servidor nueva con la plantilla de inicio Hello World de AWS

Para ver este ejemplo, consulta Paso 1: inicializar la aplicación de muestra Hello World en el tutorial: Implementación de una aplicación de Hello World.

Inicializa una nueva aplicación sin servidor con una ubicación de plantilla personalizada

Los siguientes son ejemplos de cómo proporcionar una ubicación GitHub a la plantilla personalizada:

$ sam init --location gh:aws-samples/cookiecutter-aws-sam-python $ sam init --location git+sh://git@github.com/aws-samples/cookiecutter-aws-sam-python.git $ sam init --location hg+ssh://hg@bitbucket.org/repo/template-name

A continuación, se muestra un ejemplo de una ruta de archivo local:

$ sam init --location /path/to/template.zip

A continuación, se muestra un ejemplo de una ruta a la que se puede acceder mediante HTTPS:

$ sam init --location https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip

Más información

Para obtener más información sobre el uso del comando sam init, consulta los enlaces siguientes:

Siguientes pasos

Ahora que ha creado su AWS SAM proyecto, está listo para empezar a crear tu aplicación. Consulte Definición de la infraestructura con AWS SAM para obtener instrucciones detalladas sobre las tareas que debe completar para hacerlo.