

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Mengkonfigurasi izin antara dua sumber daya. Untuk pengenalan konektor, lihat[Mengelola izin sumber daya dengan konektor AWS SAM](managing-permissions-connectors.md).

Untuk informasi selengkapnya tentang AWS CloudFormation sumber daya yang dihasilkan, lihat[CloudFormation sumber daya yang dihasilkan saat Anda menentukan AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).

Untuk memberikan umpan balik tentang konektor, [kirimkan masalah baru](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29) di *serverless-application-model AWS GitHub repositori*.

**catatan**  
Ketika Anda menyebarkan ke AWS CloudFormation, AWS SAM mengubah AWS SAM sumber daya Anda menjadi CloudFormation sumber daya. Untuk informasi selengkapnya, lihat [CloudFormation Sumber daya yang dihasilkan untuk AWS SAM](sam-specification-generated-resources.md).

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

Untuk mendeklarasikan entitas ini dalam template AWS Serverless Application Model (AWS SAM) Anda, gunakan salah satu sintaks berikut.

**catatan**  
Sebaiknya gunakan sintaks konektor tertanam untuk sebagian besar kasus penggunaan. Tertanam dalam sumber daya membuatnya lebih mudah untuk membaca dan memelihara dari waktu ke waktu. Bila Anda perlu mereferensikan sumber daya sumber yang tidak berada dalam AWS SAM template yang sama, seperti sumber daya dalam tumpukan bersarang atau sumber daya bersama, gunakan `AWS::Serverless::Connector` sintaks.

### Konektor tertanam
<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
```

## Sifat-sifat
<a name="sam-resource-connector-properties"></a>

 `Destination`   <a name="sam-connector-destination"></a>
Sumber daya tujuan.  
*Jenis*: [ResourceReference](sam-property-connector-resourcereference.md)\$1 Daftar [ResourceReference](sam-property-connector-resourcereference.md)  
*Wajib*: Ya  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Permissions`   <a name="sam-connector-permissions"></a>
Jenis izin yang diizinkan untuk dilakukan sumber daya sumber daya pada sumber daya tujuan.  
`Read`termasuk tindakan AWS Identity and Access Management (IAM) yang memungkinkan membaca data dari sumber daya.  
`Write`termasuk tindakan IAM yang memungkinkan memulai dan menulis data ke sumber daya.  
*Nilai yang valid*: `Read` atau `Write`  
*Tipe*: Daftar  
*Wajib*: Ya  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Source`   <a name="sam-connector-source"></a>
Sumber sumber daya. Diperlukan saat menggunakan `AWS::Serverless::Connector` sintaks.  
*Jenis*: [ResourceReference](sam-property-connector-resourcereference.md)  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `SourceReference`   <a name="sam-connector-sourcereference"></a>
Sumber sumber daya.  
Gunakan dengan sintaks konektor tertanam saat mendefinisikan properti tambahan untuk sumber daya sumber.
*Jenis*: [SourceReference](sam-property-connector-sourcereference.md)  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

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

### Konektor tertanam
<a name="sam-resource-connector-examples-embedded"></a>

Contoh berikut menggunakan konektor tertanam untuk menentukan koneksi `Write` data antara AWS Lambda fungsi dan tabel Amazon DynamoDB:

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

Contoh berikut menggunakan konektor tertanam untuk menentukan `Read` dan `Write` izin:

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

Contoh berikut menggunakan konektor tertanam untuk menentukan sumber daya sumber dengan properti selain`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>

Contoh berikut menggunakan [AWS::Serverless::Connector](#sam-resource-connector) resource untuk memiliki AWS Lambda fungsi read from, dan write ke tabel Amazon DynamoDB:

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

Contoh berikut menggunakan [AWS::Serverless::Connector](#sam-resource-connector) sumber daya agar fungsi Lambda menulis ke topik Amazon SNS, dengan kedua sumber daya dalam templat yang sama:

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

Contoh berikut menggunakan [AWS::Serverless::Connector](#sam-resource-connector) sumber daya agar topik Amazon SNS menulis ke fungsi Lambda, yang kemudian menulis ke tabel Amazon DynamoDB, dengan semua sumber daya dalam templat yang sama:

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

Berikut ini adalah AWS CloudFormation template yang diubah dari contoh di atas:

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

Referensi ke sumber daya yang digunakan tipe [AWS::Serverless::Connector](sam-resource-connector.md) sumber daya.

**catatan**  
Untuk sumber daya dalam templat yang sama, berikan`Id`. Untuk sumber daya yang tidak dalam templat yang sama, gunakan kombinasi properti lainnya. Untuk informasi selengkapnya, lihat [AWS SAM referensi konektor](reference-sam-connector.md).

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

Untuk mendeklarasikan entitas ini dalam template AWS Serverless Application Model (AWS SAM) Anda, gunakan sintaks berikut.

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

## Sifat-sifat
<a name="sam-property-connector-resourcereference-properties"></a>

 `Arn`   <a name="sam-connector-resourcereference-arn"></a>
ARN sumber daya.  
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Id`   <a name="sam-connector-resourcereference-id"></a>
[ID logis](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html) dari sumber daya dalam template yang sama.  
Kapan `Id` ditentukan, jika konektor menghasilkan kebijakan AWS Identity and Access Management (IAM), peran IAM yang terkait dengan kebijakan tersebut akan disimpulkan dari sumber daya. `Id` Bila tidak `Id` ditentukan, sediakan `RoleName` sumber daya untuk konektor untuk melampirkan kebijakan IAM yang dihasilkan ke peran IAM.
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Name`   <a name="sam-connector-resourcereference-name"></a>
Nama sumber daya.  
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Qualifier`   <a name="sam-connector-resourcereference-qualifier"></a>
Kualifikasi untuk sumber daya yang mempersempit ruang lingkupnya. `Qualifier`menggantikan `*` nilai pada akhir kendala sumber daya ARN. Sebagai contoh, lihat [API Gateway menjalankan fungsi Lambda](#sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function).  
Definisi kualifikasi bervariasi per jenis sumber daya. Untuk daftar jenis sumber daya dan tujuan yang didukung, lihat[AWS SAM referensi konektor](reference-sam-connector.md).
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `QueueUrl`   <a name="sam-connector-resourcereference-queueurl"></a>
URL antrian Amazon SQS. Properti ini hanya berlaku untuk sumber daya Amazon SQS.  
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `ResourceId`   <a name="sam-connector-resourcereference-resourceid"></a>
ID sumber daya. Misalnya, API Gateway API ID.  
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `RoleName`   <a name="sam-connector-resourcereference-rolename"></a>
Nama peran yang terkait dengan sumber daya.  
Kapan `Id` ditentukan, jika konektor menghasilkan kebijakan IAM, peran IAM yang terkait dengan kebijakan tersebut akan disimpulkan dari sumber daya. `Id` Bila tidak `Id` ditentukan, sediakan `RoleName` sumber daya untuk konektor untuk melampirkan kebijakan IAM yang dihasilkan ke peran IAM.
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Type`   <a name="sam-connector-resourcereference-type"></a>
 CloudFormation Jenis sumber daya. Untuk informasi lebih lanjut, buka [referensi jenis AWS sumber daya dan properti](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html).  
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

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

### API Gateway menjalankan fungsi Lambda
<a name="sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function"></a>

Contoh berikut menggunakan [AWS::Serverless::Connector](sam-resource-connector.md) sumber daya untuk mengizinkan Amazon API Gateway menjalankan AWS Lambda fungsi.

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

Referensi ke sumber daya sumber daya yang digunakan tipe [AWS::Serverless::Connector](sam-resource-connector.md) sumber daya.

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

Untuk mendeklarasikan entitas ini dalam template AWS Serverless Application Model (AWS SAM) Anda, gunakan sintaks berikut.

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

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

## Sifat-sifat
<a name="sam-property-connector-sourcereference-properties"></a>

 `Qualifier`   <a name="sam-connector-sourcereference-qualifier"></a>
Kualifikasi untuk sumber daya yang mempersempit ruang lingkupnya. `Qualifier`menggantikan `*` nilai pada akhir kendala sumber daya ARN.  
Definisi kualifikasi bervariasi per jenis sumber daya. Untuk daftar jenis sumber daya dan tujuan yang didukung, lihat[AWS SAM referensi konektor](reference-sam-connector.md).
*Tipe*: String  
*Wajib*: Bersyarat  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

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

**Contoh berikut menggunakan konektor tertanam untuk menentukan sumber daya sumber dengan properti selain`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
    ...
```