Inicio rápido: publicación de aplicaciones - AWS Serverless Application Repository

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.

Inicio rápido: publicación de aplicaciones

Esta guía le guía a lo largo de los pasos para descargar, compilar, probar y publicar un ejemplo de aplicación sin servidor en AWS Serverless Application Repository mediante la CLI de AWS SAM. Puede utilizar esta aplicación de ejemplo como punto de partida para desarrollar y publicar su propia aplicación sin servidor.

Información general

En los siguientes pasos se describe cómo descargar, compilar y publicar un ejemplo de aplicación sin servidor:

  1. Inicializar. Descargue una aplicación de ejemplo de la plantilla mediante sam init.

  2. Hacer una prueba local. Pruebe la aplicación localmente usando sam local invoke y/o sam local start-api. Tenga en cuenta que con estos comandos, aunque la función Lambda se invoque localmente, lee y escribe en losAWS recursos de laAWS nube.

  3. Crear el paquete. Cuando esté satisfecho con su función Lambda, agrupe la función Lambda, laAWS SAM plantilla y cualquier dependencia en un paquete deAWS CloudFormation implementación mediantesam package. En este paso también incluirá información sobre la aplicación que se cargará en AWS Serverless Application Repository.

  4. Publicar. Publique la aplicación en AWS Serverless Application Repository mediante sam publish. Al final de este paso, podrá ver su aplicaciónAWS Serverless Application Repository e implementarla en laAWS nube medianteAWS Serverless Application Repository.

El ejemplo de Aplicación Hello World de la siguiente sección le guía a lo largo de estos pasos para crear y publicar una aplicación sin servidor.

Aplicación Hello World

En este ejercicio, descargará y probará una aplicación sin servidor Hello World que representa un backend API simple. Cuenta con un punto de conexión de Amazon API Gateway que admite una operación GET y una función de Lambda. Cuando se envía una solicitud GET al punto de conexión, API Gateway invoca la función de Lambda. Después, AWS Lambda ejecuta la función, que simplemente devuelve el mensaje hello world.

La aplicación tiene los siguientes componentes:

  • AWS SAMPlantilla que define dosAWS recursos para la aplicación Hello World: un servicio API Gateway con una operación GET y una función Lambda. La plantilla también define el mapeo entre la operación GET de API Gateway y la función Lambda.

  • El código de la aplicación, que está escrito en Python.

Antes de empezar

Asegúrese de tener la configuración necesaria para este ejercicio:

Paso 1: Inicializar la aplicación

En esta sección, se descarga el ejemplo de aplicación, que consta de una plantilla de AWS SAM y el código de aplicación.

Para inicializar la aplicación
  1. Ejecute el siguiente comando en un símbolo del sistema de la CLI de AWS SAM.

    sam init --runtime python3.6
  2. Revise el contenido del directorio creado por el comando (sam-app/):

    • template.yaml— Define dosAWS recursos que necesita la aplicación Hello World: una función Lambda y un punto final de API Gateway que admita una operación GET. La plantilla también define el mapeo entre los dos recursos.

    • Contenido relacionado con el código de la aplicación Hello World:

      • hello_world/directorio: contiene el código de la aplicación, quehello world se devuelve cuando se ejecuta.

    nota

    Para este ejercicio, el código de la aplicación está escrito en Python y usted especifica el tiempo de ejecución en el comando init. AWS Lambda admite otros lenguajes para crear código de aplicación. Si especifica otro tiempo de ejecución compatible, el comando init proporciona el código de Hello World en el lenguaje especificado y un archivo README.md que puede seguir para ese idioma. Para obtener información acerca de los tiempos de ejecución admitidos, consulte el entorno de ejecución de Lambda y las bibliotecas disponibles.

Paso 2: Probar la aplicación localmente

Ahora que tiene la aplicación de AWS SAM en su máquina local, siga los pasos que se indican a continuación para probarla localmente.

Para probar la aplicación localmente
  1. Inicie el punto de enlace de la API Gateway localmente. Debe ejecutar el siguiente comando desde el directorio que contiene el archivo template.yaml.

    sam-app> sam local start-api --region us-east-1

    El comando devuelve un punto final de API Gateway al que puede enviar solicitudes para realizar pruebas locales.

  2. Pruebe la aplicación. Copia la URL del extremo de API Gateway, pégala en el navegador y selecciona Entrar. Un ejemplo de URL de punto final de API Gateway eshttp://127.0.0.1:3000/hello.

    API Gateway invoca localmente la función Lambda a la que está asignado el punto final. La función Lambda se ejecuta en el contenedor Docker local y retornahello world. API Gateway devuelve una respuesta al navegador que contiene el texto.

Ejercicio: Cambiar la cadena de mensaje

Una vez que haya probado correctamente el ejemplo de aplicación, puede experimentar haciendo una modificación simple: cambie la cadena de mensaje que se devuelve.

  1. Edite el archivo /hello_world/app.py para cambiar la cadena de mensaje de 'hello world' a 'Hello World!'.

  2. Vuelva a cargar la URL de prueba en su navegador y observe la nueva cadena.

Notará que el nuevo código se carga dinámicamente, sin tener que reiniciar el proceso sam local.

Paso 3: Crear el paquete de la aplicación

Después de probar la aplicación localmente, utilice la CLI de AWS SAM para crear un paquete de implementación y una plantilla de AWS SAM empaquetada.

nota

En los pasos siguientes, se crea un archivo .zip con el contenido del directorio hello_world/, que contiene el código de la aplicación. Este archivo .zip es el paquete de implementación de la aplicación sin servidor. Para obtener más información, consulte Creación de un Package de implementación (Python) en la Guía paraAWS Lambda desarrolladores.

Para crear un paquete de implementación de Lambda
  1. Agregue una sección Metadata al archivo de plantilla de AWS SAM que proporcione la información requerida de la aplicación. Para obtener más información acerca de la sección Metadata de las plantillas de AWS SAM, consulte las propiedades de la sección Metadata de las plantillas de AWS SAM en la guía para desarrolladores de AWS Serverless Application Model.

    A continuación se muestra un ejemplo de la sección Metadata:

    Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project

    ReadmeUrlLas propiedadesLicenseUrl y pueden ser referencias a archivos locales (como en el ejemplo anterior) o pueden ser enlaces a cubos de Amazon S3 que ya alojan estos artefactos.

  2. Cree un bucket de S3 en la ubicación donde desea guardar el código empaquetado. Si desea utilizar un bucket de S3 existente, omita este paso.

    sam-app> aws s3 mb s3://bucketname
  3. Cree el paquete de despliegue de funciones Lambda mediante la ejecución del siguiente comando depackageAWS SAM CLI.

    sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    El comando hace lo siguiente:

    • Comprime el contenido delaws-sam/hello_world/ directorio y lo carga en Amazon S3.

    • Carga el paquete de implementación, el archivo README y el archivo LICENSE en el bucket de Amazon S3 especificado por la--s3-bucket opción.

    • Muestra un nuevo archivo de plantilla, denominado packaged.yaml, que se utiliza en el siguiente paso para publicar la aplicación en AWS Serverless Application Repository. El archivo depackaged.yaml plantilla es similar al archivo de plantilla original (template.yaml), pero tiene una diferencia clave:CodeUri yReadmeUrl las propiedades apuntan al bucket y a los objetos de Amazon S3 que contienen los artefactos respectivos.LicenseUrl El siguiente fragmento de un ejemplo de archivo de plantilla packaged.yaml muestra la propiedad CodeUri:

      HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

Paso 4: Publicar la aplicación

Ahora que ha creado el paquete de implementación, puede utilizarlo para publicar la aplicación en AWS Serverless Application Repository.

Para publicar la aplicación sin servidor en AWS Serverless Application Repository
  • Ejecute el siguiente comando para publicar la nueva aplicación en AWS Serverless Application Repository con 0.0.1 como la primera versión creada.

    sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
nota

De forma predeterminada, la aplicación se creará como privada. Debe compartir la aplicación antes de que otrasAWS cuentas puedan ver e implementar su aplicación. Consulte Pasos siguientes a continuación para obtener más información sobre cómo compartir la aplicación.

Pasos siguientes

Ahora que ha publicado su ejemplo de aplicación, a continuación le indicamos algunas cosas que puede que desee hacer con ella.

  • Vea su aplicación enAWS Serverless Application Repository: el resultado delsam publish comando incluirá un enlace a la página de detallesAWS Serverless Application Repository directa de su aplicación. También puede ir a la página de inicio de AWS Serverless Application Repository y buscar su aplicación.

  • Comparta su aplicación: dado que su aplicación está configurada como privada de forma predeterminada, no está visible para otrasAWS cuentas. Para compartir tu solicitud con otras personas, debes hacerla pública o conceder permiso a una lista específica deAWS cuentas. Para obtener información sobre cómo compartir su aplicación mediante la AWS CLI, consulte AWS Serverless Application RepositoryEjemplos de políticas de aplicación. Para obtener información sobre cómo compartir la aplicación mediante la consola, consulte Compartir una aplicación.

Más información

Para obtener más información acerca de la sección Metadata de las plantillas de AWS SAM y de los comandos sam package y sam publish de la CLI de AWS SAM, consulte Publicación de aplicaciones mediante la CLI de AWS SAM en la guía para desarrolladores de AWS Serverless Application Model.