禁止當訪問S3數據時發生錯誤

寫的亞當Pavlacka

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

問題

在試圖訪問S3數據直接使用DBFS山或火花api,命令失敗的異常類似如下:

com.amazonaws.services.s3.model。AmazonS3Exception:禁止;請求ID: XXXXXXXXXXXXX,擴展請求ID: XXXXXXXXXXXXXXXXXXX,雲提供商:AWS實例ID: XXXXXXXXXX(服務:Amazon S3;狀態碼:403;錯誤代碼:403禁止;請求ID: XXXXXXXXXXX;S3擴展請求ID:

導致

以下是常見的原因:

  • 使用AWS鍵除了我的角色。使用全球init腳本設置AWS鍵會導致這種行為。
  • 我角色所需的權限訪問S3數據,但火花AWS鍵設置配置。例如,設置spark.hadoop.fs.s3a.secret.key可以用我的角色衝突。
  • AWS鍵設置在司機節點從一個交互式環境水平集群通過一個筆記本。
  • DBFS前麵創建掛載點與AWS鑰匙現在試圖訪問使用了我的角色。
  • 外麵的文件寫數據磚,桶所有者沒有讀權限(見第七步:更新cross-account acl S3對象)。
  • 我的角色沒有連接到集群。
  • 我有讀權限角色,但你想執行寫操作。也就是說,我的角色沒有足夠的權限你要執行的操作。

解決方案

以下是建議和最佳實踐來避免這個問題:

  • 使用我的角色而不是AWS鑰匙。
  • 如果你試圖從AWS鑰匙開關配置我的角色,卸載DBFS掛載點為S3 bucket使用AWS創建鍵和重新安裝使用我的角色。
  • 避免使用AWS鍵集全球init腳本。如果需要始終使用集群級init腳本。
  • 避免設置AWS鍵在筆記本或集群火花配置。