我们正在使用spark处理EMR中的KMS客户端加密数据。我能够使用以下配置成功处理加密数据,但即使写入s3的聚合数据也是加密的。有没有办法用这些设置将未加密的数据写入s3?如果没有,我们如何在将其加载到RDS中进行报告之前对其进行解密?
sc._jsc.hadoopConfiguration().set("fs.s3.cse.materialsDescription.enabled", "true");
sc._jsc.hadoopConfiguration().set("fs.s3.cse.encryptionMaterialsProvider", "com.amazon.ws.emr.hadoop.fs.cse.KMSEncryptionMaterialsProvider");
sc._jsc.hadoopConfiguration().set("fs.s3.cse.kms.keyId","arn:aws:kms:us-east-1:abcd");
sc._jsc.hadoopConfiguration().set("fs.s3.cse.enabled", "true");
print('写入目录...'+ OUTPUT_DIR) formatted_ags.repartition(1).saveAsTextFile(OUTPUT_DIR)
答案 0 :(得分:0)
查看this question的答案,其中描述了如何使用每个自定义uri方案使用不同加密配置的解决方法。
答案 1 :(得分:0)
要在保存数据时使用不同的加密密钥/解密进行配置,我们可以遵循以下策略。
配置一个新的文件系统,您可以将其命名为s3X,其中X可以用任何字符替换。 一种示例配置如下。
{
"classification":"emrfs-site",
"properties":{
"fs.s3k.cse.kms.keyId":"arn:aws:kms:us-east-1:XXXXXXXXXXXX",
"fs.s3k.cse.enabled":"true",
"fs.s3k.cse.encryptionMaterialsProvider":"com.amazon.ws.emr.hadoop.fs.cse.KMSEncryptionMaterialsProvider",
}
},
{
"classification":"spark-defaults",
"properties":{
"spark.hadoop.fs.s3k.impl":"com.amazon.ws.emr.hadoop.fs.EmrFileSystem",
}
并在保存输出时使用s3k协议。
如果您要禁用加密,我们可以像“fs.s3k.cse.enabled”:“false”