1

我正在尝试通过 Ruby 脚本将 cache_control 添加到 s3 存储桶中的图像,但我一直遇到Access Denied (Aws::S3::Errors::AccessDenied)错误。我所有的环境变量都是正确的,并且使用脚本创建新存储桶没有问题,只是每次我尝试添加 cache_control 时都会引发错误。

我已经尝试深入研究aws-sdk文档https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Object.html,但我一直无法理解围绕我的脚本有什么问题。

以下是代码运行时的样子:

  def initialize(region: 'us-west-2', bucket_name: 'project-images')
    @bucket =  Aws::S3::Resource.new(region: region).bucket(bucket_name)
  end

  def copy(to:, from:)
     bucket.objects(prefix: from).each do |object|
      _, filename = object.key.split("/")
      object.copy_to(bucket: bucket.name, key: "#{to}/#{filename}")
    end
  end

以下是当我尝试添加 cache_control 和其他选项时收到拒绝访问错误时的代码:

  def initialize(region: 'us-west-2', bucket_name: 'project-images')
    @bucket =  Aws::S3::Resource.new(region: region).bucket(bucket_name)
  end

  def copy(to:, from:)
     bucket.objects(prefix: from).each do |object|
      _, filename = object.key.split("/")
      object.copy_to(bucket: bucket.name, key: "#{to}/#{filename}", acl: "public-read", cache_control: "max-age=154400", metadata_directive: "REPLACE")
    end
  end

任何帮助将不胜感激!

4

0 回答 0