Bagian global dari templat AWS SAM - AWS Serverless Application Model

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bagian global dari templat AWS SAM

Terkadang sumber daya yang Anda deklarasikan dalam templat AWS SAM memiliki konfigurasi umum. Misalnya, Anda mungkin memiliki aplikasi dengan beberapa sumber daya AWS::Serverless::Function yang memiliki konfigurasi Runtime, Memory, VPCConfig, Environment, dan Cors yang identik. Alih-alih menggandakan informasi ini di setiap sumber daya, Anda dapat mendeklarasikan mereka sekali pada bagian Globals dan biarkan sumber daya Anda mewarisi mereka.

GlobalsBagian ini mendukung jenis AWS SAM sumber daya berikut:

  • AWS::Serverless::Api

  • AWS::Serverless::Function

  • AWS::Serverless::HttpApi

  • AWS::Serverless::SimpleTable

  • AWS::Serverless::StateMachine

Contoh:

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

Dalam contoh ini, HelloWorldFunction dan ThumbnailFunction menggunakan "nodejs12.x" untuk Runtime, "180" detik untuk Timeout, dan "index.handler" untuk Handler. HelloWorldFunction menambahkan variabel lingkungan MESSAGE, selain dari mewarisi TABLE_NAME. ThumbnailFunction mewarisi semua properti Globals dan menambahkan sumber peristiwa API.

Sumber daya dan properti yang didukung

AWS SAM mendukung sumber daya dan properti berikut.

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

Setiap sumber daya dan properti yang tidak termasuk dalam daftar sebelumnya tidak didukung. Beberapa alasan mereka tidak didukung dikarenakan: 1) Mereka membuka potensi masalah keamanan, atau 2) Mereka membuat templatnya sulit untuk dipahami.

API implisit

AWS SAM membuat API implisit ketika Anda mendeklarasikan API pada bagian Events. Anda dapat menggunakan Globals untuk menimpa semua properti dari API implisit.

Properti yang dapat ditimpa

Sumber daya dapat menimpa properti yang Anda deklarasikan pada bagian Globals. Misalnya, Anda dapat menambahkan variabel baru ke peta variabel lingkungan, atau Anda dapat mengganti variabel yang dideklarasikan secara global. Tetapi sumber daya tidak dapat menghapus properti yang ditentukan pada bagian Globals.

Secara umum, Globals mendeklarasikan properti yang dibagikan oleh semua sumber daya Anda. Beberapa sumber daya dapat memberikan nilai baru untuk properti yang dideklarasikan secara global, tetapi mereka tidak dapat menghapusnya. Jika beberapa sumber daya menggunakan properti namun yang lainnya tidak, maka Anda tidak harus mendeklarasikan mereka dalam bagian Globals.

Bagian berikut menjelaskan cara kerja utama untuk tipe data yang berbeda.

Tipe data primitif diganti

Tipe data primitif mencakup string, angka, Boolean, dan sebagainya.

Nilai yang ditentukan dalam bagian Resources menggantikan nilai dalam bagian Globals.

Contoh:

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

Parameter Runtime untuk MyFunction diatur ke python3.9.

Peta digabung

Peta juga dikenal sebagai kamus atau koleksi pasangan nilai kunci.

Entri peta dalam bagian Resources digabung dengan entri peta global. Jika terdapat duplikat, bagian entri Resource menimpa bagian entri Globals.

Contoh:

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

Variabel lingkungan dari MyFunction ditetapkan sebagai berikut:

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

Daftar adalah aditif

Daftar juga dikenal sebagai array.

Daftar entri di bagian Globals ditambahkan ke daftar di bagian Resources.

Contoh:

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

Parameter SecurityGroupIds untuk MyFunction VpcConfig ditetapkan sebagai berikut:

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