使用 iam 配置文件和从 aws 获取 url 的雾化问题

Fog issue using iam profile and fetching urls from aws

使用带有 AWS 实例配置文件的 Fog,3 天后我的 s3 url 不再有效。我收到了新的网址,但 AWS 返回的错误是提供的令牌已过期。重新启动应用程序可使一切恢复正常,但除了来自 AWS 的错误外,没有其他错误。

我了解到切换到密钥应该可以解决我的问题,但我希望保留我的 iam 配置文件。有人 运行 参与其中吗?

我的 Carrierwave 配置如下,我使用的是 Carrierwave 版本 0.9.0 和 Fog 1.28.0

CarrierWave.configure do |config|
  fog_credentials = {
    :provider               => 'AWS',
    :region                 => 'us-east-1',
    :path_style             => true,
    :host                   => 's3-external-1.amazonaws.com'    # routes all requests to Northern Virginia datacenter
  }

  if defined?(Settings.use_iam_profile) && Settings.use_iam_profile
    fog_credentials[:use_iam_profile] = true
  else
    fog_credentials[:aws_access_key_id] = Settings.s3_access_key
    fog_credentials[:aws_secret_access_key] = Settings.s3_secret_key
  end

  config.fog_credentials = fog_credentials
  config.fog_directory  = Settings.s3_bucket_name                 # required
  config.fog_public     = false                                   # optional, defaults to true
  config.root = File.join(Rails.root, 'private')
end

所以这个 link 得到了更新,基本上问题是虽然在使用雾下载文件时正确刷新了签名令牌,但在签署 S3 URL 时没有刷新。

有一个 pull request fog 解决了这个问题