Amazon web services 不';t Spark/Hadoop支持AWS S3上的SSE-KMS加密
我正在尝试使用KMS密钥(SSE-KMS)在S3上使用服务器端加密保存rdd,但遇到以下异常: 线程“main”中出现异常 com.amazonaws.services.s3.model.amazons3异常:状态代码:400, AWS服务:Amazon S3,AWS请求ID:695E32175EBA568A,AWS错误 代码:InvalidArgument,AWS错误消息:加密方法 不支持指定的,S3扩展请求ID: Pi+HFLg0WsAWtkdI2S/XVIOCPMCI7ZDHIO5N1F7TIWPJE2Z0LPY1C2CR53PNNUCJ3358GX3AQ= 以下是我使用SSE-KMS加密在S3上编写rdd的测试代码:Amazon web services 不';t Spark/Hadoop支持AWS S3上的SSE-KMS加密,amazon-web-services,hadoop,apache-spark,encryption,amazon-s3,Amazon Web Services,Hadoop,Apache Spark,Encryption,Amazon S3,我正在尝试使用KMS密钥(SSE-KMS)在S3上使用服务器端加密保存rdd,但遇到以下异常: 线程“main”中出现异常 com.amazonaws.services.s3.model.amazons3异常:状态代码:400, AWS服务:Amazon S3,AWS请求ID:695E32175EBA568A,AWS错误 代码:InvalidArgument,AWS错误消息:加密方法 不支持指定的,S3扩展请求ID: Pi+HFLg0WsAWtkdI2S/XVIOCPMCI7ZDHIO5N1F7
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密钥加密值是否与“SSE-KMS”不同
谁能告诉我我在这里遗漏了什么或做错了什么
环境详情如下:
- 火花:1.6.1
- Hadoop:2.6.0
- Aws Java Sdk:1.7.4
提前感谢。不幸的是,Hadoop的现有版本,即2.8,似乎不支持SSE-KMS:( 观察结果如下:
你有没有让SSE-KMS使用Spark?如果有,你最终使用的依赖项是什么。在Hadoop 3.0之前,社区似乎没有解决AWS SSE-KMS的问题;但是Spark社区仍在尝试为Hadoop版本添加功能……看起来Steve Loughran在另一个线程中回答了这个问题: