AWS::Serverless::Connector - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS::Serverless::Connector

其中配置其中包含其中包含其中定义的资源。有关连接器的简介,请参见使用Amazon SAM连接器管理资源权限

有关生成的Amazon CloudFormation资源的更多信息,请参阅Amazon CloudFormation指定时生成的资源AWS::Serverless::Connector

要提供有关连接器的反馈,请在serverless-application-model Amazon GitHub 存储库中提交新问题

注意

当您部署到时Amazon CloudFormation,Amazon SAM会将您的Amazon SAM资源转换为Amazon CloudFormation资源。有关更多信息,请参阅生成的Amazon CloudFormation资源

语法

要在Amazon Serverless Application Model (Amazon SAM) 模板中声明此实体,请使用以下其中其中一种语法。

注意

我们建议在大多数用例中使用嵌入式连接器语法。嵌入到源资源中可以使其随着时间的推移更易于阅读和维护。当您需要引用不在同一Amazon SAM模板中的源资源(例如嵌套堆栈中的资源或共享资源)时,请使用AWS::Serverless::Connector语法。

嵌入式连接器

<source-resource-logical-id>: Connectors: <connector-logical-id: Properties: Destination: ResourceReference | List of ResourceReference Permissions: List SourceReference: SourceReference

AWS::Serverless::Connector

Type: AWS::Serverless::Connector Properties: Destination: ResourceReference | List of ResourceReference Permissions: List Source: ResourceReference

属性

Destination

目标资源。

类型:ResourceReference| 清单 ResourceReference

必需:是

Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。

Permissions

允许源资源对目标资源执行的权限类型。

Read包括允许从资源读取数据的Amazon Identity and Access Management (IAM) 操作。

Write包括允许启动数据并将数据写入资源的 IAM 操作。

有效值ReadWrite

类型:清单

必需:是

Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。

Source

源资源。使用AWS::Serverless::Connector语法时为必填项。

类型ResourceReference

必需:条件

Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。

SourceReference

源资源。

注意

在为源资源定义其他属性时,与嵌入式连接器语法一起使用。

类型SourceReference

必需:否

Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。

示例

嵌入式连接器

以下示例使用嵌入式连接器定义Amazon Lambda函数与 Amazon DynamoDB 表之间的Write数据连接:

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

以下示例使用嵌入式连接器来定义ReadWrite权限:

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

以下示例使用嵌入式连接器定义具有以下属性的源资源Id

Transform: AWS::Serverless-2016-10-31 Transform: AWS::Serverless-2016-10-31 ... Resources: MyApi: Type: AWS::Serverless::Api Connectors: ApitoLambdaConn: Properties: SourceReference: Qualifier: Prod/GET/foobar Destination: Id: MyTable Permissions: - Read - Write MyTable: Type: AWS::DynamoDB::Table ...

AWS::Serverless::Connector

以下示例使用AWS::Serverless::Connector资源来读取和写入 Amazon DynamoDB 表的Amazon Lambda函数:

MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyFunction Destination: Id: MyTable Permissions: - Read - Write

以下示例使用AWS::Serverless::Connector资源让 Lambda 函数写入 Amazon SNS 主题,这两个资源位于同一个模板中:

MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyLambda Destination: Id: MySNSTopic Permissions: - Write

以下示例使用AWS::Serverless::Connector资源让 Amazon SNS 主题写入 Lambda 函数,然后该函数写入 Amazon DynamoDB 表,所有资源都位于同一个模板中:

Transform: AWS::Serverless-2016-10-31 Resources: Topic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: !GetAtt Function.Arn Protocol: lambda Function: Type: AWS::Serverless::Function Properties: Runtime: nodejs16.x Handler: index.handler InlineCode: | const AWS = require('aws-sdk'); exports.handler = async (event, context) => { const docClient = new AWS.DynamoDB.DocumentClient(); await docClient.put({ TableName: process.env.TABLE_NAME, Item: { id: context.awsRequestId, event: JSON.stringify(event) } }).promise(); }; Environment: Variables: TABLE_NAME: !Ref Table Table: Type: AWS::Serverless::SimpleTable TopicToFunctionConnector: Type: AWS::Serverless::Connector Properties: Source: Id: Topic Destination: Id: Function Permissions: - Write FunctionToTableConnector: Type: AWS::Serverless::Connector Properties: Source: Id: Function Destination: Id: Table Permissions: - Write

以下是上面示例中转换后的Amazon CloudFormation模板:

"FunctionToTableConnectorPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Metadata": { "aws:sam:connectors": { "FunctionToTableConnector": { "Source": { "Type": "AWS::Lambda::Function" }, "Destination": { "Type": "AWS::DynamoDB::Table" } } } }, "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:PartiQLDelete", "dynamodb:PartiQLInsert", "dynamodb:PartiQLUpdate" ], "Resource": [ { "Fn::GetAtt": [ "MyTable", "Arn" ] }, { "Fn::Sub": [ "${DestinationArn}/index/*", { "DestinationArn": { "Fn::GetAtt": [ "MyTable", "Arn" ] } } ] } ] } ] }, "Roles": [ { "Ref": "MyFunctionRole" } ] } }