Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从S3读取KMS加密文件_Python_Amazon Web Services_Amazon S3_Aws Lambda_Boto3 - Fatal编程技术网

Python 从S3读取KMS加密文件

Python 从S3读取KMS加密文件,python,amazon-web-services,amazon-s3,aws-lambda,boto3,Python,Amazon Web Services,Amazon S3,Aws Lambda,Boto3,如何使用boto3资源从S3存储桶读取KMS加密文件 下面是我用来读取非加密文件的代码段- s3 = boto3.resource('s3') obj = s3.Object(bucket_name, key) body = obj.get()['Body'].read() print(' body = {}'.format(body)) 这里有一个有用的答案 不,下载时不需要指定AWS KMS密钥ID SSE KMS来自S3存储桶的加密对象。相反,你需要 解密AWS KMS密钥的权限 因此,

如何使用boto3资源从S3存储桶读取KMS加密文件

下面是我用来读取非加密文件的代码段-

s3 = boto3.resource('s3')
obj = s3.Object(bucket_name, key)
body = obj.get()['Body'].read()
print(' body = {}'.format(body))

这里有一个有用的答案

不,下载时不需要指定AWS KMS密钥ID SSE KMS来自S3存储桶的加密对象。相反,你需要 解密AWS KMS密钥的权限

因此,您不需要在GetObject请求上提供KMS信息(这是boto3资源级方法在幕后所做的),除非您正在这样做。您只需要拥有访问KMS密钥进行解密的权限。S3/KMS将为您完成其余工作


您可以根据链接文章配置与Lambda函数的IAM角色关联的IAM策略。

将KMS权限(针对相关KMS密钥)添加到凭据并针对KMS加密对象重新运行此代码时会发生什么情况?我在Lambda函数中运行此操作,你能告诉我怎么做吗?配置Lambda函数的IAM角色的策略以包含kms:*(暂时),然后使用kms加密对象进行测试。谢谢@jarmod。这也有帮助。我正在寻找传递KMS键以读取数据的方法。然而,它看起来不需要,对-你不需要在GetObject请求上提供任何KMS信息(这是boto3资源级方法在幕后所做的),除非你在做CMK。您只需要拥有访问KMS密钥进行解密的权限。很高兴你能让它工作。如果有帮助的话,我可以写下来作为答案。