Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 您是否可以设置从S3 bucket子文件夹到GCS bucket的传输,仅使用访问S3子文件夹而不是根文件夹的凭据?_Amazon S3_Google Cloud Platform_Google Cloud Storage_Subdirectory_Data Transfer - Fatal编程技术网

Amazon s3 您是否可以设置从S3 bucket子文件夹到GCS bucket的传输,仅使用访问S3子文件夹而不是根文件夹的凭据?

Amazon s3 您是否可以设置从S3 bucket子文件夹到GCS bucket的传输,仅使用访问S3子文件夹而不是根文件夹的凭据?,amazon-s3,google-cloud-platform,google-cloud-storage,subdirectory,data-transfer,Amazon S3,Google Cloud Platform,Google Cloud Storage,Subdirectory,Data Transfer,我希望设置一个传输作业,将存储在S3存储桶中的文件加载到GCS存储桶中。我拥有的凭据使我能够访问包含S3中所需文件的文件夹,但不能访问更高级别的文件夹 当我尝试使用“Amazon S3 bucket”下的S3 bucket名称设置传输作业,并填写访问密钥ID和机密访问密钥时,由于我的凭据有限,访问将被拒绝。但是,如果我添加额外的路径信息作为前缀项,例如“Production/FTP/CompanyName”,并且我确实有权访问此文件夹,则访问仍然被拒绝 似乎我无法克服我无法访问根目录的事实。这有

我希望设置一个传输作业,将存储在S3存储桶中的文件加载到GCS存储桶中。我拥有的凭据使我能够访问包含S3中所需文件的文件夹,但不能访问更高级别的文件夹

当我尝试使用“Amazon S3 bucket”下的S3 bucket名称设置传输作业,并填写访问密钥ID和机密访问密钥时,由于我的凭据有限,访问将被拒绝。但是,如果我添加额外的路径信息作为前缀项,例如“Production/FTP/CompanyName”,并且我确实有权访问此文件夹,则访问仍然被拒绝

似乎我无法克服我无法访问根目录的事实。这有什么办法吗?

保罗


很可能您的IAM角色缺少s3:ListBucket权限。您能否将IAM角色更新为具有s3:ListBucket、s3:GetBucketLocation并重试?

根据文档:

存储传输服务使用 项目-[$project\u NUMBER]@storage-transfer-service.iam.gserviceaccount.com 用于从云存储源存储桶移动数据的服务帐户

服务帐户必须对源具有以下权限 桶:

storage.bucket.get允许服务帐户获取 水桶。总是需要的

storage.objects.list允许服务帐户在 水桶总是需要的

storage.objects.get允许服务帐户读取 水桶总是需要的

storage.objects.delete允许服务帐户删除中的对象 水桶。如果设置deleteObjectsFromSourceAfterTransfer,则为必填项 这是真的

roles/storage.objectViewer和roles/storage.legacyBucketReader 角色一起包含始终需要的权限。这个 roles/storage.legacyBucketWriter角色包含 storage.objects.delete权限。以前的服务帐户 必须为执行转移分配所需的角色


您必须在AWS bucket上设置此权限。

如果您想授予对子文件夹的访问权限,AWS权限策略应如下所示

{ 版本:2012-10-17, 声明:[ { 效果:允许, 行动:[ s3:GetBucketLocation ], 资源:[ arn:aws:s3::, arn:aws:s3::/* ] }, { 效果:允许, 行动:[ s3:列表*, s3:得到* ], 资源:arn:aws:s3:, 条件:{ 线状:{ s3:前缀:[ /* ] } } }, { 效果:允许, 行动:[ s3:列表*, s3:得到* ], 资源:[ arn:aws:s3::/, arn:aws:s3:://* ], 条件:{} } ] }
你能提供你得到的准确错误吗?嗨,普拉迪普。是,消息为“无法获取源S3存储桶的位置”。其他详细信息:访问被拒绝。谢谢,但这太糟糕了。我为什么要在根级别授予此权限?当其他工具(如cyberduck)可以在没有此许可的情况下工作时,为什么它们不能?@Behrosikander这只是因为谷歌出于任何原因都不想在其web控制台界面中实现对更深层s3目录的访问以进行传输。您可以使用VM实例作为中介手动执行此操作;如果你愿意,我会把这个写下来作为答案,因为我必须这么做@jkf你会怎么做呢?