Sección Globals de la plantilla de AWS SAM - 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.

Sección Globals de la plantilla de AWS SAM

A veces, los recursos que se declaran en una plantilla de AWS SAM tienen configuraciones comunes. Por ejemplo, es posible que tenga una aplicación con varios recursos de AWS::Serverless::Function que tengan configuraciones Runtime, Memory, VPCConfig, Environment y Cors idénticas. En lugar de duplicar esta información en todos los recursos, puede declararlos una vez en la sección Globals y dejar que los recursos los hereden.

La sección Globals admite los siguientes tipos de recursos de AWS SAM:

  • AWS::Serverless::Api

  • AWS::Serverless::Function

  • AWS::Serverless::HttpApi

  • AWS::Serverless::SimpleTable

  • AWS::Serverless::StateMachine

Ejemplo:

Globals: Function: Runtime: nodejs12.x Timeout: 180 Handler: index.handler Environment: Variables: TABLE_NAME: data-table Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: Environment: Variables: MESSAGE: "Hello From SAM" ThumbnailFunction: Type: AWS::Serverless::Function Properties: Events: Thumbnail: Type: Api Properties: Path: /thumbnail Method: POST

En este ejemplo, tanto HelloWorldFunction como ThumbnailFunction utilizan “nodejs12.x” para Runtime, “180” segundos para Timeout e “index.handler” para Handler. HelloWorldFunction agrega la variable de entorno MESSAGE, además del TABLE_NAME heredado. ThumbnailFunction hereda todas las propiedades de Globals y añade un origen de eventos de la API.

Recursos y propiedades compatibles

AWS SAM admite los siguientes recursos y propiedades.

Globals: Api: AccessLogSetting: Auth: BinaryMediaTypes: CacheClusterEnabled: CacheClusterSize: CanarySetting: Cors: DefinitionUri: Domain: EndpointConfiguration: GatewayResponses: MethodSettings: MinimumCompressionSize: Name: OpenApiVersion: PropagateTags: TracingEnabled: Variables: Function: Architectures: AssumeRolePolicyDocument: AutoPublishAlias: CodeUri: DeadLetterQueue: DeploymentPreference: Description: Environment: EphemeralStorage: EventInvokeConfig: Handler: KmsKeyArn: Layers: MemorySize: PermissionsBoundary: PropagateTags: ProvisionedConcurrencyConfig: ReservedConcurrentExecutions: Runtime: Tags: Timeout: Tracing: VpcConfig: HttpApi: AccessLogSettings: Auth: PropagateTags: StageVariables: Tags: SimpleTable: SSESpecification: StateMachine: PropagateTags:
nota

No se admiten recursos y propiedades que no se incluyan en la lista anterior. Algunas de las razones por las que no se admiten son: 1) Presentan posibles problemas de seguridad o 2) Hacen que la plantilla sea difícil de entender.

APIs implícitas

AWS SAM crea API implícitas al declarar una API en la sección de Events. Se puede utilizar Globals para anular todas las propiedades de las API implícitas.

Propiedades anulables

Los recursos pueden anular las propiedades que declare en la sección Globals. Por ejemplo, puede añadir nuevas variables a un mapa de variables de entorno o puede anular las variables declaradas globalmente. Sin embargo, el recurso no puede eliminar una propiedad especificada en la sección Globals.

De forma más general, la sección Globals declara las propiedades que comparten todos los recursos. Algunos recursos pueden proporcionar nuevos valores para las propiedades declaradas globalmente, pero no pueden eliminarlos. Si algunos recursos usan una propiedad pero otros no, no debe declararlos en la sección Globals.

En las secciones siguientes, se describe cómo funciona la anulación para distintos tipos de datos.

Se sustituyen los tipos de datos primitivos

Entre estos tipos de datos primitivos se incluyen cadenas, números, valores booleanos, etc.

El valor especificado en la sección Resources reemplaza al valor de la sección Globals.

Ejemplo:

Globals: Function: Runtime: nodejs12.x Resources: MyFunction: Type: AWS::Serverless::Function Properties: Runtime: python3.9

El Runtime para MyFunction está establecido en python3.9.

Los mapas se fusionan

Los mapas también se conocen como diccionarios o colecciones de pares de clave-valor.

Las entradas de mapas de la sección Resources se fusionan con las entradas de mapas globales. Si hay duplicados, la entrada de la sección Resource anula la entrada de la sección Globals.

Ejemplo:

Globals: Function: Environment: Variables: STAGE: Production TABLE_NAME: global-table Resources: MyFunction: Type: AWS::Serverless::Function Properties: Environment: Variables: TABLE_NAME: resource-table NEW_VAR: hello

Las variables de entorno MyFunction se establecen de la siguiente manera:

{ "STAGE": "Production", "TABLE_NAME": "resource-table", "NEW_VAR": "hello" }

Las listas son acumulativas

Las listas también se conocen como matrices.

Las entradas de la lista de la sección Globals se anteponen a la lista de la sección Resources.

Ejemplo:

Globals: Function: VpcConfig: SecurityGroupIds: - sg-123 - sg-456 Resources: MyFunction: Type: AWS::Serverless::Function Properties: VpcConfig: SecurityGroupIds: - sg-first

Los SecurityGroupIds para la VpcConfig de MyFunction establecen de la siguiente manera:

[ "sg-123", "sg-456", "sg-first" ]