Section Globals du modèle AWS SAM - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Section Globals du modèle AWS SAM

Parfois, les ressources que vous déclarez dans un modèle AWS SAM ont des configurations communes. Par exemple, vous pouvez avoir une application avec plusieurs ressources AWS::Serverless::Function ayant des configurations Runtime, Memory, VPCConfig, Environment, et Cors identiques. Au lieu de dupliquer ces informations dans chaque ressource, vous pouvez les déclarer une fois dans la section Globals et laisser vos ressources en hériter.

La section Globals prend en charge les types de ressources AWS SAM suivants :

  • AWS::Serverless::Api

  • AWS::Serverless::Function

  • AWS::Serverless::HttpApi

  • AWS::Serverless::SimpleTable

  • AWS::Serverless::StateMachine

Exemple :

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

Dans cet exemple, HelloWorldFunction et ThumbnailFunction utilisent toutes deux « nodejs12.x » pour Runtime, « 180 » secondes pour Timeout, et " index.handler " pour Handler. HelloWorldFunction ajoute la variable d'environnement MESSAGE, en plus du TABLE_NAME hérité.ThumbnailFunctionhérite de toutes les propriétés Globals et ajoute une source d'événement API.

Ressources et propriétés prises en charge

La ressource AWS SAM prend en charge les propriétés suivantes.

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:
Note

Toutes les ressources et propriétés qui ne sont pas incluses dans la liste précédente ne sont pas prises en charge. Voici quelques raisons pour lesquelles elles ne sont pas prises en charge : 1) elles ouvrent des problèmes de sécurité potentiels, ou 2) elles rendent le modèle difficile à comprendre.

API implicites

AWS SAM crée des API implicites lorsque vous déclarez une API dans la section Events. Vous pouvez utiliser Globals pour remplacer toutes les propriétés des API implicites.

Propriétés substituables

Les ressources peuvent remplacer les propriétés que vous déclarez dans la section Globals. Par exemple, vous pouvez ajouter de nouvelles variables à une carte de variables d'environnement ou remplacer les variables déclarées globalement. Mais la ressource ne peut pas supprimer une propriété spécifiée dans la section Globals.

De manière plus générale, la section Globals déclare les propriétés que toutes vos ressources partagent. Certaines ressources peuvent fournir de nouvelles valeurs pour les propriétés déclarées globalement, mais elles ne peuvent pas les supprimer. Si certaines ressources utilisent une propriété mais que d'autres ne le font pas, alors vous ne devez pas les déclarer dans la section Globals.

Les sections suivantes décrivent comment fonctionne le remplacement pour différents types de données.

Les types de données primitives sont remplacés

Les types de données primitives peuvent être des chaînes, des nombres, des valeurs booléennes, etc.

La valeur spécifiée dans la section Resources remplace la valeur dans la sectionGlobals.

Exemple :

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

L'Runtime pour MyFunction est définie sur python3.9.

Les cartes sont fusionnées

Les cartes sont également désignées sous le nom de dictionnaires ou de collections de paires valeur-clé.

Les entrées de carte dans la section Resources sont fusionnées avec des entrées de carte globales. En cas de doublons, la section Resource remplace l'entrée de la section Globals.

Exemple :

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

Les variables d'environnement de MyFunction sont définis comme suivant :

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

Les listes sont additives

Les listes sont également désignées sous le nom de tableaux.

Les entrées de liste dans la section Globals sont ajoutées à la liste dans la section Resources.

Exemple :

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

Les SecurityGroupIds pour les VpcConfig de MyFunction sont définis comme suivant :

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