我正在创建一个AWS Lambda函数,该函数试图将文件(s3.download_file)下载到使用Python(3.6)中的 tempfile 库创建的临时目录中。然后,我对该文件进行了一些转换,然后需要再次上传它(s3.upload_file)。我对我的临时目录的生命周期充满信心,当Lambda完成工作时,临时目录将自行毁灭。 Lambda返回与禁止的HeadObject操作有关的错误。确切的错误是:
“调用HeadObject操作时发生错误(403):禁止”
如何调试此错误?我已经检查了几个来源,其中一些谈论调整策略,检查权限,但是我的问题是,有一些逐步的解决方案(其文档中没有AWS),这使我能够解决这个问题? / p>
答案 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/*"
]
}
]
}