将对象从一个存储桶复制到另一个存储区时,S3访问被拒绝



我正在AWS EB上运行一个ruby on rails项目。Ruby版本是2.6。我想使用以下代码将文件从源bucket复制到目标bucket。但接收错误:Aws::S3::Errors::AccessDenied。AWS访问密钥是正确的,我可以将文件放入源bucket;源bucket和目标bucket也处于相同的刚性中。我不明白为什么会出现这个错误。你能帮忙吗?

s3 = Aws::S3::Resource.new
s3_src_key = terminal_id
s3_key = 'company/' + uuid
s3_src_obj = s3.bucket(ENV["AWS_PUBLIC_BUCKET"]).object(s3_src_key)
s3_obj = s3.bucket(ENV["AWS_S3_BUCKET"]).object(s3_key)
s3_src_obj.copy_to(s3_obj)

不是答案,而是故障排除步骤:

  1. 这两个bucket是否在同一个AWS帐户中?如果没有,请参阅https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/
  2. 这两个bucket中的任何一个是否启用了KMS加密?如果是,则需要向IAM用户或实例配置文件授予读取kms:Decrypt和写入kms:Encrypt的访问权限。如果您的AWS帐户不拥有任何KMS密钥,请参阅https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html
  3. 是否有任何存储桶启用了版本控制?如果是,请确保包含用于写入的s3:PutObjectVersion和用于读取的s3:GetObjectVersion
  4. 你有bucket或object ACL吗?如果是,请确保他们允许你读写

如果以上都不适用,您可能需要分享更多信息,如下所示:

  1. 您有Bucket策略吗?如果是,请将其粘贴在此处以进一步检查
  2. 请粘贴IAM用户策略,以便我们可以与您一起跟踪它

相关内容

  • 没有找到相关文章

最新更新