

# Creación de integraciones de servicio de AWS para las API de HTTP en API Gateway
<a name="http-api-develop-integrations-aws-services"></a>

Puede integrar su API HTTP en los servicios de AWS usando *integraciones de primera clase*. La integración de primera clase conecta una ruta de API HTTP a una API de servicio de AWS. Cuando un cliente invoca una ruta respaldada por una integración de primera clase, API Gateway invoca una API de servicio de AWS por usted. Por ejemplo, puede utilizar integraciones de primera clase para enviar un mensaje a una cola de Amazon Simple Queue Service o para iniciar una máquina de estado de AWS Step Functions. Para ver las acciones de servicio compatibles, consulte [Referencia del subtipo de integración](http-api-develop-integrations-aws-services-reference.md).

## Asignar parámetros de solicitud
<a name="http-api-develop-integrations-aws-services-parameter-mapping"></a>

Las integraciones de primera clase tienen parámetros obligatorios y opcionales. Debe configurar todos los parámetros que son obligatorios para crear una integración. Puede utilizar valores estáticos o parámetros de asignación que se evalúan dinámicamente en el tiempo de ejecución. Para obtener una lista completa de las integraciones y parámetros admitidos, consulte [Referencia del subtipo de integración](http-api-develop-integrations-aws-services-reference.md).

En la siguiente tabla, se describen los parámetros de solicitud de asignación admitidos.


| Tipo | Ejemplo | Notas | 
| --- | --- | --- | 
| Valor del encabezado | \$1request.header.name | Los nombres del encabezado no distinguen entre mayúsculas y minúsculas. API Gateway combina varios valores de encabezado con comas, por ejemplo, "header1": "value1,value2". | 
| Valor de la cadena de consulta | \$1request.querystring.name | Los nombres de las cadenas de consulta distinguen mayúsculas y minúsculas. API Gateway combina varios valores con comas, por ejemplo, "querystring1": "Value1,Value2". | 
| Parámetro de ruta | \$1request.path.name | El valor de un parámetro de ruta en la solicitud. Por ejemplo, si la ruta es /pets/\$1petId\$1, puede asignar el parámetro petId de la solicitud con \$1request.path.petId. | 
| Solicitar acceso directo del cuerpo | \$1request.body | API Gateway transfiere todo el cuerpo de la solicitud directamente. | 
| Cuerpo de la solicitud | \$1request.body.name | Una [expresión de ruta de acceso JSON](https://goessner.net/articles/JsonPath/index.html#e2). El descenso recursivo (\$1request.body..name) y las expresiones de filtro (?(expression)) no son compatibles.  Cuando se especifica una ruta JSON, API Gateway trunca el cuerpo de la solicitud en 100 KB y, a continuación, aplica la expresión de selección. Para enviar cargas de más de 100 KB, especifique `$request.body`.   | 
| Variable de contexto | \$1contexto.variableName | El valor de una [variable de contexto](http-api-logging-variables.md) compatible. | 
| Variable de etapa | \$1stageVariables.variableName | El valor de una [variable de etapa](http-api-stages.stage-variables.md). | 
| Valor estático | string | Un valor constante. | 

## Crear una integración de primera clase
<a name="http-api-develop-integrations-aws-services-example"></a>

Antes de crear una integración de primera clase, debe crear un rol de IAM que conceda a API Gateway permisos para invocar la acción de servicio de AWS en la que se está integrando. Para obtener más información, consulte [Creación de un rol para un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Para crear una integración de primera clase, elija una acción de servicio de AWS admitido, como `SQS-SendMessage`, configure los parámetros de la solicitud y proporcione un rol que conceda a API Gateway permisos para invocar la API de servicio de AWS integrada. Dependiendo del subtipo de integración, se requieren diferentes parámetros de solicitud. Para obtener más información, consulte [Referencia del subtipo de integración](http-api-develop-integrations-aws-services-reference.md).

El siguiente comando [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) permite crear una integración que envía un mensaje de Amazon SQS.

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-subtype SQS-SendMessage \
    --integration-type AWS_PROXY \
    --payload-format-version 1.0 \
    --credentials-arn arn:aws:iam::123456789012:role/apigateway-sqs \
    --request-parameters '{"QueueUrl": "$request.header.queueUrl", "MessageBody": "$request.body.message"}'
```

## Creación de una integración de primera clase con CloudFormation
<a name="http-api-develop-integrations-aws-services-example-cfn"></a>

El siguiente ejemplo muestra un fragmento de CloudFormation que crea una ruta de `/{source}/{detailType}` con una integración de primera clase con Amazon EventBridge.

El parámetro `Source` se asigna al parámetro de ruta `{source}`, el `DetailType` se asigna al parámetro de ruta `{DetailType}` y el parámetro `Detail` se asigna al cuerpo de la solicitud.

El fragmento no muestra el bus de eventos ni el rol de IAM que otorga permisos a API Gateway para invocar la acción `PutEvents`.

```
Route:
    Type: AWS::ApiGatewayV2::Route
    Properties:
      ApiId: !Ref HttpApi
      AuthorizationType: None
      RouteKey: 'POST /{source}/{detailType}'
      Target: !Join 
        - /
        - - integrations
          - !Ref Integration
  Integration:
    Type: AWS::ApiGatewayV2::Integration
    Properties:
      ApiId: !Ref HttpApi
      IntegrationType: AWS_PROXY
      IntegrationSubtype: EventBridge-PutEvents
      CredentialsArn: !GetAtt EventBridgeRole.Arn
      RequestParameters:
        Source: $request.path.source
        DetailType: $request.path.detailType
        Detail: $request.body
        EventBusName: !GetAtt EventBus.Arn
      PayloadFormatVersion: "1.0"
```

# Referencia del subtipo de integración
<a name="http-api-develop-integrations-aws-services-reference"></a>

Los siguientes [subtipos de integración](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-integrations-integrationid.html#apis-apiid-integrations-integrationid-prop-integration-integrationsubtype) son compatibles con las API HTTP.

**Topics**
+ [EventBridge-PutEvents 1.0](#EventBridge-PutEvents)
+ [SQS-SendMessage 1.0](#SQS-SendMessage)
+ [SQS-ReceiveMessage 1.0](#SQS-ReceiveMessage)
+ [SQS-DeleteMessage 1.0](#SQS-DeleteMessage)
+ [SQS-PurgeQueue 1.0](#SQS-PurgeQueue)
+ [AppConfig-GetConfiguration 1.0](#AppConfig-GetConfiguration)
+ [Kinesis-PutRecord 1.0](#Kinesis-PutRecord)
+ [StepFunctions-StartExecution 1.0](#StepFunctions-StartExecution)
+ [StepFunctions: StartSyncExecution 1.0](#StepFunctions-StartSyncExecution)
+ [StepFunctions-StopExecution 1.0](#StepFunctions-StopExecution)

## EventBridge-PutEvents 1.0
<a name="EventBridge-PutEvents"></a>

Envía eventos personalizados a Amazon EventBridge para que puedan ajustarse a las reglas.


| Parámetro | Obligatorio | 
| --- | --- | 
| Detalle | True | 
| DetailType | True | 
| Fuente | True | 
| Time | Falso | 
| EventBusName | Falso | 
| Recursos | Falso | 
| Región | Falso | 
| TraceHeader | Falso | 

Para obtener más información, consulte [PutEvents](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html) en la *Referencia de la API de Amazon EventBridge*.

## SQS-SendMessage 1.0
<a name="SQS-SendMessage"></a>

Entrega un mensaje a la cola especificada.


| Parámetro | Obligatorio | 
| --- | --- | 
| QueueUrl | True | 
| MessageBody | True | 
| DelaySeconds | Falso | 
| MessageAttributes | Falso | 
| MessageDeduplicationId | Falso | 
| MessageGroupId | Falso | 
| MessageSystemAttributes | Falso | 
| Región | Falso | 

Para obtener más información, consulte [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) en la *Referencia de la API de Amazon Simple Queue Service*.

## SQS-ReceiveMessage 1.0
<a name="SQS-ReceiveMessage"></a>

Recupera uno o varios mensajes (hasta 10) de la cola especificada.


| Parámetro | Obligatorio | 
| --- | --- | 
| QueueUrl | True | 
| AttributeNames | Falso | 
| MaxNumberOfMessages | Falso | 
| MessageAttributeNames | Falso | 
| ReceiveRequestAttemptId | Falso | 
| VisibilityTimeout | Falso | 
| WaitTimeSeconds | Falso | 
| Región | Falso | 

Para obtener más información, consulte [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) en la *Referencia de la API de Amazon Simple Queue Service*.

## SQS-DeleteMessage 1.0
<a name="SQS-DeleteMessage"></a>

Elimina el mensaje especificado de la cola especificada.


| Parámetro | Obligatorio | 
| --- | --- | 
| ReceiptHandle | True | 
| QueueUrl | True | 
| Región | Falso | 

Para obtener más información, consulte [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html) en la *Referencia de la API de Amazon Simple Queue Service*.

## SQS-PurgeQueue 1.0
<a name="SQS-PurgeQueue"></a>

Elimina todos los mensajes de la cola especificada.


| Parámetro | Obligatorio | 
| --- | --- | 
| QueueUrl | True | 
| Región | Falso | 

Para obtener más información, consulte [PurgeQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_PurgeQueue.html) en la *Referencia de la API de Amazon Simple Queue Service*.

## AppConfig-GetConfiguration 1.0
<a name="AppConfig-GetConfiguration"></a>

Recibe información acerca de una configuración.


| Parámetro | Obligatorio | 
| --- | --- | 
| Aplicación | True | 
| Entorno | True | 
| Configuración | True | 
| ClientId | True | 
| ClientConfigurationVersion | Falso | 
| Región | Falso | 

Para obtener más información, consulte [GetConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetConfiguration.html) en la *Referencia de la API de AWS AppConfig*.

## Kinesis-PutRecord 1.0
<a name="Kinesis-PutRecord"></a>

Escribe un único registro de datos en un flujo de datos de Amazon Kinesis.


| Parámetro | Obligatorio | 
| --- | --- | 
| StreamName | True | 
| Datos | True | 
| PartitionKey | True | 
| SequenceNumberForOrdering | Falso | 
| ExplicitHashKey | Falso | 
| Región | Falso | 

Para obtener más información, consulte [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) en la *Referencia de la API de Amazon Kinesis Data Streams*.

## StepFunctions-StartExecution 1.0
<a name="StepFunctions-StartExecution"></a>

Comienza la ejecución de la máquina de estado.


| Parámetro | Obligatorio | 
| --- | --- | 
| StateMachineArn | True | 
| Nombre | Falso | 
| Input | Falso | 
| Región | Falso | 

Para obtener más información, consulte [StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html) en la *Referencia de la API de AWS Step Functions*.

## StepFunctions: StartSyncExecution 1.0
<a name="StepFunctions-StartSyncExecution"></a>

Comienza la ejecución de la máquina de estado sincrónico.


| Parámetro | Obligatorio | 
| --- | --- | 
| StateMachineArn | True | 
| Nombre | Falso | 
| Input | Falso | 
| Región | Falso | 
| TraceHeader | Falso | 

Para obtener más información, consulte [StartSyncExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartSyncExecution.html) en la *Referencia de la API de AWS Step Functions*.

## StepFunctions-StopExecution 1.0
<a name="StepFunctions-StopExecution"></a>

Detiene una ejecución.


| Parámetro | Obligatorio | 
| --- | --- | 
| ExecutionArn | True | 
| Causa | Falso | 
| Error | Falso | 
| Región | Falso | 

Para obtener más información, consulte [StopExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StopExecution.html) en la *Referencia de la API de AWS Step Functions*.