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

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

ResourceReference

AWS::Serverless::Connector 资源类型使用的资源的引用。

注意

对于同一模板中的资源,请提供 Id。对于不在同一模板中的资源,请使用其他属性的组合。有关更多信息,请参阅 Amazon SAM 连接器参考

语法

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

YAML

Arn: String Id: String Name: String Qualifier: String QueueUrl: String ResourceId: String RoleName: String Type: String

属性

Arn

资源的 ARN。

类型:字符串

必需:条件

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

Id

同一模板中资源的逻辑 ID

注意

指定后Id,如果连接器生成 Amazon Identity and Access Management (IAM) 策略,则将从资源Id中推断出与这些策略关联的 IAM 角色。如果 Id 未指定,则为连接器提供资源 RoleName,以便将生成的 IAM 策略附加到 IAM 角色。

类型:字符串

必需:条件

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

Name

资源的名称。

类型:字符串

必需:条件

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

Qualifier

缩小其范围的资源限定符。Qualifier 替换资源约束 ARN 末尾的 * 值。有关示例,请参阅API Gateway 调用 Lambda 函数

注意

限定符定义因资源类型而异。有关受支持的源资源和目的地资源类型的列表,请参阅 Amazon SAM 连接器参考

类型:字符串

必需:条件

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

QueueUrl

Amazon SQS 队列 URL。此属性仅适用于 Amazon SQS 资源。

类型:字符串

必需:条件

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

ResourceId

资源的 ID。例如,API Gateway API ID。

类型:字符串

必需:条件

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

RoleName

与资源关联的角色名称。

注意

指定 Id 后,如果连接器生成 IAM 策略,则将从资源 Id 中推断出与这些策略关联的 IAM 角色。如果 Id 未指定,则为连接器提供资源 RoleName,以便将生成的 IAM 策略附加到 IAM 角色。

类型:字符串

必需:条件

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

Type

资源的 Amazon CloudFormation 类型。有关更多信息,请参阅Amazon 资源和属性类型参考

类型:字符串

必需:条件

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

示例

API Gateway 调用 Lambda 函数

以下示例使用该AWS::Serverless::Connector资源允许 Amazon API Gateway 调用 Amazon Lambda 函数。

YAML

Transform: AWS::Serverless-2016-10-31 Resources: MyRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Action: sts:AssumeRole Principal: Service: lambda.amazonaws.com ManagedPolicyArns: - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole MyFunction: Type: AWS::Lambda::Function Properties: Role: !GetAtt MyRole.Arn Runtime: nodejs16.x Handler: index.handler Code: ZipFile: | exports.handler = async (event) => { return { statusCode: 200, body: JSON.stringify({ "message": "It works!" }), }; }; MyApi: Type: AWS::ApiGatewayV2::Api Properties: Name: MyApi ProtocolType: HTTP MyStage: Type: AWS::ApiGatewayV2::Stage Properties: ApiId: !Ref MyApi StageName: prod AutoDeploy: True MyIntegration: Type: AWS::ApiGatewayV2::Integration Properties: ApiId: !Ref MyApi IntegrationType: AWS_PROXY IntegrationUri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFunction.Arn}/invocations IntegrationMethod: POST PayloadFormatVersion: "2.0" MyRoute: Type: AWS::ApiGatewayV2::Route Properties: ApiId: !Ref MyApi RouteKey: GET /hello Target: !Sub integrations/${MyIntegration} MyConnector: Type: AWS::Serverless::Connector Properties: Source: # Use 'Id' when resource is in the same template Type: AWS::ApiGatewayV2::Api ResourceId: !Ref MyApi Qualifier: prod/GET/hello # Or "*" to allow all routes Destination: # Use 'Id' when resource is in the same template Type: AWS::Lambda::Function Arn: !GetAtt MyFunction.Arn Permissions: - Write Outputs: Endpoint: Value: !Sub https://${MyApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/prod/hello