使用 KMS 加密文件并推送到 S3

Encrypt a file using KMS and push to S3

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

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

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

要在添加对象时使用 KMS 加密,请使用 server side encryption 选项:

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

例如:

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

您可能还需要 enable v4 signing 在您的 boto 配置文件中。