

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Configure les autorisations entre deux ressources. Pour obtenir une présentation des connecteurs, veuillez consulter [Gestion des autorisations relatives aux ressources à l'aide de AWS SAM connecteurs](managing-permissions-connectors.md).

Pour plus d'informations sur les AWS CloudFormation ressources générées, consultez[CloudFormation ressources générées lorsque vous spécifiez AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).

Pour fournir des commentaires sur les connecteurs, [soumettez un nouveau problème](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29) dans le *serverless-application-model AWS GitHub référentiel*.

**Note**  
Lorsque vous déployez vers AWS CloudFormation, vos AWS SAM ressources sont AWS SAM transformées en CloudFormation ressources. Pour de plus amples informations, veuillez consulter [CloudFormation Ressources générées pour AWS SAM](sam-specification-generated-resources.md).

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez l'une des syntaxes suivantes.

**Note**  
Nous vous recommandons d'utiliser la syntaxe des connecteurs intégrés dans la plupart des cas d'utilisation. Le fait d'être intégré à la ressource source facilite sa lecture et sa maintenance au fil du temps. Lorsque vous devez référencer une ressource source qui ne figure pas dans le même AWS SAM modèle, telle qu'une ressource dans une pile imbriquée ou une ressource partagée, utilisez la `AWS::Serverless::Connector` syntaxe.

### Connecteurs intégrés
<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
```

## Propriétés
<a name="sam-resource-connector-properties"></a>

 `Destination`   <a name="sam-connector-destination"></a>
Ressource de destination.  
*Type* : [ResourceReference](sam-property-connector-resourcereference.md)\$1 Liste des [ResourceReference](sam-property-connector-resourcereference.md)  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Permissions`   <a name="sam-connector-permissions"></a>
Type d'autorisation que la ressource source est autorisée à exécuter sur la ressource de destination.  
`Read`inclut des actions Gestion des identités et des accès AWS (IAM) qui permettent de lire les données de la ressource.  
`Write` inclut des actions IAM qui permettent de lancer et d'écrire des données dans une ressource.  
*Valeurs valides* : `Read` ou `Write`  
*Type* : liste  
*Obligatoire* : oui  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Source`   <a name="sam-connector-source"></a>
Ressource source. Obligatoire lors de l'utilisation de la syntaxe `AWS::Serverless::Connector`.  
*Type :* [ResourceReference](sam-property-connector-resourcereference.md)  
*Obligatoire* : Conditionnelle  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `SourceReference`   <a name="sam-connector-sourcereference"></a>
Ressource source.  
À utiliser avec la syntaxe des connecteurs intégrés lors de la définition de propriétés supplémentaires pour la ressource source.
*Type :* [SourceReference](sam-property-connector-sourcereference.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

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

### Connecteurs intégrés
<a name="sam-resource-connector-examples-embedded"></a>

L'exemple suivant utilise des connecteurs intégrés pour définir une connexion de données `Write` entre une fonction AWS Lambda et un tableau 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
    ...
```

L'exemple suivant utilise des connecteurs intégrés pour définir les autorisations `Read` et `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
    ...
```

L'exemple suivant utilise des connecteurs intégrés pour définir une ressource source avec une propriété autre que la propriété `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>

L'exemple suivant utilise la [AWS::Serverless::Connector](#sam-resource-connector) ressource pour lire et écrire une AWS Lambda fonction dans une table Amazon DynamoDB :

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

L'exemple suivant utilise la ressource [AWS::Serverless::Connector](#sam-resource-connector) pour qu'une fonction Lambda écrive dans une rubrique Amazon SNS, avec les deux ressources dans le même modèle :

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

L'exemple suivant utilise la ressource [AWS::Serverless::Connector](#sam-resource-connector) pour qu'une rubrique Amazon SNS écrive dans une fonction Lambda, qui écrit à son tour dans un tableau Amazon DynamoDB, avec toutes les ressources dans le même modèle  :

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

Le AWS CloudFormation modèle transformé de l'exemple ci-dessus est le suivant :

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