我正在尝试使用KMS密钥(SSE-KMS)在服务器端加密的S3上保存rdd,但我收到以下异常:
线程中的异常" main" com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:400, AWS服务:Amazon S3,AWS请求ID:695E32175EBA568A,AWS错误 代码:InvalidArgument,AWS错误消息:加密方法 不支持指定,S3扩展请求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。
对于KMS密钥加密而言,spark / hadoop是否具有不同的值而不是" SSE-KMS"?
任何人都可以建议我在这里错过或做错了。
环境详情如下:
提前谢谢。
答案 0 :(得分:1)
不幸的是,似乎现有版本的Hadoop即2.8不支持SSE-KMS :(
以下是观察结果:
同样的观察w.r.t. AWS SDK for Java