

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Configura as permissões entre dois recursos. Para obter uma introdução aos conectores, consulte [Gerenciando permissões de recursos com AWS SAM conectores](managing-permissions-connectors.md).

Para obter mais informações sobre AWS CloudFormation os recursos gerados, consulte[CloudFormation recursos gerados quando você especifica AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).

Para fornecer feedback sobre conectores, [envie um novo problema](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29) no *serverless-application-model AWS GitHub repositório*.

**nota**  
Quando você implanta AWS CloudFormation, AWS SAM transforma seus AWS SAM recursos em CloudFormation recursos. Para obter mais informações, consulte [CloudFormation Recursos gerados para AWS SAM](sam-specification-generated-resources.md).

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

Para declarar essa entidade em seu modelo AWS Serverless Application Model (AWS SAM), use qualquer uma das sintaxes a seguir.

**nota**  
Recomendamos usar a sintaxe de conectores incorporados para a maioria dos casos de uso. Estar incorporado ao recurso de origem facilita a leitura e a manutenção ao longo do tempo. Quando você precisar referenciar um recurso de origem que não esteja no mesmo AWS SAM modelo, como um recurso em uma pilha aninhada ou um recurso compartilhado, use a `AWS::Serverless::Connector` sintaxe.

### Conectores embutidos
<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}}
```

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

 `Destination`   <a name="sam-connector-destination"></a>
O recurso de destino.  
*Tipo*: [ResourceReference](sam-property-connector-resourcereference.md)\| Lista de [ResourceReference](sam-property-connector-resourcereference.md)  
*Obrigatório*: sim  
*CloudFormation compatibilidade*: essa propriedade é exclusiva AWS SAM e não tem CloudFormation equivalente.

 `Permissions`   <a name="sam-connector-permissions"></a>
O tipo de permissão que o recurso de origem tem permissão para executar no recurso de destino.  
`Read`inclui ações AWS Identity and Access Management (IAM) que permitem a leitura de dados do recurso.  
`Write` inclui ações do IAM que permitem iniciar e escrever dados em um recurso.  
*Valores válidos*: `Read` ou `Write`  
*Tipo*: lista  
*Obrigatório*: Sim  
*CloudFormation compatibilidade*: essa propriedade é exclusiva AWS SAM e não tem CloudFormation equivalente.

 `Source`   <a name="sam-connector-source"></a>
O recurso de origem. Obrigatório ao usar a sintaxe `AWS::Serverless::Connector`.  
*Digite*: [ResourceReference](sam-property-connector-resourcereference.md)  
*Obrigatório*: Condicional  
*CloudFormation compatibilidade*: essa propriedade é exclusiva AWS SAM e não tem CloudFormation equivalente.

 `SourceReference`   <a name="sam-connector-sourcereference"></a>
O recurso de origem.  
Use com a sintaxe de conectores incorporados ao definir propriedades adicionais para o recurso de origem.
*Digite*: [SourceReference](sam-property-connector-sourcereference.md)  
*Obrigatório*: não  
*CloudFormation compatibilidade*: essa propriedade é exclusiva AWS SAM e não tem CloudFormation equivalente.

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

### Conectores embutidos
<a name="sam-resource-connector-examples-embedded"></a>

O exemplo a seguir usa conectores incorporados para definir uma conexão de dados `Write` entre uma função AWS Lambda e a tabela do 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
    ...
```

O exemplo a seguir usa conectores incorporados para definir permissões `Read` e `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
    ...
```

O exemplo a seguir usa conectores incorporados para definir um recurso de origem com uma propriedade diferente de `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>

O exemplo a seguir usa o [AWS::Serverless::Connector](#sam-resource-connector) recurso para que uma AWS Lambda função seja lida e gravada em uma tabela do Amazon DynamoDB:

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

O exemplo a seguir usa o recurso [AWS::Serverless::Connector](#sam-resource-connector) para que uma função do Lambda seja escrita em um tópico do Amazon SNS, com os dois recursos no mesmo modelo:

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

O exemplo a seguir usa o [AWS::Serverless::Connector](#sam-resource-connector) recurso para que um tópico do Amazon SNS grave em uma função do Lambda, que então grava em uma tabela do Amazon DynamoDB, com todos os recursos no mesmo modelo:

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

Veja a seguir o AWS CloudFormation modelo transformado do exemplo acima:

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