AWS::Serverless::Connector - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS::Serverless::Connector

두 리소스 간의 권한을 구성합니다. 커넥터에 대한 소개는 AWS SAM 커넥터를 사용한 리소스 권한 관리 섹션을 참조하세요.

생성된 AWS CloudFormation 리소스에 대한 자세한 내용은 AWS CloudFormation을 지정한 경우 생성되는 AWS::Serverless::Connector 리소스 섹션을 참조하세요.

커넥터에 대한 피드백을 제공하려면 serverless-application-model AWS GitHub 리포지토리에 새 문제를 제출하십시오.

참고

AWS CloudFormation에 배포하면 AWS SAM는 귀하의 AWS SAM 리소스를 AWS CloudFormation 리소스로 변환됩니다. 자세한 내용은 생성된 AWS CloudFormation 리소스 섹션을 참조하십시오.

명령문

귀하의 AWS Serverless Application Model(AWS SAM) 템플릿에서 이 객체를 선언하려면 다음 구문을 사용합니다.

참고

대부분의 사용 사례에서는 내장 커넥터 구문을 사용하는 것이 좋습니다. 소스 리소스에 내장되어 있으면 시간이 지나도 읽고 유지 관리하기가 더 쉬워집니다. 중첩된 스택의 리소스 또는 공유 리소스와 같이 동일한 AWS 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

필수 항목 여부: 예

AWS CloudFormation호환성: 이 속성은 AWS SAM에 고유하며 AWS CloudFormation 동등한 속성이 없습니다.

Permissions

원본 리소스가 대상 리소스에서 수행할 수 있는 권한 유형입니다.

Read은 리소스에서 데이터를 읽을 수 있는 AWS Identity and Access Management(IAM) 작업을 포함하고 있습니다.

Write은 리소스에 데이터를 시작하고 쓸 수 있는 IAM 작업을 포함합니다.

유효한 값: Read 또는 Write

유형: 목록

필수 항목 여부: 예

AWS CloudFormation호환성: 이 속성은 AWS SAM에 고유하며 AWS CloudFormation 동등한 속성이 없습니다.

Source

소스 리소스. AWS::Serverless::Connector 명령문을 사용할 때 필요합니다.

유형: ResourceReference

필수 항목 여부: 조건부

AWS CloudFormation호환성: 이 속성은 AWS SAM에 고유하며 AWS CloudFormation 동등한 속성이 없습니다.

SourceReference

소스 리소스.

참고

소스 리소스의 추가 속성을 정의할 때 내장된 커넥터 명령문과 함께 사용합니다.

유형: SourceReference

필수 항목 여부: 아니요

AWS CloudFormation호환성: 이 속성은 AWS SAM에 고유하며 AWS CloudFormation 동등한 속성이 없습니다.

예제

내장 커넥터

다음 예제에서는 내장 커넥터를 사용하여 AWS 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 ...

다음 예제에서는 내장 커넥터를 사용하여 Read을 정의하고 권한을 Write합니다.

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 테이블에서 AWS 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

다음은 위 예제에서 변환된 AWS 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" } ] } }