翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SAM テンプレートの Globals セクション
AWS SAM テンプレートで宣言するリソースには、共通の設定がある場合があります。例えば、アプリケーションに 同一の Runtime
、Memory
、VPCConfig
、Environment
、および Cors
設定を持つ複数の AWS::Serverless::Function
がある場合があります。すべてのリソースにこの情報を複製する代わりに、Globals
セクションでそれらを一度だけ宣言し、リソースに継承させることができます。
Globals
セクションは、次の AWS SAM リソースタイプをサポートします:
-
AWS::Serverless::Api
-
AWS::Serverless::Function
-
AWS::Serverless::HttpApi
-
AWS::Serverless::SimpleTable
-
AWS::Serverless::StateMachine
例:
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
この例では、HelloWorldFunction
と ThumbnailFunction
の両方が Runtime
に「nodejs12.x」、Timeout
に「180」秒、および Handler
に「index.handler」を使用しています。HelloWorldFunction
は、継承された TABLE_NAME に加えて、MESSAGE 環境変数を追加します。ThumbnailFunction
はすべての Globals
プロパティを継承し、API イベントソースを追加します。
サポートされるリソースとプロパティ
AWS SAM は、以下のリソースとプロパティをサポートします。
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:
注記
上記のリストに含まれていないリソースとプロパティはサポートされません。それらをサポートしない理由には、1) セキュリティ問題を発生させる可能性がある、または 2) テンプレートを理解しにくくするなどがあります。
暗黙的な API
AWS SAM は、Events
セクションで API を宣言するときに暗黙的な API を作成します。Globals
を使用して、暗黙的な API のすべてのプロパティを上書きできます。
上書き可能なプロパティ
リソースは、Globals
セクションで宣言するプロパティを上書きできます。例えば、環境変数マップに新しい変数を追加する、またはグローバルに宣言された変数を上書きすることができます。ただし、リソースは Globals
セクションで指定されたプロパティを削除できません。
一般に、Globals
セクションはすべてのリソースが共有するプロパティを宣言します。リソースには、グローバルに宣言されたプロパティに新しい値を提供できるものもありますが、それらを完全に削除することはできません。一部のリソースがあるプロパティを使用するが、他のリソースは使用しないという場合は、それを Globals
セクションで宣言しない必要があります。
以下のセクションでは、さまざまなデータ型に対して上書きがどのように機能するかについて説明します。
プリミティブデータ型が置き換えられる
プリミティブデータ型には、文字列、数値、ブール値などがあります。
Globals
セクションの値が Resources
セクションで指定された値に置き換えられます。
例:
Globals: Function: Runtime: nodejs12.x Resources: MyFunction: Type: AWS::Serverless::Function Properties: Runtime: python3.9
MyFunction
の Runtime
は python3.9
に設定されます。
マップが統合される
マップは、ディクショナリまたはキーバリューペアのコレクションとしても知られています。
Resources
セクションのマップエントリは、グローバルマップエントリと統合されます。重複がある場合は、Globals
セクションのエントリが Resource
セクションのエントリで上書きされます。
例:
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
MyFunction
の環境変数は、以下のように設定されます。
{ "STAGE": "Production", "TABLE_NAME": "resource-table", "NEW_VAR": "hello" }
リストが付加される
リストは配列としても知られています。
Globals
セクションのリストエントリは、Resources
セクションのリストの先頭に付加されます。
例:
Globals: Function: VpcConfig: SecurityGroupIds: - sg-123 - sg-456 Resources: MyFunction: Type: AWS::Serverless::Function Properties: VpcConfig: SecurityGroupIds: - sg-first
MyFunction
の VpcConfig
の SecurityGroupIds
は、以下のように設定されます。
[ "sg-123", "sg-456", "sg-first" ]