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.5
、paperclip ~>4.1
、aws-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']
}
有时会出现区域未定义导致配置失败的问题。
尽管这个错误出现在其他 SO 问题中,但我无法解决问题,所以我正在寻求帮助。
我正在使用 rails 4.2.5
、paperclip ~>4.1
、aws-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']
}
有时会出现区域未定义导致配置失败的问题。