首页 > 解决方案 > 使用 KMS 加密文件并推送到 S3

问题描述

我有一个用 Python 编写的 AWS lambda 函数,它需要使用字符串变量中的数据创建一个文件,KMS 加密文件并将文件推送到 S3。

s3_resource = boto3.resource("s3")
s3_resource.Bucket(bucket_name).put_object(Key=s3_path, Body=data)

我正在使用上述方法在 S3 中创建文件,但是有没有办法使用 KMS 密钥,我必须在推送到 S3 时加密文件?

标签: pythonamazon-web-servicesamazon-s3aws-lambdaaws-kms

解决方案


要在添加对象时使用 KMS 加密,请使用服务器端加密选项:

  • ServerSideEncryption ="aws:kms"- 启用 KMS 加密
  • SSEKMSKeyId=keyId- 指定要用于加密的 KMS 密钥。如果您未指定此项,AWS 将仅使用您的默认帐户密钥。

例如:

s3_resource.Bucket(bucket_name).put_object(
        Key=s3_path,
        Body=data,
        ServerSideEncryption ="aws:kms"
    )

您可能还需要在您的 boto 配置文件中启用 v4 登录。


推荐阅读