問題
在試圖訪問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鍵在筆記本或集群火花配置。