尝试将AWS S3数据库备份到heroku postgres时出现403错误

时间:2015-07-13 14:31:44

标签: django database postgresql heroku amazon-s3

我试图在Heroku上部署我的Django应用程序。我已经创建了一个Heroku Postgres数据库,我想从AWS S3将现有的PostgreSQL数据库导入其中。我跟着tutorial in the Heroku docs跟着信。我创建了一个Heroku Postgres数据库并将其提升为主数据库。我跟着Heroku's AWS S3 tutorial设置了所有配置变量,以便heroku可以访问我的S3存储桶。但是当我运行heroku pg:backups restore 'https://s3.amazonaws.com/<bucket name>/<database name>' DATABASE_URL时,我收到一条错误消息,说“#34;发生了错误,您的备份还没有完成。&#34;

以下是heroku pg:backups info的完整输出:

=== Backup info: r012
Database:    BACKUP
Started:     2015-07-13 13:43:30 +0000
Finished:    2015-07-13 13:43:30 +0000
Status:      Failed
Type:        Manual
Backup Size: 0.00B
=== Backup Logs
2015-07-13 13:43:30 +0000: 2015/07/13 13:43:30 aborting: could not write to output stream: Expected HTTP Status 200, received: "403 Forbidden"
2015-07-13 13:43:30 +0000: pg_restore: [custom archiver] could not read from input file: end of file
2015-07-13 13:43:30 +0000: waiting for restore to complete
2015-07-13 13:43:30 +0000: restore done
2015-07-13 13:43:30 +0000: waiting for download to complete
2015-07-13 13:43:30 +0000: download done

当然,由于这是403错误,我认为我的身份验证有问题。我已经运行heroku config并对所有配置变量进行了三重检查。 AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY和DATABASE_URL环境变量都是正确的,并且与我在AWS和Heroku Postgres GUI中看到的相匹配。

为什么我会看到此错误消息?

3 个答案:

答案 0 :(得分:3)

好吧,我觉得愚蠢,但问题的原因是我忘了在我的AWS网址中添加“.dump”到文件名的末尾。

答案 1 :(得分:3)

同样的错误从AWS拉入Heroku

如果未在AWS存储桶内的转储文件上正确设置权限,Heroku有时会拒绝导入备份/转储文件。 (如果Heroku无法访问该文件,则无法上传该文件。)

您可以在操作&gt;下找到权限设置。单击属性按钮或单击该文件,然后单击按钮&#34;属性&#34;在右边。

一个简单的解决方法是暂时使转储文件公开,执行heroku还原,然后锁定或删除转储文件。

答案 2 :(得分:-1)

对于Windows用户;
heroku pg:backups:restore "https://s3.amazonaws.com/me/items/3H0q/mydb.dump" DATABASE_URL

根据官方文档,如果您正在使用Windows,请务必在远程网址周围使用双引号。 see official docs