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 declaras en una AWS SAM plantilla 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 Globals sección admite los siguientes tipos AWS SAM de recursos:

  • 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, ambos HelloWorldFunction ThumbnailFunction utilizan «nodejs12.x» paraRuntime, «180" segundos para y «index.handler» paraTimeout. Handler HelloWorldFunctionañade la variable de MESSAGE entorno, además del _ heredado. TABLE NAME ThumbnailFunctionhereda todas las Globals propiedades y añade una fuente de API eventos.

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: CodeSigningConfigArn: CodeUri: DeadLetterQueue: DeploymentPreference: Description: Environment: EphemeralStorage: EventInvokeConfig: FileSystemConfigs: FunctionUrlConfig: Handler: KmsKeyArn: Layers: LoggingConfig: MemorySize: PermissionsBoundary: PropagateTags: ProvisionedConcurrencyConfig: RecursiveLoop: ReservedConcurrentExecutions: RolePath: Runtime: RuntimeManagementConfig: SnapStart: SourceKMSKeyArn: 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.

Implícito APIs

AWS SAM se crea de forma implícita APIs al declarar una API en la Events sección. Se puede utilizar Globals para anular todas las propiedades de lo implícito. APIs

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" ]