gpt4 book ai didi

amazon-web-services - 如何向 API Gateway 授予通过 CloudFormation 调用 lambda 函数的权限?

转载 作者:行者123 更新时间:2023-12-03 23:28:02 24 4
gpt4 key购买 nike

我一直在网上寻找这个问题的答案。

本质上,我们正在使用 Swagger 构建一个 API,这非常棒并且工作得很好,但是有一件事不起作用......当我们调用端点时,我们收到 500 错误(这不是我们提供的 500 错误要么是来自 AWS 的错误)。该错误指出“由于配置错误而执行失败:Lambda 函数的权限无效”(https://youtu.be/H4LM_jw5zzs <- 这是来自其他用户的视频,内容是我遇到的错误)。

我已经深入了很多老鼠洞,并找到了答案...它涉及使用 AWS CLI,看起来有点像这样:

aws lambda add-permission \
--function-name FUNCTION_NAME \
--statement-id STATEMENT_ID \
--action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/METHOD/ENDPOINT"

这很棒,但我们正在使用 CloudFormation 来启动一切,我们希望这是自动化的。有没有更简单的方法来解决这个问题? CloudFormation 中是否有某些东西可以为我们提供所需的资源策略?

我在这方面遇到了一些困难,但我今天已经为此工作了几个小时,这对我们的 API 发布来说有点阻碍,所以任何帮助将不胜感激。 :)

最佳答案

有一个CloudFormation解决这个问题。请参阅以下 CloudFormation 代码片段:

"Permission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"FunctionName": { "Fn::GetAtt": [ "Lambda", "Arn" ] },
"Action": "lambda:InvokeFunction",
"Principal": "apigateway.amazonaws.com",
"SourceArn": { "Fn::Join": [ "", [
"arn:aws:execute-api:",
{ "Ref": "AWS::Region" }, ":",
{ "Ref": "AWS::AccountId" }, ":",
{ "Ref": "API" },
"/*/*/*"
] ] }
}
}

这将授予 API Gateway 权限来启动您的 Lambda 函数。此代码段中您需要更改的变量是 Lambda(第 4 行)和 API(第 11 行)。

关于amazon-web-services - 如何向 API Gateway 授予通过 CloudFormation 调用 lambda 函数的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com