Amazon web services 第二个相同存储桶的AWS s3访问被拒绝

Amazon web services 第二个相同存储桶的AWS s3访问被拒绝,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,在AWS S3面板中,我创建了与我的帐户名相同的bucket(eu-central-1)。使用rest服务、我的用户密钥和密钥,我可以访问我的第一个存储桶,我通过rest服务发送图像,删除它们,获取它们等等 我创建了第二个bucket(eu-central1),并选择从第一个bucket获取设置。第二个桶当然不是我的账户 当我调用列表bucket时,我得到两个bucket,其中一个与我的帐户名同名。这就是工作的水桶 这两个桶都阻止了公众访问。所以,唯一的方法是使用签名头通过rest服务发送图像

在AWS S3面板中,我创建了与我的帐户名相同的bucket(eu-central-1)。使用rest服务、我的用户密钥和密钥,我可以访问我的第一个存储桶,我通过rest服务发送图像,删除它们,获取它们等等

我创建了第二个bucket(eu-central1),并选择从第一个bucket获取设置。第二个桶当然不是我的账户

当我调用列表bucket时,我得到两个bucket,其中一个与我的帐户名同名。这就是工作的水桶

这两个桶都阻止了公众访问。所以,唯一的方法是使用签名头通过rest服务发送图像

无论我想用第二个桶做什么,我都会被拒绝访问

但是,如果我删除第二个bucket并在eu-easet-1中创建一个新bucket,那么对于第二个bucket,所有这些都可以完美地工作。
为什么我不能在评论中提到的@Nico的同一地区拥有两个桶, 你需要有这样的东西:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": [
                         "arn:aws:s3:::bucket-one/*",
                         "arn:aws:s3:::bucket-two/*"
                        ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                         "arn:aws:s3:::bucket-one/*",
                         "arn:aws:s3:::bucket-two/*"
                        ]
        }
    ]
}

正如评论中提到的@Nico, 你需要有这样的东西:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": [
                         "arn:aws:s3:::bucket-one/*",
                         "arn:aws:s3:::bucket-two/*"
                        ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                         "arn:aws:s3:::bucket-one/*",
                         "arn:aws:s3:::bucket-two/*"
                        ]
        }
    ]
}

您在评论中说,如果您的桶位于不同的地区,您会遇到问题。当您与S3集成时,您必须确保您的“客户机”配置了S3存储桶的区域

例如,在Java SDK中,我得到一个
S3Client
,如下所示:

private static S3Client getClient(AwsCredentialsProvider awsAuth, Region awsRegion) {
    return S3Client.builder().credentialsProvider(awsAuth).region(awsRegion).build();
}
Region
method参数指存储桶所在的区域。然后,我使用这个区域感知的
S3Client
-对象与S3集成。(它将打开到该AWS区域的连接)

在评论中,我还提到了IAM策略,您的访问密钥需要相关的访问权限。看来你已经解决了这个问题——我只是想澄清一下我后来想的一件事,它可能会对你未来的AWS之旅有所帮助

您需要
s3:putObject
权限


s3:putObjectAcl
可能用于更高级的用例,例如(可能还有其他示例)将s3对象复制到另一个帐户。例如,将文件从主AWS帐户上的应用程序复制到另一个用于管理数据以进行分析的应用程序。一些参考资料,其中包含一些标题的详细信息,这些标题将需要随您的
PutObject
-请求一起提供。

您在评论中说,如果您的存储桶位于不同的区域,您会遇到问题。当您与S3集成时,您必须确保您的“客户机”配置了S3存储桶的区域

例如,在Java SDK中,我得到一个
S3Client
,如下所示:

private static S3Client getClient(AwsCredentialsProvider awsAuth, Region awsRegion) {
    return S3Client.builder().credentialsProvider(awsAuth).region(awsRegion).build();
}
Region
method参数指存储桶所在的区域。然后,我使用这个区域感知的
S3Client
-对象与S3集成。(它将打开到该AWS区域的连接)

在评论中,我还提到了IAM策略,您的访问密钥需要相关的访问权限。看来你已经解决了这个问题——我只是想澄清一下我后来想的一件事,它可能会对你未来的AWS之旅有所帮助

您需要
s3:putObject
权限


s3:putObjectAcl
可能用于更高级的用例,例如(可能还有其他示例)将s3对象复制到另一个帐户。例如,将文件从主AWS帐户上的应用程序复制到另一个用于管理数据以进行分析的应用程序。一些参考资料,其中包含一些标题的详细信息,这些标题将需要随您的
PutObject
-请求一起提供。

感谢大家帮助我深入了解S3服务

注意:我正在使用root用户。以下示例中使用的ID和密钥都是root用户和以后创建的具有完全s3权限的用户。问题总是一样的

为了进一步研究这个问题,我在发表评论前24小时创建了6个桶

  • bucket名称类似帐户名称EU(法兰克福)EU-central-1
  • 随机工作桶名称EU(法兰克福)EU-central-1
  • 随机工作桶名称EU(伦敦)EU-west-2
  • 随机工作桶名称US East(北弗吉尼亚州)US-East-1
  • 随机工作桶名称US East(北弗吉尼亚州)US-East-1
  • 随机工作桶名称美国东部(俄亥俄州)美国东部-2
  • 数字,1,4,5,6在创造的那一刻起作用。数字2,3没有。我接收到的访问被拒绝,我试图用它们做什么(2和3)。 所有bucket都是以相同的方式创建的,设置完全相同

    24小时后,今天。 我已经测试了所有水桶的使用权限。没有进行代码更改。相同的代码,相同的函数,相同的测试。AWS S3的管理面板中未更改任何存储桶设置。没有创建新用户。一切都和24小时前完全一样


    今天所有的水桶都在工作。

    感谢大家帮助我深入了解S3服务

    注意:我正在使用root用户。以下示例中使用的ID和密钥都是root用户和以后创建的具有完全s3权限的用户。问题总是一样的

    为了进一步研究这个问题,我在发表评论前24小时创建了6个桶

  • bucket名称类似帐户名称EU(法兰克福)EU-central-1
  • 随机工作桶名称EU(法兰克福)EU-central-1
  • 随机工作桶名称EU(伦敦)EU-west-2
  • 随机工作桶名称US East(北弗吉尼亚州)US-East-1
  • 随机工作桶名称US East(北弗吉尼亚州)US-East-1
  • 随机工作桶名称美国东部(俄亥俄州)美国东部-2
  • 数字,1,4,5,6在创造的那一刻起作用。数字2,3没有。我接收到的访问被拒绝,我试图用它们做什么(2和3)。 所有bucket都是以相同的方式创建的,设置完全相同

    24小时后,今天。 我已经测试了所有水桶的使用权限。没有进行代码更改。同样的