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
Les ressources que vous déclarez dans un AWS SAM modèle ont parfois 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 Globals
section prend en charge les types de AWS SAM ressources 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, ThumbnailFunction
utilisez à la fois HelloWorldFunction
« nodejs12.x » pourRuntime
, « 180 » secondes pour et « index.handler » pourTimeout
. Handler
HelloWorldFunction
ajoute la variable d'MESSAGEenvironnement, en plus du TABLE _ héritéNAME. ThumbnailFunction
hérite de toutes les Globals
propriétés et ajoute une source d'APIévénement.
Ressources et propriétés prises en charge
AWS SAM prend en charge les ressources et 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: 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:
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.
Imimplicite APIs
AWS SAM crée une valeur implicite APIs lorsque vous déclarez un API dans la Events
section. Vous pouvez l'utiliser Globals
pour remplacer toutes les propriétés APIs 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" ]