AWS SAM テンプレートの Globals セクション - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAM テンプレートの Globals セクション

AWS SAM テンプレートで宣言するリソースには、共通の設定がある場合があります。例えば、アプリケーションに 同一の RuntimeMemoryVPCConfigEnvironment、および 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

この例では、HelloWorldFunctionThumbnailFunction の両方が 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

MyFunctionRuntimepython3.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

MyFunctionVpcConfigSecurityGroupIds は、以下のように設定されます。

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