【问题标题】:Programmatically unset encryption for a file in aws s3以编程方式取消设置 aws s3 中文件的加密
【发布时间】:2017-10-28 23:38:45
【问题描述】:

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

给出以下弹出窗口

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

我已经尝试过添加here 中提到的权限。还用 python boto3 做了一些实验。然而到目前为止还没有取得任何成功。 提前致谢!

【问题讨论】:

  • 服务器端加密设置不应以任何方式影响下载文件的能力。您要解决的实际问题是什么?
  • 感谢您的回复。我基本上是在尝试使用 aws 工具进行构建自动化。我对aws很陌生。我有使用 webhooks 从 github 使用基于 jenkins 的构建自动化的经验。现在,我想使用 aws 实现相同的目的。因此,我创建了一个将其连接到代码管道的代码构建,我可以使用 aws lambda 函数或从 boto3 客户端触发管道(我已经这样做了)。这个想法是在代码构建阶段之后连接另一个 lambda 函数,该函数将发送一封邮件,其中包含构建过程的结果以及生成的 apk 的可下载链接。 (续)
  • 当前的问题是,从 aws 代码代码构建上传到 s3 的工件默认情况下是通过 aws-kms 加密的,当单击 s3 存储桶中的该链接时,它会给出错误消息, Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.
  • 您是如何准确获取/生成指向 S3 中文件的链接的?
  • 我没有为将工件上传到 s3 做任何事情。该文件是根据 buildspec.yml 文件生成的(工件),并且始终具有相同的名称,并且存储在S3 中的固定位置。 buildspec 只是说明了要上传的工件的位置,在 AWS 代码构建中,我只提到了 S3 存储桶名称。我假设我在 S3 中看到的上传工件的链接是不变的。

标签: amazon-web-services amazon-s3 boto3 aws-codebuild


【解决方案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'))

config=Config(signature_version='s3v4')part 是访问加密文件的诀窍。

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

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

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

  1. s3_client = boto3.client('s3',aws_access_key_id='&lt;YOUR ACCESS KEY&gt;', aws_secret_access_key='&lt;YOUR SECRET KEY&gt;', 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'})

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2015-03-07
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2013-01-07
    • 2015-02-17
    • 2018-03-16
    相关资源
    最近更新 更多