簡體   English   中英

無法從 S3 下載文件,因為“調用 HeadObject 操作時發生客戶端錯誤 (403):禁止訪問”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM