Amazon web services 在AWS批处理上独立运行时,Spark无法访问S3

Amazon web services 在AWS批处理上独立运行时,Spark无法访问S3,amazon-web-services,apache-spark,amazon-s3,amazon-ecs,aws-batch,Amazon Web Services,Apache Spark,Amazon S3,Amazon Ecs,Aws Batch,使用AWS库,我可以访问S3,但如果我尝试使用NativePackager的Spark program build访问S3,这是行不通的 我尝试了s3://、s3n://和s3a:// 让我展示一下我的一些测试: 测试1: 如果我没做什么特别的事。如前所述失败 测试2: 下面,我在调用代码之前执行了以下代码: curl --location http://169.254.170.2/$$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI > credentials

使用AWS库,我可以访问S3,但如果我尝试使用NativePackager的Spark program build访问S3,这是行不通的

我尝试了s3://、s3n://和s3a://

让我展示一下我的一些测试:

测试1:

如果我没做什么特别的事。如前所述失败

测试2:

下面,我在调用代码之前执行了以下代码:

curl --location http://169.254.170.2/$$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI > credentials.txt
export AWS_ACCESS_KEY_ID=`cat credentials.txt | perl -MJSON::PP -E 'say decode_json(<>)->{"AccessKeyId"}'`
export AWS_SECRET_ACCESS_KEY=`cat credentials.txt | perl -MJSON::PP -E 'say decode_json(<>)->{"SecretAccessKey"}'`
这个问题以前有过一些错误

测试3:

如果我用我的个人密钥设置AWS\u访问密钥\u ID和AWS\u机密密钥\u访问密钥。AWS库和Spark都可以工作

考虑到测试3可以工作,我的代码也可以工作。很明显,我不喜欢把钥匙放在周围。问题是:


如何在Spark作业中使用AWS批量ECS创建的凭据?

我也遇到了同样的问题,仔细阅读后,我意识到我需要将此添加到Spark属性中:

sparkConf.set('spark.hadoop.fs.s3a.aws.credentials.provider', 'com.amazonaws.auth.DefaultAWSCredentialsProviderChain')

希望它有帮助

我也有同样的问题,仔细阅读后,我意识到我需要将此添加到我的spark属性中:

sparkConf.set('spark.hadoop.fs.s3a.aws.credentials.provider', 'com.amazonaws.auth.DefaultAWSCredentialsProviderChain')

希望它能帮上忙

SUPER!!!!!非常感谢!谢谢!!!!!非常感谢