python - 尝试使用 AWS API Gateway 代理集成在 POST 上启用 CORS 时出现 500 错误

标签 python amazon-web-services aws-lambda aws-api-gateway

我的 Lambda 函数有一个如下所示的响应方法:

def respond(err, res=None):
    return {
        'statusCode': 400 if err else 200,
        'body': json.dumps(err) if err else json.dumps(res),
        'headers': {
            'Access-Control-Allow-Headers': 'content-type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
            'Access-Control-Allow-Methods': 'POST, GET, DELETE',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Credentials': True,
            'Content-Type': 'application/json',
        },
    }

当我使用来自 Postman 的 OPTIONS 请求测试我的端点时,我收到 500 内部服务器错误。如果我从 API 网关控制台测试它,我还会得到这个:

Execution log for request test-request
Wed Jul 05 14:25:26 UTC 2017 : Starting execution for request: test-invoke-request
Wed Jul 05 14:25:26 UTC 2017 : HTTP Method: OPTIONS, Resource Path: /login
Wed Jul 05 14:25:26 UTC 2017 : Method request path: {}
Wed Jul 05 14:25:26 UTC 2017 : Method request query string: {}
Wed Jul 05 14:25:26 UTC 2017 : Method request headers: {}
Wed Jul 05 14:25:26 UTC 2017 : Method request body before transformations: 
Wed Jul 05 14:25:26 UTC 2017 : Received response. Integration latency: 0 ms
Wed Jul 05 14:25:26 UTC 2017 : Endpoint response body before transformations: 
Wed Jul 05 14:25:26 UTC 2017 : Endpoint response headers: {}
Wed Jul 05 14:25:26 UTC 2017 : Execution failed due to configuration error: Output mapping refers to an invalid method response: 200
Wed Jul 05 14:25:26 UTC 2017 : Method completed with status: 500

我不太确定我做错了什么。我想我正在返回所有正确的标题。感谢您的帮助。

最佳答案

我认为您正在使用 lambda 集成,但您似乎想要 lambda 代理集成。

如果没有在集成响应上配置默认输出,则会抛出此错误。设置方法响应并添加带有状态代码的默认映射(或使用 lambda 代理集成)。

关于python - 尝试使用 AWS API Gateway 代理集成在 POST 上启用 CORS 时出现 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929428/

相关文章:

python - 如何计算数据框列中的出现次数?

python - 安装扩展模块的混合物。纯 python 模块和带有 distutils 的共享库

amazon-web-services - AWS 使用 Bamboo 删除 ECS 服务 - 该服务无法停止

node.js - 如何启用对 AWS STS AssumeRole 的访问

amazon-web-services - 使用 S3 URL 从 S3 存储桶读取文本文件内容

python - Django 找不到静态文件

Python Pandas 遍历整个列并检查它是否包含某个 str

amazon-web-services - scp(安全复制)到 ec2 实例,无需密码

python - Lex Bot 控制台上出现错误 - 在同一话语中第二次执行了履行 lambda

amazon-web-services - 一次仅执行一项 Glue 作业/顺序执行 Glue 作业