amazon-web-services - 从不同的 aws 帐户访问 s3 存储桶
问题描述
作为我们测试的一部分,我正在尝试恢复数据库。备份存在于 prod s3 帐户中。我的数据库在开发帐户中作为 ec2 实例运行。
谁能告诉我如何从开发帐户访问 prod s3。
步骤: - 我在 prod 帐户上创建了一个角色,并与 dev 帐户建立了信任关系 - 我向该角色添加了一个策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::prod"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::prod/*"
}
]
}
在开发帐户上,我创建了一个角色并使用了假设策略
> { "Version": "2012-10-17", "Statement": [
> {
> "Effect": "Allow",
> "Action": "sts:AssumeRole",
> "Resource": "arn:aws:iam::xxxxxxxxx:role/prod-role"
> } ] }
但是我无法访问 s3 存储桶,有人可以指出我错在哪里。我还将上述策略添加到现有角色中。这是否意味着由于我的实例配置文件而无法正常工作(不一致的错误)
如果我在任何地方错了,请帮助并纠正我。我正在寻找角色而不是用户的解决方案。提前致谢!
解决方案
您需要从开发帐户担任生产帐户中的角色。调用sts:AssumeRole
然后使用返回的凭证访问存储桶。
您也可以添加一个存储桶策略,允许 dev 账户从 prod 账户中读取数据。在这种情况下,您不需要 prod 帐户中的跨帐户角色。
推荐阅读
- python - 如何通过 Kivy 文件使用另一个 Python 文件中的函数
- visual-studio-code - 我的 VS 代码主题没有显示 CSS 选择器的颜色
- flask - 开始长轮询而不是 websocket 连接
- batch-file - 批处理文件:以管理员身份使用 cmd 启动另一个批处理
- android - 在 Android 10 (API 29) 上执行 adb 命令
- android - java.lang.NoSuchMethodError:Lcom/facebook/common/internal/Preconditions 类中没有静态方法 checkArgument(Z)V;
- python - 编程错误:在 Django 中使用 PhoneNumberField
- node.js - 如何从此对象获取行 ID?
- excel - Openpyxl 创建带有样式的表格会生成意外的颜色
- kotlin - 如何使用 kotlin.parallel.tasks.in.project=true