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