【问题标题】:Lamba execution role - access denied when calling putObjectLambda 执行角色 - 调用 putObject 时拒绝访问
【发布时间】:2020-01-22 01:13:32
【问题描述】:

我有一个 lambda 函数角色,并附加了 S3FullAccess 策略。

当我尝试将文件上传到我的 S3 存储桶(在同一个帐户上)时,我收到 403 响应,说访问被拒绝。但是,进一步查看日志,我可以看到弹出此错误

InvalidAccessKeyId (client): The AWS Access Key Id you provided does not exist in our records.

日志显示请求正在使用临时密钥(以 ASIA 为前缀),但这不会显示在任何 cloudtrail 日志中。

我也尝试在我的本地机器上进行测试 - 假设与 lambda 环境相同的角色并调用 aws s3api put-object ... 并且它工作正常(如图)。

我真的很想知道为什么这不起作用,所以任何帮助都将不胜感激。

编辑(更多信息):

lambda 位于 API 网关后面。向使用flysystem-aws-s3-v3 AwsS3Adapter 处理上传的端点发出请求以处理上传

【问题讨论】:

  • “当我尝试上传文件时”——“我”是指“lambda”吗?
  • 是的,lambda 正在运行一个 API,它有一个上传端点。当我尝试调用此端点时,我收到拒绝访问错误
  • 你在代码中设置了s3存储桶的区域吗?
  • 是的,我将 AWS_DEFAULT_REGION 设置为存储桶分配到的同一区域,并且 lambda 所在的区域
  • 对于从同一区域和帐户中的 Lambda 进行的 S3 访问,您不需要任何进一步的配置。除了 AWS_DEFAULT_REGION 之外,您是否设置了其他任何内容?您在什么日志中看到了 ASIA 身份?

标签: amazon-web-services amazon-s3 aws-lambda amazon-iam


【解决方案1】:

我终于解决了。我没有在我的代码中处理 AWS_SESSION_TOKEN 环境变量。

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 2017-11-27
    • 2012-09-11
    • 2020-06-30
    • 2020-12-26
    • 2017-08-04
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多