繁体   English   中英

AWS Lambda:函数已成功创建,但在创建触发器时出错:无法读取未定义的属性“包含”

[英]AWS Lambda: function was created successfully but an error occurred when creating the trigger: Cannot read property 'includes' of undefined

我正在尝试从 AWS 管理的 slack-echo-command-python 蓝图创建一个 Lambda 函数,每当我点击创建时,它都会返回“您的 Lambda 函数“test_lambda_01”已成功创建,但在创建时出现错误触发器:无法读取未定义的属性“包含”。” 我不确定这意味着什么。

触发器应该是自动创建和附加的 AWS API 网关。 我尝试通过管理控制台创建一个,然后手动将其添加到 Lambda 函数上的触发器中。 它已成功添加,但当我尝试使用 Slack 斜杠命令时,我返回“502_service_error”。 它目前应该默认接受所有呼叫类型(稍后会更改,但我想让一些工作正常进行)。

我已将 Slack 设置中的端点更改为正确的端点。 我可以看到它在 CloudWatch 指标中被调用。

我编辑了 Lambda 函数代码以在每次调用时返回它,仅用于测试目的。 我 99% 确信这是对 Slack 的有效回应,因为大部分/全部内容都是从示例中复制的。 根据https://jsonlint.com/,它是有效的 JSON。

{
    "body": {
        "blocks": [{
                "text": {
                    "text": "*It's 80 degrees right now.*",
                    "type": "mrkdwn"
                },
                "type": "section"
            },
            {
                "text": {
                    "text": "Partly cloudy today and tomorrow",
                    "type": "mrkdwn"
                },
                "type": "section"
            }
        ],
        "response_type": "ephemeral"
    },
    "headers": {
        "Content-Type": "application/json"
    },
    "statusCode": "200"
}

我已经用他们的默认测试测试了 Lambda 函数,它返回了上述内容。 API 网关出现在触发器下方。 我是否需要为 API 网关附加更多权限(它已经拥有调用 lambda 函数的权限)? 另外,在尝试从蓝图创建函数时,我做错了什么?

如果您需要任何其他信息,请告诉我。

您需要对响应中的body参数进行字符串化。

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
    "body": "..."
}

如果你看到上面的body参数,它是一个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM