2

很简单的东西(我想)。我正在尝试创建一个预签名的 url,然后我可以用它来下载文件。这些密钥对应的 IAM 用户拥有 fullS3Acess,直到我弄清楚为什么这个签名不起作用。

  def presigned_url
    document = Document.find(params[:id])

    signer = get_presigner
    signer.presigned_url(:get_object, bucket: ENV['S3_BUCKET_NAME'], key: document.s3_path)
  end

  def get_presigner
    credentials = Aws::Credentials.new(
        ENV['FULL_AWS_ACCESS_KEY_ID'],
        ENV['FULL_AWS_SECRET_ACCESS_KEY']
    )
    client = Aws::S3::Client.new(
        region: 'us-west-2',
        credentials: credentials
    )
    Aws::S3::Presigner.new(client: client)
  end

当我尝试在浏览器中打开从 presigned_url 方法返回的 url 时,会导致 SignatureDoesNotMatch 错误。关于为什么这是真的有什么想法吗?我想我已经排除了权限作为答案,因为我已经将该用户的 IAM 权限增加到了应有的位置。有任何想法吗?

4

0 回答 0