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