Rails 4.2 + Paperclip + Amazon s3: getaddrinfo: nodename 或 servname 提供,或未知

Rails 4.2 + Paperclip + Amazon s3: getaddrinfo: nodename nor servname provided, or not known

尽管这个错误出现在其他 SO 问题中,但我无法解决问题,所以我正在寻求帮助。

我正在使用 rails 4.2.5paperclip ~>4.1aws-sdk <2.0 将附件存储到 Amazon S3

我已经创建了一个 bucket 和一个具有 AmazonS3FullAccess 权限的 IAM User,我正尝试通过他的凭据从 Rails 像这样连接。

config/environments/development.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => 'bucket-name',
    :access_key_id => '****',
    :secret_access_key => '****',
  }
}

app/models/user.rb

has_attached_file :avatar, 
  :styles => { :medium => "300x300#", :thumb => "100x100#" }, 
  :default_url => "/img/avatar-missing.jpg",
  :storage => :s3,
  :s3_host_name => "s3-us-east-1.amazonaws.com"

我使用此策略配置了存储桶权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

但是当我尝试向它上传内容时,它抛出了这个 ******* 错误:

getaddrinfo: nodename nor servname provided, or not known

在控制台中我可以看到 paperclip 可以调整图片大小但无法将其上传到 Amazon S3

[paperclip] saving /users/avatars/000/000/001/original/10382845_246916218831306_3480489092212800336_n.jpg
[AWS S3 200 2.304022 3 retries] put_object(:acl=>:public_read,:bucket_name=>"bucket-name",:content_length=>41431,:content_type=>"image/jpeg",:data=>Paperclip::UploadedFileAdapter: 10382845_246916218831306_3480489092212800336_n.jpg,:key=>"users/avatars/000/000/001/original/10382845_246916218831306_3480489092212800336_n.jpg") SocketError getaddrinfo: nodename nor servname provided, or not known

任何帮助将不胜感激

你能试试这样配置模型吗:

  has_attached_file :my_file,
    :storage => :s3,
    :default_url => "/default.default",
    :s3_region => ENV['AWS_REGION'],
    :s3_credentials => {
      :bucket => ENV['AWS_BUCKET_NAME'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
      :region => ENV['AWS_REGION']
    }

有时会出现区域未定义导致配置失败的问题。