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é.ThumbnailFunction
hé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" ]