簡體   English   中英

使用 kms 加密密鑰將 dataframe 作為 csv 寫入 S3 而不提供密鑰

[英]Write dataframe as csv to S3 with kms encrypted keys without providing key

我通過 spark dataframe 創建了 CSV 文件,這些文件會自動加密 KMS。

供您參考,我提供了一個創建這些 KMS 加密文件的示例代碼片段。 如果您在寫作時看到我沒有提供任何 KMS 密鑰。 如果您說出根本原因,這將非常有幫助。

val df=spark.read.format("csv").option("header", "true").load("s3:///test/App_IP.csv")
df.createOrReplaceTempView("test")
val df1=spark.sql("select name from test")
df1.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").save("s3://test/city5/")

我從 EMR 集群 (emr-5.24.0) 中的 spark-shell 執行的這段代碼,spark 版本是 Spark 2.4.2

您可以按照 EMR 文檔Amazon S3 Server-Side Encryption中的說明使用 S3 加密:

fs.s3.enableServerSideEncryption :設置為 true 時,存儲在 Amazon S3 中的對象使用服務器端加密進行加密。 如果未指定密鑰,則使用 SSE-S3。 fs.s3.serverSideEncryption.kms.keyId :指定 AWS KMS 密鑰 ID 或 ARN。 如果指定了密鑰,則使用 SSE-KMS。

創建啟用了 SSE-S3 的集群:

aws emr create-cluster --release-label emr-5.24.0 \
--instance-count 3 --instance-type m5.xlarge --emrfs Encryption=ServerSide

創建啟用了 SSE-KMS 的集群:

aws emr create-cluster --release-label emr-5.24.0 \ --instance-count 3 \
--instance-type m5.xlarge --use-default-roles \
--emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryption.kms.keyId=<keyId>]

或者通過提供集群配置 JSON:

[
  ...
   {
    "Classification":"emrfs-site",
    "Properties": {
       "fs.s3.enableServerSideEncryption": "true",
       "fs.s3.serverSideEncryption.kms.keyId":"<keyId>"
    }
  }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM