【问题标题】:Is there a way to generate a presigned url for an S3 object using AWS CLI?有没有办法使用 AWS CLI 为 S3 对象生成预签名 URL?
【发布时间】:2015-03-05 14:24:56
【问题描述】:

我查看了aws s3 和aws s3api 的文档,但看不到任何与生成预签名网址相关的内容。 AWS Web 文档仅显示使用 Java、.Net 和 VisualStudio 执行此操作的示例。

http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

现在可以在 aws cli 中使用本机: http://docs.aws.amazon.com/cli/latest/reference/s3/presign.html

【讨论】:

  • 感谢您的回答。请注意,您需要有一个最近的 AWS CLI 才能工作:s3.amazonaws.com/aws-cli/awscli-bundle.zip
  • 这会生成一个 GET 请求。如果我想要一个 POST/PUT 请求怎么办?
  • @Jeroen 很遗憾,没有提到 AWS CLI 对 PUT 的预签名支持,只有 Java/.NET/Ruby SDK。
  • @Jeroen @alexander-klimetschek 这是可能的,但它有点hacky。首先将/usr/local/lib/python2.7/dist-packages/awscli/customizations/s3/subcommands.py 中的get-object 更改为put-object。然后使用 aws cli 进行预签名。最后像这样使用Curl:echo toto | curl --data-binary @- <url> -X PUT -H 'Content-Type:' 除了从 http 库发送字节之外,sdks 不会做任何其他魔法。
【解决方案2】:

我不确定这是否是您正在寻找的...

签署 S3 URL 以提供有限的公共访问权限

s3cmd signurl s3://BUCKET/OBJECT <expiry_epoch|+expiry_offset>

http://s3tools.org/usage

它不是直接的 AWS API。它是第 3 方工具。

【讨论】:

    【解决方案3】:

    使用aws s3 可以做到这一点,请尝试使用presign 选项。例如,如果您想从存储桶中获取对象,请尝试以下命令:

    aws s3 presign s3://bucket_name/file_name
    

    将 bucket_name 和 file_name 替换为您要获取的对象。

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      相关资源
      最近更新 更多