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 AWS SAM modelo 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.

A Globals seção oferece suporte aos seguintes tipos de AWS SAM recursos:

  • 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, ThumbnailFunction use “nodejs12.x” paraRuntime, “180" segundos para HelloWorldFunction e “index.handler” paraTimeout. Handler HelloWorldFunctionadiciona a variável de MESSAGE ambiente, além do TABLE _ NAME herdado. ThumbnailFunctionherda todas as Globals propriedades e adiciona uma fonte de API eventos.

Recursos e propriedades compatíveis

AWS SAM suporta os seguintes recursos e 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: 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

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.

Implícito APIs

AWS SAM cria implícito APIs quando você declara um API na Events seção. Você pode usar Globals para substituir todas as propriedades de implícitoAPIs.

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