編寫三角洲湖表時拒絕訪問S3

學習如何解決一個拒絕訪問403禁止錯誤在編寫三角洲湖表S3。

寫的亞當Pavlacka

去年發表在:2022年5月10日

問題

DataFrame三角洲湖格式的內容寫入一個S3的位置可能會導致一個錯誤:

com.amazonaws.services.s3.model。亞馬遜S3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: C827672D85516BA9; S3 Extended Request ID:

導致

一個操作包括三角洲湖格式需要其他文件格式不需要的權限。例如,三角洲湖需要創建一個_delta_log目錄中。的操作還需要檢查的最新版本提交日誌。您需要添加額外的權限我和桶的角色允許寫操作成功完成。

解決方案

添加以下權限,使寫作δ表:

  1. 將這些權限添加到我政策JSON:
    [" s3: propertynames”、“s3: DeleteObject”、“s3: ListBucket”,“s3: GetObject”、“s3: PutObjectAcl”)
  2. 將這些權限添加到桶政策JSON:
    [" s3: GetObject”、“s3: GetObjectVersion”、“s3: propertynames”,“s3: DeleteObject”、“s3: ListBucket”,“s3: GetBucketLocation”)

或者,您可以使用JSON格式的我政策添加權限,如下所示:

{“版本”:“2012-10-17”,“聲明”:[{“Sid”:“VisualEditor0”,“效果”:“允許”、“行動”:“s3: ListBucket”、“資源”:“在攻擊:aws: s3:::我的桶”},{“Sid”:“VisualEditor1”,“效果”:“允許”、“行動”:[“s3: propertynames”,“s3: GetObject”、“s3: DeleteObject”、“s3: PutObjectAcl”),“資源”:“在攻擊:aws: s3:::我的桶/文件夾/ *”}]}