AWS服務失敗,提示“沒有區域提供錯誤”

在Databricks Runtime 7.0及以上版本中,AWS服務失敗,提示Java“未提供區域”錯誤。

寫的arjun.kaimaparambilrajan

最後發布日期:2022年2月25日

問題

使用AWS服務的代碼段會出現java.lang.IllegalArgumentException:在Databricks Runtime 7.0及以上版本中沒有區域提供錯誤。同樣的代碼可以在Databricks Runtime 6.6及以下版本運行。

您可以通過在筆記本中運行示例代碼片段來驗證該問題。在Databricks Runtime 7.0及以上版本中,它將返回示例錯誤消息中所示的異常。

示例代碼片段(Scala):

import com.amazonaws.regions.Regions import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder .standard() .withRegion(Regions.fromName("us-west-2")) .build()

錯誤信息示例:

java.lang.IllegalArgumentException:任何地區提供com.amazonaws.AmazonWebServiceClient.setRegion (AmazonWebServiceClient.java: 509) com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.setRegion (AWSSecurityTokenServiceClient.java: 1436) com.amazonaws.client.builder.AwsClientBuilder.setRegion (AwsClientBuilder.java: 456) com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties (AwsClientBuilder.java: 424) com.amazonaws.client.builder.AwsSyncClientBuilder.build (AwsSyncClientBuilder.java: 46)

導致

AWS Java SDK版本1.11.655發生了更改,導致Databricks Runtime 7.0及以上版本出現此問題。

解決方案

您必須設置sts_regional_endpoints價值區域集群上。這確保使用了當前配置區域的AWS STS端點。

  1. 打開集群頁麵。
  2. 選擇集群。
  3. 點擊編輯
  4. 點擊高級選項
  5. 點擊火花
  6. 環境變量字段中,輸入AWS_STS_REGIONAL_ENDPOINTS = "區域"
  7. 保存更改並啟動或重新啟動集群。