

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

# AWS::Serverless::Connector
<a name="sam-resource-connector"></a>

두 리소스 간의 권한을 구성합니다. 커넥터에 대한 소개는 [AWS SAM 커넥터를 사용하여 리소스 권한 관리](managing-permissions-connectors.md) 섹션을 참조하세요.

생성된 AWS CloudFormation 리소스에 대한 자세한 내용은 섹션을 참조하세요[CloudFormation 지정할 때 생성된 리소스 AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).

커넥터에 대한 피드백을 제공하려면 *serverless-application-model AWS GitHub리포지토리*에서 [새 문제를 제출합니다](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29).

**참고**  
에 배포하면가 AWS SAM 리소스를 CloudFormation 리소스로 AWS CloudFormation AWS SAM 변환합니다. 자세한 내용은 [에 대해 생성된 CloudFormation 리소스 AWS SAM](sam-specification-generated-resources.md) 단원을 참조하십시오.

## 구문
<a name="sam-resource-connector-syntax"></a>

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

**참고**  
대부분의 사용 사례에서는 내장 커넥터 구문을 사용하는 것이 좋습니다. 소스 리소스에 내장되어 있으면 시간이 지나도 읽고 유지 관리하기가 더 쉬워집니다. 중첩 스택의 리소스 또는 공유 리소스와 같이 동일한 AWS SAM 템플릿 내에 있지 않은 소스 리소스를 참조해야 하는 경우 `AWS::Serverless::Connector` 구문을 사용합니다.

### 내장 커넥터
<a name="sam-resource-connector-syntax-embedded"></a>

```
<source-resource-logical-id>:
  Connectors:
    <connector-logical-id:
      Properties:
        [Destination](#sam-connector-destination): ResourceReference | List of ResourceReference
        [Permissions](#sam-connector-permissions): List
        [SourceReference](#sam-connector-sourcereference): SourceReference
```

### AWS::Serverless::Connector
<a name="sam-resource-connector-syntax-connector"></a>

```
Type: AWS::Serverless::Connector
Properties:
  [Destination](#sam-connector-destination): ResourceReference | List of ResourceReference
  [Permissions](#sam-connector-permissions): List
  [Source](#sam-connector-source): ResourceReference
```

## 속성
<a name="sam-resource-connector-properties"></a>

 `Destination`   <a name="sam-connector-destination"></a>
대상 리소스.  
*유형*: [리소스 참조](sam-property-connector-resourcereference.md) \$1 [리소스 참조 ](sam-property-connector-resourcereference.md)목록  
*필수 항목 여부:* 예  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Permissions`   <a name="sam-connector-permissions"></a>
원본 리소스가 대상 리소스에서 수행할 수 있는 권한 유형입니다.  
`Read` 에는 리소스에서 데이터를 읽을 수 있는 AWS Identity and Access Management (IAM) 작업이 포함되어 있습니다.  
`Write`은 리소스에 데이터를 시작하고 쓸 수 있는 IAM 작업을 포함합니다.  
*유효한 값*: `Read` 또는 `Write`  
*유형*: 목록  
*필수 항목 여부*: 예  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Source`   <a name="sam-connector-source"></a>
소스 리소스. `AWS::Serverless::Connector` 명령문을 사용할 때 필요합니다.  
*유형*: [리SourceReference](sam-property-connector-resourcereference.md)  
*필수 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `SourceReference`   <a name="sam-connector-sourcereference"></a>
소스 리소스.  
소스 리소스의 추가 속성을 정의할 때 내장된 커넥터 명령문과 함께 사용합니다.
*유형*: [SourceReference](sam-property-connector-sourcereference.md)  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

## 예제
<a name="sam-resource-connector-examples"></a>

### 내장 커넥터
<a name="sam-resource-connector-examples-embedded"></a>

다음 예제에서는 내장 커넥터를 사용하여 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
<a name="sam-resource-connector--examples-connector"></a>

다음 예제에서는 [AWS::Serverless::Connector](#sam-resource-connector) 리소스를 사용하여 Amazon DynamoDB 테이블에서 AWS Lambda 함수를 읽고 씁니다.

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

다음 예제에서는 [AWS::Serverless::Connector](#sam-resource-connector) 리소스를 사용하여 Lambda 함수가 Amazon SNS 주제에 쓰도록 하고 두 리소스 모두 동일한 템플릿에서 이를 실행합니다.

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

다음 예제에서는 [AWS::Serverless::Connector](#sam-resource-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"
      }
    ]
  }
}
```

# ResourceReference
<a name="sam-property-connector-resourcereference"></a>

[AWS::Serverless::Connector](sam-resource-connector.md) 리소스 유형이 사용하는 리소스에 대한 참조.

**참고**  
동일한 템플릿에 있는 리소스의 경우 `Id`를 제공하십시오. 동일한 템플릿에 있지 않은 리소스의 경우 다른 속성을 조합하여 사용합니다. 자세한 내용은을 참조하십시오[AWS SAM 커넥터 참조](reference-sam-connector.md)

## 구문
<a name="sam-property-connector-resourcereference-syntax"></a>

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

### YAML
<a name="sam-property-connector-resourcereference-syntax.yaml"></a>

```
  [Arn](#sam-connector-resourcereference-arn): String
  [Id](#sam-connector-resourcereference-id): String
  [Name](#sam-connector-resourcereference-name): String
  [Qualifier](#sam-connector-resourcereference-qualifier): String
  [QueueUrl](#sam-connector-resourcereference-queueurl): String
  [ResourceId](#sam-connector-resourcereference-resourceid): String
  [RoleName](#sam-connector-resourcereference-rolename): String
  [Type](#sam-connector-resourcereference-type): String
```

## 속성
<a name="sam-property-connector-resourcereference-properties"></a>

 `Arn`   <a name="sam-connector-resourcereference-arn"></a>
리소스의 ARN.  
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Id`   <a name="sam-connector-resourcereference-id"></a>
동일한 템플릿에 있는 리소스의 [논리적 ID](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html).  
`Id`를 지정하면 커넥터가 AWS Identity and Access Management (IAM) 정책을 생성하는 경우 해당 정책과 연결된 IAM 역할은 리소스에서 추론됩니다`Id`. `Id`이 지정되지 않은 경우, 커넥터가 생성된 IAM 정책을 IAM 역할에 연결할 수 있도록 리소스의 `RoleName`를 제공하십시오.
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Name`   <a name="sam-connector-resourcereference-name"></a>
리소스의 이름.  
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Qualifier`   <a name="sam-connector-resourcereference-qualifier"></a>
범위를 좁히는 리소스의 한정자입니다. `Qualifier`는 리소스 제약 조건 ARN의 끝에 있는 `*` 값을 대체합니다. 예시는 [API Gateway가 Lambda 함수를 호출](#sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function)에서 확인하십시오.  
한정자 정의는 리소스 유형별로 다릅니다. 지원되는 소스 및 대상 리소스 유형 목록은 [AWS SAM 커넥터 참조](reference-sam-connector.md) 섹션을 참조하세요.
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `QueueUrl`   <a name="sam-connector-resourcereference-queueurl"></a>
Amazon SQS 대기열의 URL. 이 속성은 Amazon SQS 리소스에만 적용됩니다.  
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `ResourceId`   <a name="sam-connector-resourcereference-resourceid"></a>
리소스의 ID. 에를 들면, API 게이트웨이 API ID.  
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `RoleName`   <a name="sam-connector-resourcereference-rolename"></a>
리소스와 관련된 역할 이름.  
`Id`이 지정된 경우, 커넥터가 IAM 정책을 생성하면 해당 정책에 연결된 IAM 역할이 리소스 `Id`에서 유추됩니다. `Id`이 지정되지 않은 경우, 커넥터가 생성된 IAM 정책을 IAM 역할에 연결할 수 있도록 리소스의 `RoleName`를 제공하십시오.
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `Type`   <a name="sam-connector-resourcereference-type"></a>
리소스의 CloudFormation 유형입니다. 자세한 내용은 [AWS 리소스 및 속성 유형 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)를 참조하세요.  
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

## 예제
<a name="sam-property-connector-resourcereference--examples"></a>

### API Gateway가 Lambda 함수를 호출
<a name="sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function"></a>

다음 예제에서는 [AWS::Serverless::Connector](sam-resource-connector.md) 리소스를 사용하여 Amazon API Gateway가 AWS Lambda 함수를 호출하도록 허용합니다.

#### YAML
<a name="sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function--yaml"></a>

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

# SourceReference
<a name="sam-property-connector-sourcereference"></a>

[AWS::Serverless::Connector](sam-resource-connector.md) 리소스 유형이 사용하는 소스 리소스에 대한 참조입니다.

## 구문
<a name="sam-property-connector-sourcereference-syntax"></a>

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

### YAML
<a name="sam-property-connector-sourcereference-syntax.yaml"></a>

```
[Qualifier](#sam-connector-sourcereference-qualifier): String
```

## 속성
<a name="sam-property-connector-sourcereference-properties"></a>

 `Qualifier`   <a name="sam-connector-sourcereference-qualifier"></a>
범위를 좁히는 리소스의 한정자입니다. `Qualifier`는 리소스 제약 조건 ARN의 끝에 있는 `*` 값을 대체합니다.  
한정자 정의는 리소스 유형별로 다릅니다. 지원되는 소스 및 대상 리소스 유형 목록은 [AWS SAM 커넥터 참조](reference-sam-connector.md) 섹션을 참조하세요.
*유형*: 문자열  
*필수 항목 여부*: 조건부  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 동등한 속성이 CloudFormation 없습니다.

## 예제
<a name="sam-property-connector-sourcereference--examples"></a>

**다음 예제에서는 내장된 커넥터를 사용하여 `Id`이 아닌 속성으로 소스 리소스를 정의합니다.**

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