使用 DefaultAWSCredentialsProviderChain 将 Apache Drill 连接到 Ama



我正在尝试将 apache drill 连接到我的 aws s3,而无需在配置中指定我的访问密钥和私有密钥,所以我添加了

"fs.s3a.aws.credentials.provider": "com.amazonaws.auth.DefaultAWSCredentialsProviderChain"

在配置中,希望它将从我的 PC 中的默认凭证配置文件中获取凭证,并在我部署它时获取 IAM 角色。

当我在配置中指定访问密钥和私有密钥时,连接工作正常,但是在我更改为配置以使用DefaultAWSCredentialsProviderChain后,它不起作用

当我尝试使用 S3 存储时,演练显示了这一点

Error: SYSTEM ERROR: AmazonClientException: Unable to load AWS credentials from any provider in the chain

我可以使用带有org.apache.parquet.hadoop.ParquetWriterDefaultAWSCredentialsProviderChain写入 s3,并且可以使用 awscli 读取 s3 存储桶而没有任何问题

这是我的存储插件配置

{
"type": "file",
"connection": "s3a://my-bucket",
"config": {
"fs.s3a.endpoint": "s3.REGION.amazonaws.com",
"fs.s3a.aws.credentials.provider": "com.amazonaws.auth.DefaultAWSCredentialsProviderChain"
},
"workspaces": {
"tmp": {
"location": "/tmp",
"writable": true,
"defaultInputFormat": null,
"allowAccessOutsideWorkspace": false
},
"root": {
"location": "/",
"writable": false,
"defaultInputFormat": null,
"allowAccessOutsideWorkspace": false
}
},
"formats": {
"parquet": {
"type": "parquet"
}
},
"enabled": true
}

Apache Drill不支持~/.aws/credentials,但支持Hadoop CredentialProvider API。为了能够使用它,您需要创建一个外部凭证提供程序"hadoop.security.credential.provider.path"并在 Drill 的 S3 存储插件"config"部分中设置属性(指向提供程序(。

或者,您可以将凭据存储在 Drill 的核心站点.xml中。

最新更新