本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Amazon SQS 的 IAM 策略的基本示例
以下示例介绍了 Amazon SQS 权限策略。
当您为 Amazon EC2 Auto Scaling 配置生命周期挂钩时,您无需编写策略即可向 Amazon SQS 队列发送消息。有关更多信息,请参阅 。Amazon EC2 Auto Scaling在里面Amazon EC2 用户指南(适用于 Linux.
示例 1:允许用户创建队列
在以下示例中,我们为 Bob 创建了一个策略,允许他访问所有 Amazon SQS 操作,但仅限于名称以文字字符串为前缀的队列alice_queue_.
Amazon SQS 不会自动授予队列创建者使用队列的权限。因此,我们必须明确授予 Bob 使用所有 Amazon SQS 操作的权限CreateQueueIAM 策略中的操作。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:alice_queue_*" }] }
示例 2:允许开发人员向共享队列写消息
在以下示例中,我们为开发人员创建了一个群组,并附加了允许该群组使用 Amazon SQS 的策略SendMessage操作,但仅限于属于指定队列的队列Amazon Web Services 账户并被命名为MyCompanyQueue.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:MyCompanyQueue" }] }
您可以使用 * (而不是 SendMessage) 向委托人授予对共享队列执行以下操作的权限:ChangeMessageVisibility、DeleteMessage、GetQueueAttributes、GetQueueUrl、ReceiveMessage 和 SendMessage。
虽然*包括其他权限类型提供的访问权限,Amazon SQS 会单独考虑权限。例如,可以向用户同时授予 * 和 SendMessage 权限,即使 * 包含 SendMessage 提供的访问权限,也是如此。
此概念在您删除权限时也适用。如果委托人只有 * 权限,则请求删除 SendMessage 权限不会 为委托人留下除此以外的一切 权限。相反,该请求不起作用,因为委托人不具有显式 SendMessage 权限。要只为委托人留下 ReceiveMessage 权限,请先添加 ReceiveMessage 权限,然后删除 * 权限。
示例 3:允许管理员获取队列的总体大小
在以下示例中,我们为经理创建了一个群组,并附加了允许该群组使用 Amazon SQS 的策略GetQueueAttributes对属于指定的所有队列执行操作Amazon账户。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:GetQueueAttributes", "Resource": "*" }] }
示例 4:允许合作伙伴向特定队列发送消息
您可以使用 Amazon SQS 策略或 IAM 策略完成此任务。如果你的伴侣有Amazon Web Services 账户,这样会比使用 Amazon SQS 策略简单。但是,合作伙伴公司中拥有 Amazon 安全凭证的任何用户都可以向该队列发送消息。如果要将访问权限限制到特定用户或应用程序,则必须像对待您公司内的用户一样对待合作伙伴,并使用 IAM 策略而非 Amazon SQS 策略。
本示例将执行以下操作:
-
创建一个名为的群组 WidgetCo 代表合作伙伴公司。
-
为合作伙伴公司中需要访问权限的特定用户或应用程序创建用户。
-
将 用户添加到 组。
-
挂载一条策略,仅允许该组对名为
SendMessage的队列执行WidgetPartnerQueue操作。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:*:123456789012:WidgetPartnerQueue" }] }