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.
Capas de construcción
Puede usarAWS SAMpara crear capas personalizadas. Para obtener más información acerca de las capas, consulteAWSCapas de Lambdaen laAWS LambdaGuía para desarrolladores.
Para crear una capa personalizada, declárala en tuAWS Serverless Application Model(AWS SAM) e incluye un archivo de plantillaMetadata
sección de atributos de recursos con unBuildMethod
entrada. Valores válidos paraBuildMethod
son identificadores para unAWS Lambdaruntime, o bienmakefile
. Inclusión de unBuildArchitecture
para especificar las arquitecturas de conjunto de instrucciones que admite la capa. Valores válidos paraBuildArchitecture
sonArquitecturas del conjunto de instrucciones Lambda.
Si especificamakefile
, proporciona el archivo makefile personalizado, donde declaras un objetivo de compilación del formulariobuild-
que contiene los comandos de compilación de la capa. El archivo makefile es responsable de compilar la capa si es necesario y copiar los artefactos de compilación en la ubicación adecuada necesaria para los pasos posteriores del flujo de trabajo. La ubicación del archivo makefile se especifica mediante ellayer-logical-id
ContentUri
propiedad del recurso de capa y debe denominarseMakefile
.
Al crear una capa personalizada,AWS Lambdadepende de las variables de entorno para encontrar el código de capa. Los tiempos de ejecución de Lambda incluyen rutas en el/opt
directorio en el que se copia el código de capa. La estructura de carpetas de artefactos de compilación de tu proyecto debe coincidir con la estructura de carpetas esperada del tiempo de ejecución para poder encontrar el código de capa personalizado.
Por ejemplo, para Python puedes colocar tu código en elpython/
Subdirectory. Para NodeJS, puedes colocar tu código en elnodejs/node_modules/
Subdirectory.
Para obtener más información, consulteInclusión de dependencias de biblioteca en una capaen laAWS LambdaGuía para desarrolladores.
A continuación se muestra un ejemplo:Metadata
sección de atributos de recursos.
Metadata: BuildMethod: python3.8 BuildArchitecture: arm64
Si no incluye elMetadata
sección de atributos de recursos,AWS SAMno construye la capa. En su lugar, copia los artefactos de compilación de la ubicación especificada en elCodeUri
propiedad del recurso de capa. Para obtener más información, consulte laURI de contenidopropiedad delAWS::Serverless::LayerVersion
Tipo de recurso de .
Al incluir elMetadata
Sección de atributo de recurso, puede utilizar elsam build
para crear la capa, tanto como objeto independiente como dependencia de unAWS Lambdafunción.
-
Como objeto independiente. Es posible que desee crear solo el objeto de capa, por ejemplo, cuando está probando localmente un cambio de código en la capa y no necesita compilar toda la aplicación. Para crear la capa de forma independiente, especifique el recurso de capa con el
sam build
comando.layer-logical-id
-
Como dependencia de una función de Lambda. Al incluir el ID lógico de una capa en el
Layers
propiedad de una función de Lambda en la mismaAWS SAMfichero de plantilla, la capa es una dependencia de esa función Lambda. Cuando esa capa incluye también unMetadata
sección de atributos de recursos con unBuildMethod
, se crea la capa mediante la creación de toda la aplicación con elsam build
o especificando el recurso de función con elsam build
comando.function-logical-id
Ejemplos
Ejemplo de plantilla 1: Cree una capa contra el entorno de ejecución de Python 3.6
El siguiente ejemploAWS SAMcrea una capa contra el entorno de ejecución de Python 3.6.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.6 Metadata: BuildMethod: python3.6 # Required to have AWS SAM build this layer
Ejemplo de plantilla 2: Crear una capa utilizando un archivo makefile personalizado
El siguiente ejemploAWS SAMplantilla utiliza una plantilla personalizadamakefile
para construir la capa.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile
Los siguientes ejemplos demakefile
contiene el objetivo de compilación y los comandos que se ejecutarán. Tenga en cuenta que elContentUri
La propiedad está establecida enmy_layer
, por lo que el makefile debe estar ubicado en la raíz delmy_layer
subdirectorio, y el nombre del archivo debe serMakefile
. Tenga en cuenta también que los artefactos de compilación se copian en elpython/
subdirectorio para queAWS LambdaPodrá encontrar el código de capa.
build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"
Ejemplos de comandos sam build
Los siguientes ejemplos desam build
comandos compilan capas que incluyen elMetadata
secciones de atributos de recursos.
# Build the 'layer-logical-id' resource independently sam build
layer-logical-id
# Build the 'function-logical-id' resource and layers that this function depends on sam buildfunction-logical-id
# Build the entire application, including the layers that any function depends on sam build