Seção Global do modelo AWS SAM - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Seção Global do modelo AWS SAM

Às vezes, os recursos que você declara em um modelo AWS SAM têm configurações comuns. Por exemplo, você pode ter um aplicativo com vários recursos AWS::Serverless::Function que têm configurações Runtime, Memory, VPCConfig, Environment e Cors idênticas. Em vez de duplicar essas informações em todos os recursos, você pode declará-las uma vez na seção Globals e permitir que seus recursos as herdem.

O seção Globals oferece suporte para os seguintes tipos de recursos AWS SAM:

  • AWS::Serverless::Api

  • AWS::Serverless::Function

  • AWS::Serverless::HttpApi

  • AWS::Serverless::SimpleTable

  • AWS::Serverless::StateMachine

Exemplo:

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

Neste exemplo, HelloWorldFunction e ThumbnailFunction usam “nodejs12.x” para Runtime, “180” segundos para Timeout e “index.handler” para Handler. HelloWorldFunction adiciona a variável de ambiente MESSAGE, além do TABLE_NAME herdado. ThumbnailFunction herda todas as propriedades Globals e adiciona uma fonte de eventos de API.

Recursos e propriedades compatíveis

O AWS SAM é compatível com as seguintes propriedades.

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

Os recursos e propriedades que não fazem parte da lista anterior não são aceitas. Alguns motivos para não apoiá-los incluem: 1) Eles abrem possíveis problemas de segurança ou 2) Eles tornam o modelo difícil de entender.

APIs implícitas

AWS SAMcria APIs implícitas quando você declara uma API na seção Events. Você pode usar Globals para substituir todas as propriedades das APIs implícitas.

Propriedades substituíveis

Os recursos podem substituir as propriedades que você declara na seção Globals. Por exemplo, você pode adicionar novas variáveis a um mapa de variáveis de ambiente ou substituir variáveis declaradas globalmente. Mas o recurso não pode remover uma propriedade especificada na seção Globals.

De forma mais geral, a seção Globals declara propriedades que todos os seus recursos compartilham. Alguns recursos podem fornecer novos valores para propriedades declaradas globalmente, mas não podem removê-las. Se alguns recursos usam uma propriedade, mas outros não, você não deve declará-los na seção Globals.

As seções a seguir descrevem como a substituição funciona para diferentes tipos de dados.

Os tipos de dados primitivos são substituídos

Os tipos de dados primitivos incluem cadeias de caracteres, números, booleanos, e assim por diante.

O valor especificado na seção Resources substitui o valor na seção Globals.

Exemplo:

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

O Runtime para MyFunction foi definido como python3.9.

Os mapas são mesclados

Os mapas também são conhecidos como dicionários ou coleções de pares de chave-valor.

As entradas do mapa na seção Resources são mescladas com as entradas do mapa global. Se houver duplicatas, a entrada da seção Resource substituirá a entrada da seção Globals.

Exemplo:

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

As variáveis de ambiente de MyFunction são definidas da seguinte forma:

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

As listas são aditivas

As listas também são conhecidas como matrizes.

As entradas da lista na seção Globals são anexadas à lista na seção Resources.

Exemplo:

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

Os SecurityGroupIds para MyFunction VpcConfig estão definidos da seguinte forma:

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