Capas de construcción - 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.

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 plantillaMetadatasección de atributos de recursos con unBuildMethodentrada. Valores válidos paraBuildMethodson identificadores para unAWS Lambdaruntime, o bienmakefile. Inclusión de unBuildArchitecturepara especificar las arquitecturas de conjunto de instrucciones que admite la capa. Valores válidos paraBuildArchitecturesonArquitecturas del conjunto de instrucciones Lambda.

Si especificamakefile, proporciona el archivo makefile personalizado, donde declaras un objetivo de compilación del formulariobuild-layer-logical-idque 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 elContentUripropiedad del recurso de capa y debe denominarseMakefile.

nota

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/optdirectorio 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:Metadatasección de atributos de recursos.

Metadata: BuildMethod: python3.8 BuildArchitecture: arm64
nota

Si no incluye elMetadatasecció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 elCodeUripropiedad del recurso de capa. Para obtener más información, consulte laURI de contenidopropiedad delAWS::Serverless::LayerVersionTipo de recurso de .

Al incluir elMetadataSección de atributo de recurso, puede utilizar elsam buildpara 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 elsam build layer-logical-idcomando.

  • Como dependencia de una función de Lambda. Al incluir el ID lógico de una capa en elLayerspropiedad 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 unMetadatasección de atributos de recursos con unBuildMethod, se crea la capa mediante la creación de toda la aplicación con elsam buildo especificando el recurso de función con elsam build function-logical-idcomando.

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 personalizadamakefilepara construir la capa.

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile

Los siguientes ejemplos demakefilecontiene el objetivo de compilación y los comandos que se ejecutarán. Tenga en cuenta que elContentUriLa propiedad está establecida enmy_layer, por lo que el makefile debe estar ubicado en la raíz delmy_layersubdirectorio, 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 buildcomandos compilan capas que incluyen elMetadatasecciones 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 build function-logical-id # Build the entire application, including the layers that any function depends on sam build