以编程方式取消设置aws s3中文件的加密

ran*_*ose 5 amazon-s3 amazon-web-services boto3 aws-codebuild

我正在通过执行android构建aws code build.默认应用生成的apk文件server side encryption (aws-kms)我可以通过取消选择ASW-KMS从s3存储桶中单击如下所示手动取消设置加密

它给出了以下弹出窗口

在这里None手动选择选项将使链接可下载.我想以编程方式实现这一目标.

我已经尝试过添加这里提到的权限.也用python boto3做了一些实验.但到目前为止没有取得任何成功.提前致谢!

ran*_*ose 1

好的,我有一个解决方法。创建加密(服务器端 aws-kms)工件并将其上传到 s3(作为 aws 代码构建的一部分)后,使用'ACL':'public-read'. 步骤如下:

s3 = boto3.resource('s3',aws_access_key_id='<YOUR ACCESS KEY>', aws_secret_access_key='<YOUR SECRET ACCESS KEY>', region_name = 'ap-southeast-1', config=Config(signature_version='s3v4'))
Run Code Online (Sandbox Code Playgroud)

config=Config(signature_version='s3v4')部分是访问加密文件的技巧。

copy_source = {'Bucket': 'SOURCE BUCKET','Key':'test/app-debug.apk'}
s3.meta.client.copy(copy_source, 'DESTINATION BUCKET', 'app-debug.apk', {'ACL':'public-read'})
Run Code Online (Sandbox Code Playgroud)

从 S3,您将获得一个可下载的 URL。

或者,您可以直接从加密的 S3 项目获取可下载链接,而无需将其复制到另一个存储桶。然而,问题是s3v4 加密的最长有效期为 7 天。因此该链接最多只能工作 7 天。以下是相同的步骤:

  1. s3_client = boto3.client('s3',aws_access_key_id='<YOUR ACCESS KEY>', aws_secret_access_key='<YOUR SECRET KEY>', region_name='ap-southeast-1', config=Config(signature_version='s3v4'))
  2. url = s3_client.generate_presigned_url(ClientMethod='get_object', Params={'Bucket':'SOURCE BUCKET', 'Key':'test/app-debug.apk'})