当前位置: 首页 > 知识库问答 >
问题:

API网关CLI Lambda权限(add-permission)

侯焱
2023-03-14

在浏览了大量的页面(包括一些SO页面)后(参见下面的列表),我仍然无法通过AWS CLI命令行工具授予我的APIGateway访问权来执行新添加的Lambda函数。

也就是说,我正在尝试复制这个:

我使用以下集成设置创建了一个新的endpoint:

<AccessDeniedException>
  <Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
aws lambda add-permission --function-name xx-url --statement-id apigateway-perm-1 --action lambda:InvokeFunction --principal apigateway.amazonaws.com --s
ource-arn "arn:aws:execute-api:{REGION}:{AWS_ACCOUNT_ID}:{API_ID}/*/*"

我也尝试过在这些更改之前和之后部署API,但没有效果?

PS--我也读过将函数的集成类型更改为POST的建议(参见此URL),但我的要求是有一个GET方法,还--通过控制台手动添加这个GET方法工作良好,因此,通过CLI工具也应该这样做。

URL列表(如果其他人正在查找有关此问题/主题的资源):

    null

这让我怀疑这可能是我错过的另一个步骤。

编辑(每个请求

测试屏幕截图-此日志继续显示AccessDeniedException错误。

无法确定要授权的服务/操作名称

UE Mar 28 22:59:40 UTC 2017:endpoint响应标头:{x-amzn-requestid=39398A3E-140A-11E7-92A3-3FDC0FBB61C2,connection=keep-alive,content-length=130,date=Tue,2017年3月28日22:59:39 GMT}Tue Mar 28 22:59:40 UTC 2017:由于配置错误执行失败:格式错误的Lambda代理响应Tue Mar 28 22:59:40 UTC 2017:方法已完成,状态:502

这最终导致读取错误的Lambda代理响应这一事实并不是问题所在--我已经通过手动重新选择Lambda函数来证明了这一点,允许应用权限,立即重新测试,并且所有工作都很好,甚至没有调用Lambda。

共有1个答案

濮阳赞
2023-03-14

要总结聊天中的调试情况:

GET方法是使用不正确的Lambda http方法GET创建的。这导致Lambda无法解释来自API网关的请求,从而生成XML错误响应。XML错误响应不是有效的JSON代理响应,结果生成502。

控制台正在添加必要的权限,并将http方法重置为POST,这就是为什么使用控制台后会成功的原因。

 类似资料:
  • 我有两个代码库。一个定义了一个服务(服务a),它包括一个查询dynamoDB表的AWS lambda。 另外,定义了一个需要调用多个服务lambda的聚合API网关。 API网关使用交叉堆栈引用导入服务A中定义的lambda并为其创建lambda集成: null null 当API被调用时,它会失败,这可能是因为没有向apigateway服务授予invoke权限。 在服务A的aws-cdk项目中,

  • 也有类似的问题,但它们都有我尝试过的答案。我不确定我可能做错了什么,但任何帮助都将不胜感激。 方法执行测试产生的错误;提交请求: 我正在学习S3的API网关教程(http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html)以及尝试执行PUT请求。 API网

  • 本文向大家介绍关于linux权限s权限和t权限详解,包括了关于linux权限s权限和t权限详解的使用技巧和注意事项,需要的朋友参考一下 常用权限 linux系统内有档案有三种身份 u:拥有者  g:群组   o:其他人 这些身份对于文档常用的有下面权限: r:读权限,用户可以读取文档的内容,如用cat,more查看 w:写权限,用户可以编辑文档 x:该目录具有可以被系统执行的权限 其他权限 除了读

  • 谷歌留档页面说 Sheets API v4确实提供了可与电子表格一起使用的AppendCells请求。batchUpdate方法将一行数据附加到工作表中(并根据需要同时更新单元格属性和格式)。 即使创建RowData有效负载很繁琐,这也可以用于添加新行。但是,这不允许设置ValueInputOption。 谷歌也表示 但是,通常更容易确定要添加行的A1符号,然后发布电子表格。价值观更新请求以覆盖该

  • 我创建了一些Lambda函数,并使用SAM进行了部署。部署是成功的,但当试图到达endpoint时,我总是获得 即使我使用头发送正确的承载令牌。然后,如果我去Authorizer并运行测试,它会很好地通过并在CloudWatch中生成日志,但是当我从前端应用程序或REST客户端应用程序运行到endpoint的请求时,我会得到未经授权的消息,并且检查CloudWatch,就不会执行Authorize