gpt4 book ai didi

amazon-web-services - Spark/Hadoop 不支持 AWS S3 上的 SSE-KMS 加密

转载 作者:可可西里 更新时间:2023-11-01 14:51:27 33 4
gpt4 key购买 nike

我正在尝试使用 KMS key (SSE-KMS) 通过服务器端加密在 S3 上保存一个 rdd,但出现以下异常:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: 695E32175EBA568A, AWS Error Code: InvalidArgument, AWS Error Message: The encryption method specified is not supported, S3 Extended Request ID: Pi+HFLg0WsAWtkdI2S/xViOcRPMCi7zdHiaO5n1f7tiwpJe2z0lPY1C2Cr53PnnUCj3358Gx3AQ=

以下是我使用 SSE-KMS 加密在 S3 上编写一个 rdd 的测试代码:

val sparkConf = new SparkConf().
setMaster("local[*]").
setAppName("aws-encryption")
val sc = new SparkContext(sparkConf)

sc.hadoopConfiguration.set("fs.s3a.access.key", AWS_ACCESS_KEY)
sc.hadoopConfiguration.set("fs.s3a.secret.key", AWS_SECRET_KEY)
sc.hadoopConfiguration.setBoolean("fs.s3a.sse.enabled", true)
sc.hadoopConfiguration.set("fs.s3a.server-side-encryption-algorithm", "SSE-KMS")
sc.hadoopConfiguration.set("fs.s3a.sse.kms.keyId", KMS_ID)

val s3a = new org.apache.hadoop.fs.s3a.S3AFileSystem
val s3aName = s3a.getClass.getName
sc.hadoopConfiguration.set("fs.s3a.impl", s3aName)

val rdd = sc.parallelize(Seq("one", "two", "three", "four"))
println("rdd is: " + rdd.collect())
rdd.saveAsTextFile(s"s3a://$bucket/$objKey")

不过,我可以使用 AES256 加密在 s3 上编写 rdd。

spark/hadoop 是否有不同的 KMS key 加密值而不是“SSE-KMS”?

任何人都可以建议我在这里遗漏了什么或做错了什么。

环境详情如下:

  • 星火:1.6.1
  • Hadoop:2.6.0
  • AWS-Java-SDK:1.7.4

提前谢谢你。

最佳答案

不幸的是,似乎现有版本的 Hadoop,即 2.8 不支持 SSE-KMS :(

观察结果如下:

  1. Hadoop 2.8.1 之前不支持 SSE-KMS
  2. SSE-KMS 应该在 Hadoop 2.9 中引入
  3. 在Hadoop 3.0.0alpha版本中,支持SSE-KMS。

相同的观察 w.r.t.适用于 Java 的 AWS 开发工具包

  1. SSE-KMS 是在 aws-java-sdk 1.9.5 中引入的

关于amazon-web-services - Spark/Hadoop 不支持 AWS S3 上的 SSE-KMS 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168680/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com