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:
-
Inicializar. Descargue una aplicación de ejemplo de la plantilla mediante
sam init
. -
Hacer una prueba local. Pruebe la aplicación localmente usando
sam local invoke
y/osam 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. -
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 mediante
sam package
. En este paso también incluirá información sobre la aplicación que se cargará en AWS Serverless Application Repository. -
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:
-
debe tener unaAWS cuenta de un usuario de IAM que tenga permisos de administrador. Consulte Configurar unaAWS cuenta.
-
Debe tener instalada la CLI (interfaz de línea de comandos) de AWS SAM. Consulte Instalación de la CLI de AWS SAM.
-
Debe tener instalada la versión 1.16.77 o posterior de la AWS CLI. Consulte Instalación de la AWS Command Line Interface.
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
-
Ejecute el siguiente comando en un símbolo del sistema de la CLI de AWS SAM.
sam init --runtime python3.6
-
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 comandoinit
proporciona el código de Hello World en el lenguaje especificado y un archivoREADME.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
-
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.
-
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 es
http://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 retorna
hello 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.
-
Edite el archivo
/hello_world/app.py
para cambiar la cadena de mensaje de'hello world'
a'Hello World!'
. -
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
-
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ónMetadata
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
ReadmeUrl
Las 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. -
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
-
Cree el paquete de despliegue de funciones Lambda mediante la ejecución del siguiente comando de
package
AWS 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 del
aws-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 plantillapackaged.yaml
muestra la propiedadCodeUri
: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 del
sam 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.