我正在尝试从 Azure HDInsight Cluster VM 访问 AWS s3 存储桶。我生成了新密钥并添加到 .aws/credentials。“aws s3 ls”在 Azure VM 中运行良好。如果我执行 hadoop distcp 或在 spark-shell 中读取 s3 文件,我会收到 403 错误“您提供的 AWS 访问密钥 ID 在我们的记录中不存在。”。我确实尝试导出 AWS_SESSION_TOKEN、AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。但没有成功。请帮我解决这个问题。
答案1
我找到了解决此问题的方法。我在 core-site.xml 中添加了以下属性。
属性1:
名称:fs.s3a.aws.credentials.provider
值: org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider
属性2:
名称:fs.s3a.access.key
值:XXXXXXXXX
属性3:
名称:fs.s3a.secret.key
值:XXXXXXX
属性4:
名称:fs.s3a.session.token
值:XXXXX
最初,我尝试从 spark-shell 访问没有属性“fs.s3a.aws.credentials.provider”的 s3