AWS API Gateway MockIntegration 不接受 Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`

AWS API Gateway MockIntegration does not accept Content-Type `application/vnd.nasa.cmr.umm+json;version=1.6.3`

我目前正在尝试使用 python AWS CDK 创建模拟集成,以便在应用程序中进行 运行 集成测试。

此应用需要查询外部 API 以验证负载。端点需要一个 Content-Type application/vnd.nasa.cmr.umm+json;version=1.6.3。现在,我希望 MockIntegration 总是 return 一个 200 状态代码和一个空响应。

这是我试过的:

from aws_cdk import aws_apigateway

cmr_api = aws_apigateway.RestApi(
    self, f"integration-test-cmr-api-try",
)

aws_apigateway.Resource(
    self, "mock-cmr-validation", parent=cmr_api.root, path_part="ingest"
).add_resource(
    "validate"
).add_method(
    http_method="POST",
    integration=aws_apigateway.MockIntegration(
                request_templates={
                    "application/vnd.nasa.cmr.umm+json;version=1.6.3":  json.dumps({"statusCode": 200})},
                integration_responses=[
                    {
                        "statusCode": "200",
                        "responseTemplates": {"application/json": json.dumps({})},
                    }
                ],
    ),
    method_responses=[
        {
            "statusCode": "200",
            "responseModels": {
                "application/json": aws_apigateway.Model.EMPTY_MODEL
            },
        }
    ],

)

不幸的是请求生成网关returns:

curl --request POST 'https://trfjg7ckha.execute-api.us-east-1.amazonaws.com/prod/ingest/validate' \
--header 'Content-Type: application/vnd.nasa.cmr.umm+json;version=1.6.3' \
--data-raw '{}'

状态码 500,{"message": "Internal server error"}.

仅将 application/json(甚至 application/vnd.nasa.cmr.umm+json)设置为 MockIntegration.request_templates 中的键,并将其用作请求中的 Content-Type,return预期结果(状态代码 200,空响应)。这让我想知道问题是否可能在于使用 Content-Type 设置 ;version=1.6.3

如有任何帮助,我们将不胜感激!

经过一些进一步的实验,我能够通过在 request_template(没有版本)中使用 application/vnd.nasa.cmr.umm+json 来解决这个问题。当那是 request_template 内容类型时,任何 application/vnd.nasa.cmr.umm+json;version=XXX 匹配并触发正确的模拟集成!