

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Configura permisos entre dos recursos. Para obtener una introducción a los conectores, consulta [Administrar los permisos de recursos con AWS SAM conectores](managing-permissions-connectors.md).

Para obtener más información sobre AWS CloudFormation los recursos generados, consulte[CloudFormation recursos generados cuando se especifica AWS::Serverless::Connector](sam-specification-generated-resources-connector.md).

Para enviar comentarios sobre los conectores, [envíe un nuevo número](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29) al *serverless-application-model AWS GitHub repositorio*.

**nota**  
Cuando lo despliegas AWS CloudFormation, AWS SAM transforma tus AWS SAM recursos en CloudFormation recursos. Para obtener más información, consulte [CloudFormation Recursos generados para AWS SAM](sam-specification-generated-resources.md).

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa cualquiera de las siguientes sintaxis.

**nota**  
Recomendamos utilizar la sintaxis de los conectores integrados en la mayoría de los casos de uso. Al estar integrado en el recurso de origen, es más fácil de leer y mantener a lo largo del tiempo. Cuando necesites hacer referencia a un recurso fuente que no esté dentro de la misma AWS SAM plantilla, como un recurso de una pila anidada o un recurso compartido, usa la `AWS::Serverless::Connector` sintaxis.

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

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

 `Destination`   <a name="sam-connector-destination"></a>
El recurso de destino.  
*Tipo*: [ResourceReference](sam-property-connector-resourcereference.md)\$1 Lista de [ResourceReference](sam-property-connector-resourcereference.md)  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Permissions`   <a name="sam-connector-permissions"></a>
El tipo de permiso que el recurso de origen puede realizar en el recurso de destino.  
`Read`incluye acciones AWS Identity and Access Management (IAM) que permiten leer los datos del recurso.  
`Write` incluye acciones de IAM que permiten iniciar y escribir datos en un recurso.  
*Valores válidos*: `Read` o `Write`  
*Tipo*: lista  
*Obligatorio*: sí  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

 `Source`   <a name="sam-connector-source"></a>
El recurso fuente. Obligatorio cuando se utiliza la sintaxis `AWS::Serverless::Connector`.  
*Tipo:* [ResourceReference](sam-property-connector-resourcereference.md)  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

 `SourceReference`   <a name="sam-connector-sourcereference"></a>
El recurso fuente.  
Utilícelo con la sintaxis de los conectores integrados al definir propiedades adicionales para el recurso de origen.
*Tipo:* [SourceReference](sam-property-connector-sourcereference.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

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

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

En el siguiente ejemplo, se utilizan conectores integrados para definir una conexión de datos `Write` entre una función de AWS Lambda y una tabla de 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
    ...
```

En el siguiente ejemplo, se utilizan conectores integrados para definir los `Read` y los permisos `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
    ...
```

En el siguiente ejemplo, se utilizan conectores integrados para definir un recurso fuente con una propiedad distinta 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>

En el siguiente ejemplo, se utiliza el [AWS::Serverless::Connector](#sam-resource-connector) recurso para que una AWS Lambda función lea y escriba en una tabla de Amazon DynamoDB:

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

En el siguiente ejemplo, se utiliza el recurso [AWS::Serverless::Connector](#sam-resource-connector) para que una función de Lambda escriba en un tema de Amazon SNS, con ambos recursos en la misma plantilla:

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

En el siguiente ejemplo, se utiliza el recurso [AWS::Serverless::Connector](#sam-resource-connector) para que un tema de Amazon SNS se escriba en una función de Lambda y, a continuación, en una tabla de Amazon DynamoDB, con todos los recursos en la misma plantilla:

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

La siguiente es la AWS CloudFormation plantilla transformada del ejemplo anterior:

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

Referencia a un recurso que utiliza el tipo de recurso [AWS::Serverless::Connector](sam-resource-connector.md).

**nota**  
Para los recursos de la misma plantilla, proporciona la `Id`. Para recursos que no estén dentro de la misma plantilla, utilice una combinación de otras propiedades. Para obtener más información, consulta [AWS SAM referencia de conector](reference-sam-connector.md).

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

 `Arn`   <a name="sam-connector-resourcereference-arn"></a>
El ARN de un recurso .  
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Id`   <a name="sam-connector-resourcereference-id"></a>
El [ID lógico](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html) de un recurso de la misma plantilla.  
Si `Id` se especifica, si el conector genera políticas AWS Identity and Access Management (IAM), la función de IAM asociada a esas políticas se deducirá del recurso. `Id` Cuando `Id` no se especifica, proporciona `RoleName` del recurso para que los conectores adjunten las políticas de IAM generadas a un rol de IAM.
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un equivalente. CloudFormation 

 `Name`   <a name="sam-connector-resourcereference-name"></a>
El nombre de un recurso .  
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Qualifier`   <a name="sam-connector-resourcereference-qualifier"></a>
Calificador de un recurso que reduce su alcance. `Qualifier` reemplaza el valor `*` al final de un ARN de restricción de recursos. Para ver un ejemplo, consulta [API Gateway que invoca una función de Lambda](#sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function).  
La definición del calificador varía según el tipo de recurso. Para ver una lista los puntos de enlace de origen y destino admitidos, consulta [AWS SAM referencia de conector](reference-sam-connector.md).
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `QueueUrl`   <a name="sam-connector-resourcereference-queueurl"></a>
La URL de la cola de Amazon SQS. Esta propiedad solo se aplica a los recursos de Amazon SQS.  
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `ResourceId`   <a name="sam-connector-resourcereference-resourceid"></a>
El ID de un recurso. Por ejemplo, el ID de API de la API Gateway.  
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `RoleName`   <a name="sam-connector-resourcereference-rolename"></a>
El nombre del rol asociado a un recurso.  
Cuando se especifica `Id`, si el conector genera políticas de IAM, el rol de IAM asociado a esas políticas se deducirá del recurso de `Id`. Cuando `Id` no se especifica, proporciona `RoleName` del recurso para que los conectores adjunten las políticas de IAM generadas a un rol de IAM.
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Type`   <a name="sam-connector-resourcereference-type"></a>
El CloudFormation tipo de recurso. Para obtener más información, consulta la [Referencia de tipos de recursos y propiedades de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html).  
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

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

### API Gateway que invoca una función de Lambda
<a name="sam-property-connector-resourcereference--examples--api-gateway-invoking-a-lambda-function"></a>

En el siguiente ejemplo, se utiliza el [AWS::Serverless::Connector](sam-resource-connector.md) recurso para permitir que Amazon API Gateway invoque una AWS Lambda función.

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

Referencia a un recurso de origen que utiliza el tipo de recurso [AWS::Serverless::Connector](sam-resource-connector.md).

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

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

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

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

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

 `Qualifier`   <a name="sam-connector-sourcereference-qualifier"></a>
Calificador de un recurso que reduce su alcance. `Qualifier` reemplaza el valor `*` al final de un ARN de restricción de recursos.  
La definición del calificador varía según el tipo de recurso. Para ver una lista los puntos de enlace de origen y destino admitidos, consulta [AWS SAM referencia de conector](reference-sam-connector.md).
*Tipo:* cadena  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

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

**En el siguiente ejemplo, se utilizan conectores integrados para definir un recurso fuente con una propiedad distinta de `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
    ...
```