ClientError:调用HeadObject操作时发生错误(403):禁止

时间:2020-02-23 17:49:19

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

我正在创建一个AWS Lambda函数,该函数试图将文件(s3.download_file)下载到使用Python(3.6)中的 tempfile 库创建的临时目录中。然后,我对该文件进行了一些转换,然后需要再次上传它(s3.upload_file)。我对我的临时目录的生命周期充满信心,当Lambda完成工作时,临时目录将自行毁灭。 Lambda返回与禁止的HeadObject操作有关的错误。确切的错误是:

“调用HeadObject操作时发生错误(403):禁止”

如何调试此错误?我已经检查了几个来源,其中一些谈论调整策略,检查权限,但是我的问题是,有一些逐步的解决方案(其文档中没有AWS),这使我能够解决这个问题? / p>

1 个答案:

答案 0 :(得分:0)

您使用AWS凭证对S3进行API调用。如果要在S3对象上调用HeadObject操作,则您的凭据需要具有在有关S3对象上调用该操作的权限。

检查与Lambda函数使用的IAM role关联的IAM策略。

这是一个S3策略的示例,该策略允许针对mybucket的所有S3操作:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::my_bucket",
        "arn:aws:s3:::my_bucket/*"
      ]
    }
  ]
}