s4cmd 同步两个桶访问被拒绝

s4cmd sync two buckets access denied

我正在尝试同步两个 s3 存储桶:

s4cmd --dry-run sync s3://cgl-rnaseq-recompute-fixed/gtex s3://rnaseq.toil.20k/gtex

但我收到以下错误:

[Exception] An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
[Thread Failure] An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

源存储桶是公开可用的。第二个桶是我的,我可以访问它:

[centos@ip-172-30-3-12 data]$ s4cmd ls s3://rnaseq.toil.20k/
                 DIR s3://rnaseq.toil.20k/gtex/
                 DIR s3://rnaseq.toil.20k/pnoc/
                 DIR s3://rnaseq.toil.20k/target/
                 DIR s3://rnaseq.toil.20k/tcga/

此外,我无法在源存储桶上使用 s4cmd ls,但我可以使用 s3cmd:

[centos@ip-172-30-3-12 data]$ s4cmd ls s3://cgl-rnaseq-recompute-fixed/gtex
[Exception] An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
[Thread Failure] An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

[centos@ip-172-30-3-12 data]$ s3cmd ls --requester-pays s3://cgl-rnaseq-recompute-fixed/gtex
                       DIR   s3://cgl-rnaseq-recompute-fixed/gtex/
2016-06-03 17:02    435553   s3://cgl-rnaseq-recompute-fixed/gtex-manifest

可能出了什么问题?任何建议将不胜感激。

要实现 s3cmd 行为,请使用通配符:

s4cmd sync s3://bucket/path/dirA/* s3://bucket/path/dirB/

注意 s4cmd 不支持没有尾部斜杠的 dirA,表明 dirA/* 是 rsync 所支持的。

所以在你的情况下你必须使用。

s4cmd --dry-run sync s3://cgl-rnaseq-recompute-fixed/gtex/* s3://rnaseq.toil.20k/gtex

查看此 s4cmd 文档非常有帮助。

https://github.com/bloomreach/s4cmd