Terraform 不会将步骤功能部署到 API 网关
Terraform won't deploy step function to API gateway
我正在尝试部署 API GW,并在 post 方法执行中集成步进函数。
我收到的错误是;
错误:创建 API 网关集成时出错:BadRequestException:用于集成的 AWS ARN 必须包含路径或操作
集成如下所示;
resource "aws_api_gateway_integration" "approve_get_integration_POST" {
rest_api_id = aws_api_gateway_rest_api.ccc_api.id
resource_id = aws_api_gateway_resource.QuestionnaireResponseID.id
http_method = aws_api_gateway_method.approve_get_integration_POST.http_method
integration_http_method = "POST"
type = "AWS"
passthrough_behavior = "NEVER"
uri = "arn:aws:states:us-west-2:1431651122:StartExecution/ccc-step-function-POST"
request_templates = {
"application/json" = <<EOF
{
"Comment": "Test express state machine",
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-west-2:65163961147:function:sb-ccc-validate-submission:$LATEST"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Next": "CheckForValidateError"
},
"CheckForValidateError": {
"Type": "Choice",
"Choices": [
{
"Not": {
"Variable": "$.statusCode",
"NumericEquals": 200
},
"Next": "ValidateFailError"
}
],
"Default": "Create"
},
"ValidateFailError": {
"Type": "Succeed"
},
EOF
}
}```
from what I have read that URI is correct and should be deploying ok.
对于 AWS 集成,URI 的格式应为
arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}
我正在尝试部署 API GW,并在 post 方法执行中集成步进函数。
我收到的错误是;
错误:创建 API 网关集成时出错:BadRequestException:用于集成的 AWS ARN 必须包含路径或操作
集成如下所示;
resource "aws_api_gateway_integration" "approve_get_integration_POST" {
rest_api_id = aws_api_gateway_rest_api.ccc_api.id
resource_id = aws_api_gateway_resource.QuestionnaireResponseID.id
http_method = aws_api_gateway_method.approve_get_integration_POST.http_method
integration_http_method = "POST"
type = "AWS"
passthrough_behavior = "NEVER"
uri = "arn:aws:states:us-west-2:1431651122:StartExecution/ccc-step-function-POST"
request_templates = {
"application/json" = <<EOF
{
"Comment": "Test express state machine",
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-west-2:65163961147:function:sb-ccc-validate-submission:$LATEST"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Next": "CheckForValidateError"
},
"CheckForValidateError": {
"Type": "Choice",
"Choices": [
{
"Not": {
"Variable": "$.statusCode",
"NumericEquals": 200
},
"Next": "ValidateFailError"
}
],
"Default": "Create"
},
"ValidateFailError": {
"Type": "Succeed"
},
EOF
}
}```
from what I have read that URI is correct and should be deploying ok.
对于 AWS 集成,URI 的格式应为
arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}