我正在通过aws code build
执行Android构建。生成的apk文件默认情况下应用server side encryption (aws-kms)
我可以通过取消选择ASW-KMS从s3存储桶中单击如下所示手动取消设置加密
,它提供以下弹出窗口
手动选择None
选项会使链接可下载。 我希望以编程方式实现此目标。
我已经尝试按照提及的here添加权限。也用python boto3做了一些实验。但到目前为止没有取得任何成功。 提前致谢!
答案 0 :(得分:1)
好的,我有一个解决方法。在创建encypted(服务器端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')
部分是访问加密文件的技巧。
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开始,您将获得可下载的网址。
或者,您可以直接从加密的S3项目获取可下载链接,而无需将其复制到另一个存储桶。但是,问题是 s3v4加密的最长有效期为7天。因此链接最多只能工作7天。以下是相同的步骤:
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'))
url = s3_client.generate_presigned_url(ClientMethod='get_object', Params={'Bucket':'SOURCE BUCKET', 'Key':'test/app-debug.apk'})