7

我正在尝试设置我的 rails 应用程序,以按照这些说明使用asset_sync gem将其资产上传到亚马逊的AWS S3 。我知道我的 S3 配置正确,因为我的应用程序能够将图像上传到 S3。我很确定我的所有设置都是正确的:

FOG_DIRECTORY => mybucketname
FOG_PROVIDER  => AWS
FOG_REGION    => s3-us-west-2

但是我不断收到错误消息:

-bash> heroku run rake assets:precompile --remote staging
Running rake assets:precompile attached to terminal... up, run.1
AssetSync: using default configuration from built-in initializer
mkdir -p /app/public/assets
...
mkdir -p /app/public/assets
AssetSync: Syncing.
rake aborted!
getaddrinfo: Name or service not known                                # <-- error

在本地编译会产生稍微不同的错误:

-bash> bundle exec rake assets:precompile
AssetSync: using default configuration from built-in initializer
mkdir -p /Users/bart/Dev/MyApp/myapp/public/assets
...
mkdir -p /Users/bart/Dev/MyApp/myapp/public/assets
AssetSync: Syncing.
rake aborted!
getaddrinfo: nodename nor servname provided, or not known             # <-- error
4

1 回答 1

10

我将错误追溯到Fog中的“连接”行asset_sync,它是运行时依赖项之一,结果发现myFOG_REGION设置不正确。就我而言,该地区应该是us-west-2,而不是s3-us-west-2

自从我配置我的 S3 帐户已经有一段时间了,所以我首先尝试通过登录 AWS S3 控制台、单击存储桶名称,然后单击“属性”来确定我正在使用的区域。在那里,该地区被列为俄勒冈州。好吧,那没有用。因此,我单击了现有存储桶之一的对象和文件夹浏览器,直到找到资产,查看其“属性”,并看到“链接”:

https:// s3-us-west-2 .amazonaws.com/mybucketname/uploads/mymodel/image/1135/myimage.jpg

我确信这s3-us-west-2是正确的,直到我注意到Fog 添加了 s3- 前缀

无论如何,我现在知道,一旦您通过名称(例如俄勒冈州)找到您所在的地区,您可以在此 S3 地区列表中查找它(它是Location Constraint列下的名称)。

我希望这可以帮助别人。

于 2012-08-03T16:07:18.240 回答