es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

URI para la integración de AWS API Gateway con Kinesis.

Recursos para “aws_api_gateway_integration” “kinesis_integration” {
rest_api_id = aws_api_gateway_rest_api.shippeo_api_kinesis.id
resource_id = aws_api_gateway_resource.shippeo_api_resource_kinesis.id
http_method = aws_api_gateway_method.post_json_files_kinesis.http_method
type = “AWS_PROXY”
uri = aws_kinesis_stream.shippeo-kinesis-stream.arn
integration_http_method = “POST”
depends_on = [
aws_api_gateway_resource.shippeo_api_resource_kinesis
]
}

Quiero crear una API Gateway que envíe datos a un flujo de Kinesis. Estoy intentando el código anterior pero obtengo este error:

Error al crear API Gateway Integration: BadRequestException: AWS ARN para la integración debe contener una ruta o acción

│ con el módulo.shippeo-api.aws_api_gateway_integration.kinesis_integration,
│ en ../../modules/shippeo/kinesis-api.tf línea 62, en recurso “aws_api_gateway_integration” “kinesis_integration”:
│ 62: recurso “aws_api_gateway_integration” “kinesis_integration” {

Leí en otra respuesta de SO que el formato de la uri debería ser así:

arn:aws:apigateway:{región}:{subdominio.servicio|servicio}:{ruta|acción}/{servicio_api}

¿Cómo puedo cambiarlo para usarlo con Kinesis? ¿Cuál es la acción o servicio_api?

región = “eu-central-1”

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el atributo uri necesita contener una ruta o acción para ser un ARN válido de AWS para la Integración de la API Gateway. Para crear una API Gateway que envíe datos a un flujo de Kinesis, el uri debe estar en el formato:

    arn:aws:apigateway:{región}:kinesis:acción/PutRecord&StreamName={nombre_del_flujo}
    

    Donde región es la región de AWS donde se encuentra el flujo de Kinesis y nombre_del_flujo es el nombre del flujo de Kinesis.

    Por lo tanto, el recurso aws_api_gateway_integration actualizado utilizando Kinesis como servicio se vería así:

    resource "aws_api_gateway_integration" "kinesis_integration" {
      rest_api_id = aws_api_gateway_rest_api.shippeo_api_kinesis.id
      resource_id = aws_api_gateway_resource.shippeo_api_resource_kinesis.id
      http_method = aws_api_gateway_method.post_json_files_kinesis.http_method
      type = "AWS_PROXY"
      uri = "arn:aws:apigateway:eu-central-1:kinesis:action/PutRecord&StreamName=${aws_kinesis_stream.shippeo-kinesis-stream.name}"
      integration_http_method = "POST"
    
      depends_on = [
        aws_api_gateway_resource.shippeo_api_resource_kinesis
      ]
    }
    

    En este caso, la acción es PutRecord y la service_api se establece automáticamente con el nombre del flujo de Kinesis.

Comments are closed.