![](/img/trans.png)
[英]AWS CLI S3 A client error (403) occurred when calling the HeadObject operation: Forbidden
[英]Unable to download file from S3 because "A client error (403) occurred when calling the HeadObject operation: Forbidden"
我正在嘗試從通過 AWS CDK 創建的 S3 存儲桶中下載代碼文件,但出現此錯誤“調用 HeadObject 操作時發生客戶端錯誤 (403):禁止訪問”。 起初我以為是因為我沒有將 s3:GetObject 操作添加到 IAM 策略聲明中,但我仍然收到該錯誤。 以下是我創建存儲桶的方式:
# S3
bucket = s3.Bucket(
self, "testS3Bucket", bucket_name=f"test_s3_bucket"
)
service_lambda.add_to_role_policy(
iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=[
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:HeadObject",
],
resources=[bucket.arn_for_objects("*")],
)
)
這是我從 S3 下載文件的代碼:
def download_file(self, file_name, s3_bucket):
try:
file = self.s3.Object(s3_bucket, file_name).load()
except ClientError as e:
if e.response["Error"]["Code"] == "404":
log.error("File does not exist for partner")
return {}
else:
raise e
except Exception as e:
raise e
return file
有誰知道我怎樣才能解決這個問題?
授予 lambda 適當權限的更簡單方法如下所示:
bucket = s3.Bucket(
self, "testS3Bucket", bucket_name=f"test_s3_bucket"
)
bucket.grant_read_write(service_lambda.role)
基於文檔
如果使用加密密鑰,則還將授予使用該密鑰進行加密/解密的權限。
試一試,看看您是否仍然收到權限錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.