gpt4 book ai didi

node.js - AWS_IAM 身份验证,用于通过 Api 网关从 Elastic beanstalk 进行 Lambda 调用

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:45 25 4
gpt4 key购买 nike

我正在努力处理 aws 权限...

TL/DR:我有一个弹性 beanstalk 服务器,它需要调用隐藏在 Api 网关后面的 lambda 函数。只要我不在 ApiGateway 上实现身份验证,它就可以正常工作。

  • 我做了什么:
    • 将“AWS_IAM”添加到相应资源(此处为“/signS3”)和方法(此处为 GET)的“方法请求”
    • 将“AmazonAPIGatewayInvokeFullAccess”策略添加到我的“Elastic Beanstalk 服务角色”和“Elastic Beanstalk 实例配置文件”
    • 使用nodejs https methods调用我的ApiGateway“方法/资源”
      • 我得到的结果:“缺少身份验证 token ”...
      • 可能是什么?
    • 也许我应该使用 AWS-SDK 调用 ApiGateway,以便将角色与我的请求链接起来?但我在sdk文档中没有找到合适的方法
    • 我在必须授予的策略上犯了错误...但我不这么认为,我正在使用默认的 AWS AmazonAPIGatewayInvokeFullAccess 默认策略。

有什么想法吗?

==============

整个故事:

  • 业务需求:我正在构建一个带有 Nodejs 后端的移动应用,并且我需要我的用户能够将文件上传到 S3 存储桶
  • 技术答案:使用 S3 预签名 URL ==> 应用程序发送一些有关文件的信息以存储到我的后端,后端会获取一些用于一次性上传该文件的信息特定文件到 S3,并将其发送回我的应用程序,该应用程序将文件直接上传到 S3。很好地综合在the following

不是问题,完全可以工作!是的 !但是等等...

我戴上安全帽并查看了设置:来自移动应用程序的每个请求都会发送到服务器 A(托管在 Elastic Beanstalk 上),这是我的后端的入口点。此时,服务器 A 有一个包含 AWS key 的配置文件,用于配置 AWS-SDK 以访问 S3。所以基本上,如果我的服务器由于某种原因受到损害,我的安全 key 就会泄露。那该怎么办?

我的答案是将请求委托(delegate)给 S3,以将预签名 URL 获取到 AWS Lambda 函数,该函数通过 ApiGateway 调用。然后,我的 lambda 函数(未暴露在互联网上)必须受到损害才能泄露我的 key 。安全性得到增强...几分钟后,它就启动并运行了,我的应用程序请求也经历了这个过程。 很好,但仍然不完美:如果我不将 $%#@ Auth 放入我的 ApiGateway 方法中,它就会起作用!

确实,这就是我的问题,我无法使 AWS_IAM 权限正常工作。 ==> 查看 TL/DR 以了解我如何尝试它。

最佳答案

您缺少的是发送到 API Gateway 的请求的适当签名。当您向 API Gateway 发出需要 AWS_IAM 身份验证的 REST 请求时,您需要使用附加角色的凭证自行签署该请求。其他详细信息请参见:Accessing AWS API Gateway from an EC2 using IAM authorization (NodeJS)

关于node.js - AWS_IAM 身份验证,用于通过 Api 网关从 Elastic beanstalk 进行 Lambda 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033293/

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