Joh*_*y19 8 amazon-s3 access-keys amazon-web-services http-status-code-403 apache-spark
我正在尝试从 Spark 读取 s3 存储桶直到今天 Spark 总是抱怨请求返回 403
hadoopConf = spark_context._jsc.hadoopConfiguration()
hadoopConf.set("fs.s3a.access.key", "ACCESSKEY")
hadoopConf.set("fs.s3a.secret.key", "SECRETKEY")
hadoopConf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
logs = spark_context.textFile("s3a://mybucket/logs/*)
Run Code Online (Sandbox Code Playgroud)
Spark 说......无效的访问密钥 [ACCESSKEY]
但是,使用相同的 ACCESSKEY 和 SECRETKEY 这与 aws-cli 一起使用
aws s3 ls mybucket/logs/
Run Code Online (Sandbox Code Playgroud)
在 python boto3 中这是有效的
resource = boto3.resource("s3", region_name="us-east-1")
resource.Object("mybucket", "logs/text.py") \
.put(Body=open("text.py", "rb"),ContentType="text/x-py")
Run Code Online (Sandbox Code Playgroud)
所以我的凭据无效,问题肯定出在 Spark 上。
今天我决定打开整个 Spark 的“调试”日志,令我惊讶的是...... Spark 没有使用我提供的 [SECRETKEY] 而是......添加一个随机的???
17/03/08 10:40:04 DEBUG 请求:发送请求:HEAD https://mybucket.s3.amazonaws.com / Headers:(授权:AWS ACCESSKEY:[RANDON-SECRET-KEY],用户代理:aws -sdk-java/1.7.4 Mac_OS_X/10.11.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.65-b01/1.8.0_65,日期:2017 年 3 月 8 日星期三 10:40:04 GMT,内容类型:application/x -www-form-urlencoded; charset=utf-8, )
这就是为什么它仍然返回 403!Spark 没有使用我随 fs.s3a.secret.key 提供的密钥,而是随机发明了一个密钥??
为了记录,我使用此命令在我的机器(OSX)上本地运行它
spark-submit --packages com.amazonaws:aws-java-sdk-pom:1.11.98,org.apache.hadoop:hadoop-aws:2.7.3 test.py
Run Code Online (Sandbox Code Playgroud)
有人可以启发我吗?
(更新为我原来的被否决,因为显然被认为是不可接受的)
AWS 身份验证协议不会通过网络发送您的秘密。它对消息进行签名。这就是为什么你看到的不是你传入的。
欲了解更多信息,请重读。
归档时间: |
|
查看次数: |
4397 次 |
最近记录: |