首页 文章

如何授予对特定 Cloud 服务的s3图像URL访问权限

提问于
浏览
0

默认情况下,当在s3中上传图像时,网址是私有的 . 我可以通过在控制台上添加权限来公开它们,但我不想为每个图像都这样做,想要自动化它 . 我正在使用非AWS Cloud 服务,通过URL访问图像 . 该服务无法访问该图像,因为网址是私有的 . 如何将网址公开给特定服务?让整个桶公开不是一种选择 .

2 回答

  • 1

    通过在创建对象时在初始上载请求中设置请求标头 x-amz-acl: public-read ,可以使S3中的各个对象成为公共对象 .

    http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html#put-object-acl-specific-request-headers

    公共“特定服务”不是一个有效的概念 . S3没有意识到哪个“服务”正在访问它(除非“服务”碰巧是CloudFront,它具有可用于授权下载的Origin Access Identities,但我怀疑这里没有相关性) . 如果服务使用提供的URL,您只需向服务提交预先签名的URL,以便下载授权 .

  • 0

    我写了一个python脚本,吐出预先签名的网址 .

    import sys
     from boto.s3.connection import S3Connection
    
     def sign(bucket, path, access_key, secret_key, https, expiry):
           c = S3Connection(access_key, secret_key)
           return c.generate_url(
                  expires_in=long(expiry),
                  method='GET',
                  bucket = bucket,
                  key=path,
                  query_auth=True,
                  force_http=(not https)
        )
    

    任何 Cloud 服务都可以访问预先签名的URL,只要它们由授权用户创建即可 . 谷歌很乐意接受这些网址 . 也可以添加到期时间,从而避免将整个桶公开 .

相关问题