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”
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, eluri
debe estar en el formato:Donde
región
es la región de AWS donde se encuentra el flujo de Kinesis ynombre_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í:En este caso, la acción es
PutRecord
y laservice_api
se establece automáticamente con el nombre del flujo de Kinesis.