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.
sam build
Crea una aplicación sin servidor y la prepara para los pasos posteriores del flujo de trabajo, como probar localmente la aplicación o implementarla en elAWSCloud. Si proporcionas unRESOURCE_LOGICAL_ID
, luegoAWS SAMcrea solo ese recurso. Para crear un recurso de una aplicación o pila anidada, puede proporcionar el ID lógico de la aplicación o la pila junto con el ID lógico del recurso mediante el formatoStackLogicalId/ResourceLogicalId
.
Lasam build
comando procesa suAWS SAMarchivo de plantilla, código de aplicación y cualquier archivo y dependencias específicas del idioma aplicable. El comando también copia los artefactos de compilación en el formato y la ubicación esperados para los pasos posteriores del flujo de trabajo. Se especifican dependencias en un archivo de manifiesto que incluye en la aplicación, comorequirements.txt
para funciones de Python, opackage.json
para funciones Node.js.
El formato de los artefactos de compilación de la aplicación depende del tipo de paquete. Especificas tuAWS Lambdatipo de paquete de función con elPackageType
propiedad. Las opciones son:
-
Zip
— Un archivo de archivo .zip que contiene su código de aplicación y sus dependencias. Si empaqueta el código como un archivo de archivo .zip, debe especificar un tiempo de ejecución de Lambda para su función. -
Image
— Una imagen contenedor, que incluye el sistema operativo base, el tiempo de ejecución y las extensiones, además del código de la aplicación y sus dependencias.
Para obtener más información acerca de los tipos de paquete Lambda, consultePaquetes de implementación de Lambdaen laAWS LambdaGuía para desarrolladores.
Si un recurso incluye unMetadata
atributo de recurso con unBuildMethod
entrada,sam build
crea ese recurso de acuerdo con el valor delBuildMethod
entrada. Valores válidos paraBuildMethod
son 1) Uno de los identificadores de un motor de ejecución de Lambda, o 2) Elmakefile
identificador.
-
Identificador de tiempo de ejecución Lambda— Cree el recurso en función de un motor de ejecución de Lambda. Para obtener las lista de identificadores de tiempo de ejecución compatibles, consulteTiempos de ejecución de Lambdaen laAWS LambdaGuía para desarrolladores.
-
makefile
identifier — Ejecute los comandos del destino de compilación del recurso. En este caso, su archivo makefile debe ser nombradoMakefile
e incluye un objetivo de compilación denominadobuild-
.resource-logical-id
Para crear capas y tiempos de ejecución personalizados, también puede utilizar laMetadata
atributo de recurso con unBuildMethod
entrada. Para obtener información sobre las capas de creación, consulteCapas de construcción. Para obtener información acerca de la creación de tiempos de ejecución personalizados, consulteCreación de Runtimes personalizados.
Para recursos de funciones sin servidor que tienen elImage
tipo de paquete, utilice elMetadata
atributo de recurso para configurar los ajustes de imagen de Docker necesarios para crear una imagen de contenedor. Para obtener más información acerca de la creación de imágenes de contenedor, consulteCreación de una imagen de contenedor.
Para ver un ejemplo completo que utiliza este comando, incluidas las pruebas locales y la implementación en elAWSCloud, consulteTutorial: Implementar una aplicación Hello World. Lasam build
El comando forma parte dePaso 2: Cree su aplicación.
Uso:
sam build [OPTIONS] [RESOURCE_LOGICAL_ID]
Ejemplos:
To use these commands, update your SAM template to specify the path to your function's source code in the resource's Code or CodeUri property. To build on your workstation, run this command in the directory containing your SAM template. Built artifacts are written to the .aws-sam/build directory. $ sam build To build inside a Lambda-like Docker container $ sam build --use-container To build with environment variables passed to the build container from the command line $ sam build --use-container --container-env-var Function1.GITHUB_TOKEN=<token1> --container-env-var GLOBAL_ENV_VAR=<global-token> To build with environment variables passed to the build container from a file $ sam build --use-container --container-env-var-file <env-file.json> Build a Node.js 12 application using a container image pulled from DockerHub $ sam build --use-container --build-image amazon/aws-sam-cli-build-image-nodejs12.x Build a function resource using the Python 3.8 container image pulled from DockerHub $ sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8 To build and run your functions locally $ sam build && sam local invoke To build and package for deployment $ sam build && sam package --s3-bucket <bucketname> To build the 'MyFunction' resource $ sam build MyFunction To build the 'MyFunction' resource of the 'MyNestedStack' nested stack $ sam build MyNestedStack/MyFunction
Argumentos:
Argumento | Descripción |
---|---|
RESOURCE_LOGICAL_ID |
Opcional. IndicaAWS SAMpara crear un único recurso declarado en elAWS SAMTemplate. Los artefactos de compilación del recurso especificado serán los únicos disponibles para los comandos posteriores del flujo de trabajo, p. ej.sam package ysam
deploy . |
Opciones:
Opción | Descripción |
---|---|
-b , --build-dir DIRECTORY |
Ruta de acceso a un directorio donde se almacenan los artefactos compilados. Este directorio y todo su contenido se eliminan con esta opción. |
-s , --base-dir DIRECTORY |
Resuelve las rutas relativas al código fuente de la función o de la capa con respecto a este directorio. Utilice esta opción si desea cambiar la forma en que se resuelven las rutas relativas a las carpetas de código fuente. De forma predeterminada, las rutas relativas se resuelven con respecto alAWS SAMubicación de la plantilla. Además de los recursos de la aplicación raíz o pila que está creando, esta opción también aplica aplicaciones o pilas anidadas. Esta opción se aplica a los siguientes tipos de recursos y propiedades:
|
-u , --use-container |
Si sus funciones dependen de paquetes que tienen dependencias compiladas de forma nativa, utilice esta opción para crear su función dentro de un contenedor Docker similar a Lambda. |
-e , --container-env-var TEXT |
Variables de entorno que transferir al contenedor de compilación. Puede especificar esta opción varias veces. Cada instancia de esta opción toma un par clave-valor, donde la clave es la variable de recurso y entorno, y el valor es el valor de la variable de entorno. Por ejemplo, --container-env-var Function1.GITHUB_TOKEN=TOKEN1
--container-env-var Function2.GITHUB_TOKEN=TOKEN2 .Esta opción solo se aplica si el |
-ef , --container-env-var-file PATH |
Ruta y nombre de archivo de un archivo JSON que contiene los valores de las variables de entorno del contenedor. Para obtener más información acerca de los archivos de variables de entorno contenedor, consulteArchivo de variables de entorno contenedor. Esta opción solo se aplica si el |
--build-image TEXT |
URI de la imagen de contenedor que desea extraer para la compilación. Por defecto,AWS SAMExtracción de la imagen del contenedor de Amazon ECR Public. Utilice esta opción para extraer la imagen de otra ubicación. Puede especificar esta opción varias veces. Cada instancia de esta opción puede tomar una cadena o un par clave-valor. Si especifica una cadena, es el URI de la imagen contenedor que se utilizará para todos los recursos de la aplicación. Por ejemplo, Esta opción solo se aplica si el |
-m , --manifest PATH |
Ruta de acceso a un archivo de manifiesto de dependencia personalizado (por ejemplo, package.json) que se va a utilizar en lugar del predeterminado. |
-t, --template-file, --template PATH |
Ruta y nombre de archivo deAWS SAMArchivo de plantilla de[default:
template.[yaml|yml]] . |
--parameter-overrides |
(Opcional) Cadena que contieneAWS CloudFormationreemplazos de parámetros codificados como pares clave-valor. Utiliza el mismo formato que laAWS Command Line Interface(AWS CLI). Por ejemplo: 'ParameterKey =KeyPairName ,ParameterValue =MyKey ParameterKey =InstanceType ,ParameterValue =t1.micro ». |
--skip-pull-image |
Especifica si el comando debe omitir la extracción de la última imagen Docker para el tiempo de ejecución de Lambda. |
--docker-network TEXT |
Especifica el nombre o ID de una red Docker existente a la que deben conectarse los contenedores de Docker de Lambda Docker, junto con la red en modo puente predeterminada. Si no se especifica, los contenedores de Lambda se conectan solo a la red Docker en modo puente predeterminada. |
--parallel |
Compilaciones parallel habilitadas. Utilice esta opción para crear suAWS SAMfunciones y capas de plantilla en parallel. De forma predeterminada, las funciones y las capas se compilan en secuencia. |
--cached | --no-cached |
Habilitar o deshabilitar las compilaciones en caché. Utilice esta opción para reutilizar artefactos de compilación que no han cambiado con respecto a las compilaciones anteriores.AWS SAMevalúa si ha cambiado algún archivo del directorio del proyecto de. De forma predeterminada, las compilaciones no se almacenan en caché. Si el archivo de--no-cached se invoca, anula lacached = true configuración en samcofig.toml. Nota: AWS SAMno evalúa si has cambiado módulos de terceros de los que depende tu proyecto, en los que no has proporcionado una versión específica. Por ejemplo, si la función Python incluye unrequirements.txt archivo con la entradarequests=1.x y los cambios más recientes de la versión del módulo de solicitud de1.1 a1.2 , luegoAWS SAMno extrae la última versión hasta que ejecute una compilación no almacenada en caché. |
--cache-dir |
El directorio en el que se almacenan los artefactos de caché cuando--cached se especifica. El directorio de caché predeterminado es.aws-sam/cache . |
-x, --exclude |
Nombre de los recursos que se van a excluir de la compilación de SAM CLI. Por ejemplo, si su plantilla de contieneFunction1 ,Function2 , yFunction3 y tú corressam build --exclude Function2 , soloFunction1 yFunction3 se construirá. |
--profile TEXT |
El perfil específico del archivo de credenciales que obtieneAWSCredenciales de . |
--region TEXT |
LaAWSRegión en la que desea implementar. Por ejemplo, us-east-1. |
--config-file PATH |
Ruta y nombre de archivo del archivo de configuración que contiene los valores de parámetro predeterminados que se van a utilizar. El valor predeterminado es»samconfig.toml «en la raíz del directorio del proyecto. Para obtener más información sobre los archivos de configuración, consulte AWS SAMArchivo de configuración de la CLI. |
--config-env TEXT |
El nombre del entorno que especifica los valores de parámetros predeterminados en el archivo de configuración que se va a utilizar. El valor predeterminado es «default». Para obtener más información sobre los archivos de configuración, consulte AWS SAMArchivo de configuración de la CLI. |
--debug |
Activa el registro de depuración para imprimir mensajes de depuración que elAWS SAMCLI genera y muestra marcas de hora. |
--help |
Muestra este mensaje y termina. |
Ejemplos
Creación de un recurso mediante un identificador de tiempo de ejecución de Lambda
A continuación se muestra un ejemploAWS SAMplantilla que muestra cómo crear un recurso utilizando un identificador de tiempo de ejecución de Lambda:
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.6 Metadata: BuildMethod: python3.6
Con esta plantilla, el siguiente comando creará elMyLayer
recurso contra el entorno de ejecución de Python 3.6:
sam build MyLayer
Creación de un recurso mediante elmakefile
identificador
A continuación se muestra un ejemploAWS SAMque muestra cómo crear un recurso mediante elmakefile
identificador:
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile
Este es un ejemplo de un archivo makefile asociado. El archivo debe denominarseMakefile
e incluya un destino de compilación con los comandos que desea ejecutar:
build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"
Con esta plantilla y makefile, el siguiente comando ejecutará los comandos parabuild-MyLayer
objetivo:
sam build MyLayer
Pasar las variables de entorno a un contenedor de compilación
A continuación se muestra un ejemplo que muestra cómo pasar variables de entorno a un contenedor de compilación mediante un archivo.
En primer lugar, cree un archivo llamadoenv.json
Con el siguiente contenido:
{ "MyFunction1": { "GITHUB_TOKEN": "
TOKEN1
" }, "MyFunction2": { "GITHUB_TOKEN": "TOKEN2
" } }
A continuación, ejecute el siguiente comando:
sam build --use-container --container-env-var-file env.json
Para obtener más información sobre los archivos de variables de entorno contenedor, consulteArchivo de variables de entorno contenedor.