Postgresql Heroku Postgres:AWS s3预签名URL不工作

Postgresql Heroku Postgres:AWS s3预签名URL不工作,postgresql,amazon-web-services,amazon-s3,heroku,Postgresql,Amazon Web Services,Amazon S3,Heroku,我犯了6个小时的错误,快发疯了 我已经使用CLI创建了一个heroku应用程序,并成功地推送了git,但是在应用程序运行之前,我需要使用db.create_all()初始化一组表,但是我的本地主机postgres中有6gb的数据,我希望迁移到heroku以供使用 以通常的方式实例化表(create_all)将不起作用,因为索引页需要表中的某些内容,因此我的表必须预先填充所述localhost数据才能起作用 我完全按照这里的文档操作,导出了我的.dump文件并将其上载到我的bucket: 公共共享

我犯了6个小时的错误,快发疯了

我已经使用CLI创建了一个heroku应用程序,并成功地推送了git,但是在应用程序运行之前,我需要使用
db.create_all()
初始化一组表,但是我的本地主机postgres中有6gb的数据,我希望迁移到heroku以供使用

以通常的方式实例化表(create_all)将不起作用,因为索引页需要表中的某些内容,因此我的表必须预先填充所述localhost数据才能起作用

我完全按照这里的文档操作,导出了我的.dump文件并将其上载到我的bucket:

公共共享已启用,我已使用
setx
命令在AWS CLI中设置
ACCESS\u KEY\u ID
SECRET\u ACCESS\u KEY
。我还设置了heroku配置:set AWS_ACCESS_KEY_ID=matching_AWS_cli_blah AWS_SECRET_ACCESS_KEY=matching_AWS_cli blah

然后使用命令
aws s3 presign s3\u url
我复制了输出(我将添加与我使用的aws文档不同的外观)

我的外观示例(随机更改一些数字)
https://mybucketname.s3.eu-west-2.amazonaws.com/mydb.dump?X-Amz算法=AWS4-HMAC-SHA256&X-Amz-Credential=LLLLL 4C7LLLLLLLNLLQ%2Fnnnn08%2Feu-west-2%2Fs3%2Faws4\u请求&X-Amz-Date=20201208T004613Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=LL9D80NNC457EA838FDNN4A25B0C9LL066F54FF8ACF42AFNNNA8877该文档提供了一个整洁的AWSAccessKeyId=变量

我只有一个bucket,并且
阻止公共访问(bucket设置)
设置为OFF,文件本身可以公开共享。对象URL初始化下载罚款,包括匿名

使用以下命令时(根据heroku文档)

heroku pg:备份:还原'https://mybucketname.s3.eu-west-2.amazonaws.com/mydb.dump?X-Amz算法=AWS4-HMAC-SHA256&X-Amz-Credential=LLLLL 4C7LLLLLLLNLLQ%2Fnnnn08%2Feu-west-2%2Fs3%2Faws4_请求&X-Amz-Date=20201208T004613Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=LL9D80NNC457EA83298FDNN4A25B0C9LL066F54FF8ACF42DNNA8877'数据库\u URL

我得到以下输出到终端

Restoring... !
 !    An error occurred and the backup did not finish.
 !
 !    waiting for restore to complete
 !    pg_restore finished with errors
 !    waiting for download to complete
 !    download finished with errors
 !    please check the source URL and ensure it is publicly accessible
 !
 !    Run heroku pg:backups:info r001 for more details.
'X-Amz-Credential' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Date' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Expires' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-SignedHeaders' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Signature' is not recognized as an internal or external command,
operable program or batch file.
日志文件中显示

=== Backup r001
Database:         BACKUP
Started at:       2020-12-08 00:47:33 +0000
Finished at:      2020-12-08 00:47:34 +0000
Status:           Failed
Type:             Manual
Backup Size:      0.00B (0% compression)

=== Backup Logs
2020-12-08 00:47:34 +0000 2020/12/08 00:47:34 aborting: could not write to output stream: Expected HTTP Status 200, received: "400 Bad Request"
2020-12-08 00:47:34 +0000 pg_restore: error: could not read from input file: end of file
2020-12-08 00:47:34 +0000 waiting for restore to complete
2020-12-08 00:47:34 +0000 pg_restore finished with errors
2020-12-08 00:47:34 +0000 waiting for download to complete
2020-12-08 00:47:34 +0000 download finished with errors
2020-12-08 00:47:34 +0000 please check the source URL and ensure it is publicly accessible
有人能指出我哪里出错了吗


谢谢

无论何时在命令行上使用预签名URL,都需要引用它们。它们包含对shell有意义的结构,如
&
。因此,通常您应该将预签名URL用双引号括起来。每当您在命令行上使用预签名URL时,您都需要将它们引起来。它们包含对shell有意义的结构,如
&
。因此,通常应该将预先签名的URL用双引号括起来。