amazon-web-services - 如何向队列添加权限以允许不同帐户中的用户对队列的权限
问题描述
sqs.addPermission("https://sqs.eu-west-1.amazonaws.com/111111111111/queueName", "remoteAccess",
Arrays.asList("arn:aws:iam::222222222222:user/user.x@mycompany.com"), Arrays.asList(SQSActions.SendMessage.name()));
应该(IMO)将队列的权限添加到不同帐户中的用户。
我得到一个错误。
参数 PrincipalId 的值 [arn:aws:iam::222222222222:user/user.x@mycompany.com] 无效。原因:无法验证。(服务:AmazonSQS;状态代码:400;错误代码:InvalidParameterValue;
任何人都知道如何以编程方式让不同帐户中的特定用户访问队列?
这与我通过 sqs Web 控制台添加权限时看到的用户 arn 相同。
解决方案
文档的这一部分包含跨账户 SQS 访问策略的示例:https ://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html
您需要在队列级别和其他账户中的委托人上应用策略。
例如,在队列级别
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"AWS": "111122223333"},
"Action": [
"sqs:SendMessage",
"sqs:ReceiveMessage"
],
"Resource": ["arn:aws:sqs:*:123456789012:queue1"],
}
}
如果您确实想授予对特定用户、组或角色的访问权限,您可以使用如下Principal
字段:
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/role1",
"arn:aws:iam::111122223333:user/username1"
]
},
而在另一个帐户中,给需要访问队列的角色或用户(您显然可以限制 SQS API 列表,这只是一个示例)
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sqs:*",
"Resource": "arn:aws:sqs:*:123456789012:queue1"
}
}
推荐阅读
- java - 在 java 类之间共享缓存资源
- ruby - 删除重复出现的字符串
- javascript - 严格模式。从引用的函数中提取内部定义的变量
- php - 我在数据库中有 3 个具有不同 ID 的用户,当我接受或拒绝时,它会不断获取最后一个循环的用户 ID?
- firebase - 带有 microsoft oauth 提供程序的 firebase signInWithRedirect 遇到 400 并立即重定向到原始页面
- linux - 打开电脑后,我无法进入我的 Ubuntu
- javascript - 保留引用而不修改 javascript 中的状态
- aws-lambda - 为什么来自 AWS lambda 的一些 Serilog 事件没有到达 Seq?
- c - 使用 strtok() 从双引号中提取子字符串
- ffmpeg - dyld:库未加载。即使通过 hombrew 安装,ffmpeg 也未加载,已链接