当前位置: 首页 > 知识库问答 >
问题:

使用快速视线时,跨账户 S3 存储桶的访问被拒绝

方宜
2023-03-14

背景

我正在执行一项任务,从账户a S3存储桶中的AWS Systems Manager库存数据生成账户B中的AWS QuickSight报告(S3 sync)。

我已成功使用 SSM 资源数据同步将所有资源同步数据添加到跨账户(账户 A)S3 存储桶中。存储桶使用 AWS-KMS 密钥(密钥位于账户 A 中)进行加密,并且所有账户的资源数据同步中使用相同的密钥来添加跨账户存储桶中的数据。

此外,我使用Account B中的Athena从S3同步数据创建示例数据库和模式。

问题

Athena 可以在账户 B 中成功创建数据库和架构,还可以将账户 B 中的元数据添加到账户 A S3 存储桶。当我尝试查看“预览表”时,它一直显示访问被拒绝

错误

您的查询有以下错误:
com.amazonaws.services.s3.model.AmazonS3Exception: 访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:访问被拒绝;请求 ID: 3F5896D43C82733B;S3 扩展请求 ID (路径:s3://bucket/AWS:Application/accountid=../region=us-east-1/resourcetype=ManagedInstanceInventory/i-..杰森)

Athena和QuickSight在存储桶和密钥所在的帐户中工作,但我想将存储桶保留在不同的帐户中。

我正在尝试实施修补您的AWS和混合环境的最佳实践,但使用的是不同的帐户和KMS密钥。

我已经使用KMS关注了所有关于Athena跨帐户访问的文档,但运气不好。还将解密IAM策略添加到QuickSight Service角色。

我的IAM角色具有完全管理员访问权限。它使用假设角色。

有人能在这个问题上指导我吗?非常感谢。

共有1个答案

咸弘雅
2023-03-14

如果您是i如果您为自亚太(香港)地区(ap-east-1)或更高版本以来联机的AWS地区创建资源数据同步,则必须在SSMBucketDelivery部分输入特定于地区的服务主体条目。以下示例包括ssm.ap-east-1.amazonaws.com的特定于地区的服务主体条目

https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-datasync.html

 类似资料:
  • 有没有人遇到过这样的情况:当我对一个用户使用管理策略时,它可以工作,但当我使用内联策略时,它说访问被拒绝。我为IAM用户授予了对bucket读取访问权限,即它只能访问bucket。 我也试过这个

  • 我有一个只能使用签名url访问的S3存储桶。到目前为止,我使用GeneratePresignedUrlRequest(Java)生成签名url。现在我想通过CloudFront访问我的存储桶。问题是我如何在这种情况下生成签名url?

  • 使用Java AWS SDK,我创建了一个lambda函数来从s3 bucket读取csv文件。我已经将bucket公之于众,可以从任何浏览器轻松访问它和文件。为了测试它,我使用lambda控制台上的test按钮。我正在使用hello world测试配置输入模板。 它失败的原因是: 错误消息:指定的桶无效。(服务:Amazon S3;状态代码:400;错误代码:InvalidBucketName;

  • 我有一个自动配置的AWS,Spring Boot应用程序,我正在尝试设置一个endpoint,该endpoint将简单地从Amazon S3中的给定存储桶下载特定文件。我使用AWS控制台将JPEG文件上传到存储桶中——现在我正在尝试使用Spring Boot API下载该文件。 我收到以下错误:<code>com.amazonaws.services.s3.model。AmazonS3Except

  • 我有两个AWS账户。帐户1有一个CloudSearch域,我需要从帐户2中的Lambda函数查询该域。我遵循了一个教程,在Account1中创建一个允许跨帐户访问的角色。 因此,在帐户1中,我有一个角色,如下所示: 此角色有一个受信任的实体,即帐户2,我可以在IAM控制台中该角色的受信任实体部分下看到正确的帐户ID。 在帐户2中,我创建了一个Lambda函数,其执行角色如下所示: 我的Lambda

  • 用于创建桶和对象的AWS帐户拥有这些资源。如果在AWS帐户中创建AWS标识和访问管理(IAM)用户,则AWS帐户是父所有者。如果IAM用户上载对象,则该用户所属的父帐户拥有该对象。

  • 我有一个lambda函数,它使用一个具有以下策略摘录的角色 我的桶策略如下所示 我在角色和bucket策略上都允许使用GetObject和ListBucket。但是,当我的函数运行时 我明白了 [错误]ClientError:调用GetObject操作时发生错误(AccessDenied):拒绝访问 我还需要添加哪些权限?对象就在那里,当我使用管理员角色在本地运行代码时,我可以得到它。 最新消息

  • 问题内容: 我在使它工作时遇到问题。它接收一个字符串,其中包含几条信息。但是,当我尝试将String写入文件以跟踪程序随时间的变化时,我收到拒绝访问错误: 叠层纱 完整的堆栈跟踪: 58行: 问题答案: 您必须先创建文件夹。但是您不能调用file.mkdirs()-您需要调用file.getParentFile()。mkdirs()-否则,您将使用文件名创建一个文件夹(这将阻止您使用以下命令创建文