【发布时间】:2017-09-25 16:35:05
【问题描述】:
我正在尝试从 AWS S3 到 GCP 存储的简单 rsync(或 cp)。 例如
gsutil rsync -d -r -n s3://mycustomer-src gs://mycustomer-target
在 GCP 上的虚拟机上尝试此操作时,我收到如下错误消息。 请注意,如果我在 VM 上安装 aws cli,那么我可以访问/浏览 AWS S3 内容就好了。 AWS 凭证存储在 ~/.aws/credentials 文件中。
Building synchronization state...
Caught non-retryable exception while listing s3://musiclab-etl-dev/: AccessDeniedException: 403 InvalidAccessKeyId
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>ASIAJ3XGCQ7RGZYPD5UA</AWSAccessKeyId><RequestId>CE8919045C68DEC4</RequestId><HostId>i7oMBM61US3FyePJka8O+rjoHSo1rIZbRGnVZvIGkjEVPh6lXdbp03pZOtJ68F3pPdAAW1UvF5s=</HostId></Error>
CommandException: Caught non-retryable exception - aborting rsync
这是 gsutil 中的错误吗?任何解决方法或提示表示赞赏。
注意 - 客户的 AWS 账户是为联合访问设置的,并且需要使用 AWS 密钥,因为使用类似于此的脚本获得 - https://aws.amazon.com/blogs/security/how-to-implement-a-general-solution-for-federated-apicli-access-using-saml-2-0/ AWS 密钥设置为在会话令牌过期时过期。
如果我使用具有典型 AWS 密钥(不会过期)的不同 AWS 账户(无联合),则 rsync(或 cp)可以正常工作。
【问题讨论】:
-
在我看来,除了 aws_access_key_id 和 aws_secret_access_key 之外,'gsutil' 不考虑也用于凭证验证的 aws_session_token
-
在试用 Cloud Storage Transfer 功能时似乎也存在此问题。
标签: amazon-web-services amazon-s3 google-cloud-platform google-cloud-storage gsutil