2016-05-17 82 views
0

即使此错误出现在其他SO问题中,我也无法工作,因此我正在寻求帮助。Rails 4.2 + Paperclip +亚马逊S3:getaddrinfo:nodename,也不提供服务名称

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

我已经crekedted bucketIAM User谁拥有AmazonS3FullAccess权限和他的凭据我试图从Rails这样连接。

配置/环境/ development.rb

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

应用程序/模型/ 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 

在控制台中,我可以看到回形针可以调整图片的大小,但它是不能够上传它到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 

任何帮助将高度赞赏

回答

3

你可以尝试配置模型是这样的:

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'] 
    } 

有时候问题是一个区域没有被定义,并且配置失败。

+0

谢谢你。这也可以移入初始化器。关键字(使用这个宝石版本)是在** paperclip_defaults **哈希中声明':s3_region',在**:s3_credentials **哈希中声明':region'。非常感谢,我失去了很多时间来对抗这个。 – mariowise