使用 AWS SAM 連接器管理資源權限 - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS SAM 連接器管理資源權限

連接器是一種 AWS Serverless Application Model (AWS SAM) 抽象資源類型,識別為AWS::Serverless::Connector,可在無伺服器應用程式資源之間提供簡單且適當範圍的權限。

AWS SAM 連接器的優點

透過在資源之間自動撰寫適當的存取原則,連接器可讓您編寫無伺服器應用程式並專注於應用程式架構,而不需要 AWS 授權功能、原則語言和服務特定安全性設定方面的專業知識。因此,對於無伺服器開發新手的開發人員或希望提高開發速度的經驗豐富的開發人員來說,連接器是一個很大的好處。

使用 AWS SAM 連接器

透過將Connectors資源內嵌在來源資源中來使用資屬性。然後,定義您的目標資源,並描述資料或事件在這些資源之間的流動方式。 AWS SAM 然後制定必要的訪問策略,以促進所需的交互。

下面概述了如何寫入此資源屬性:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: <source-resource-logical-id>: Type: <resource-type> ... Connectors: <connector-name>: Properties: Destination: <properties-that-identify-destination-resource> Permissions: <permission-types-to-provision> ...

連接器如何工作

注意

本節說明連接器如何在幕後佈建必要的資源。使用連接器時會自動發生這種情況。

首先,內嵌Connectors資源屬性會轉換為AWS::Serverless::Connector資源類型。其邏輯 ID 會自動建立為 <source-resource-logical-id><embedded-connector-logical-id>.

例如,下面是一個嵌入式連接器:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Lambda::Function Connectors: MyConn: Properties: Destination: Id: MyTable Permissions: - Read - Write MyTable: Type: AWS::DynamoDB::Table

這將生成以下AWS::Serverless::Connector資源:

Transform: AWS::Serverless-2016-10-31 Resources: ... MyFunctionMyConn: Type: AWS::Serverless::Connector Properties: Source: Id: MyFunction Destination: Id: MyTable Permissions: - Read - Write
注意

您也可以使用此語法在 AWS SAM 範本中定義連接器。當您的來源資源是在與連接器不同的範本上定義的時候,建議您這麼做。

接下來,會自動構成此連線的必要存取原則。如需有關連接器產生之資源的詳細資訊,請參閱AWS CloudFormation指定時產生的資源 AWS::Serverless::Connector

連接器的範例

下列範例顯示如何使用連接器將 AWS Lambda 函數中的資料寫入 Amazon DynamoDB 表格。

使 AWS SAM 用連接器將資料寫入 DynamoDB 資料表的 Lambda 函數。
Transform: AWS::Serverless-2016-10-31 Resources: MyTable: Type: AWS::Serverless::SimpleTable MyFunction: Type: AWS::Serverless::Function Connectors: MyConn: Properties: Destination: Id: MyTable Permissions: - Write Properties: Runtime: nodejs16.x Handler: index.handler InlineCode: | const AWS = require("aws-sdk"); const docClient = new AWS.DynamoDB.DocumentClient(); exports.handler = async (event, context) => { await docClient.put({ TableName: process.env.TABLE_NAME, Item: { id: context.awsRequestId, event: JSON.stringify(event) } }).promise(); } Environment: Variables: TABLE_NAME: !Ref MyTable

Connectors源屬性內嵌於 Lambda 函數來源資源中。DynamoDB 資料表會定義為使用該屬性的目標資源。Id連接器將佈建這兩個資源之間的Write權限。

當您將 AWS SAM 範本部署到時 AWS CloudFormation, AWS SAM 會自動撰寫此連線運作所需的必要存取原則。

來源與目標資源之間的支援連線

連接器支援以Read及來源與目標資源連線的選取組合之間的資Write料和事件權限類型。例如,Write連接器支援來AWS::ApiGateway::RestApi源資源與AWS::Lambda::Function目標資源之間的連線。

您可以使用支援的屬性組合來定義來源和目標資源。屬性需求將取決於您建立的連線以及資源的定義位置。

注意

連接器可以在支援的無伺服器和非伺服器資源類型之間佈建權限。

如需支援的資源連線及其屬性需求的清單,請參閱連接器支援的來源和目標資源類型

進一步了解

如需使用 AWS SAM 連接器的相關資訊,請參閱下列主題:

提供意見

若要提供有關連接器的意見反應,請在serverless-application-model AWS GitHub儲存庫中提交新問題