

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon SQS 中测试基于属性的访问控制
<a name="sqs-abac-testing-access-control"></a>

以下示例展示了如何在 Amazon SQS 中测试基于属性的访问控制。

## 创建一个队列，将标签键设置为环境，将标签值设置为生产
<a name="sqs-abac-testing-access-control-create-queue"></a>

运行此 AWS CLI 命令来测试创建队列，标签键设置为 environment，标签值设置为 prod。如果您没有 AWS CLI，则可以为您的计算机[下载并配置](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)它。

```
aws sqs create-queue --queue-name prodQueue —region us-east-1 —tags "environment=prod"
```

您会收到来自 Amazon SQS 端点的 `AccessDenied` 错误：

```
An error occurred (AccessDenied) when calling the CreateQueue operation: Access to the resource <queueUrl> is denied.
```

这是因为 IAM 用户的标签值与 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) API 调用中传递的标签不一致。请记住，我们向 IAM 用户应用了一个标签，其键设置为 `environment`，值设置为 `beta`。

## 创建一个队列，将标签键设置为环境，将标签值设置为测试
<a name="sqs-abac-testing-access-control-create-env"></a>

运行此 CLI 命令来测试创建队列，将标签键设置为 `environment`，将标签值设置为 `beta`。

```
aws sqs create-queue --queue-name betaQueue —region us-east-1 —tags "environment=beta"
```

您会收到一条消息，确认队列已成功创建，如下所示。

```
{
"QueueUrl": "<queueUrl>“
}
```

## 向队列发送消息
<a name="sqs-abac-testing-access-control-sending-message"></a>

运行此 CLI 命令以测试向队列发送消息。

```
aws sqs send-message --queue-url <queueUrl> --message-body testMessage
```

响应会显示消息已成功传送到 Amazon SQS 队列。IAM 用户权限允许您向带有 `beta` 标签的队列发送消息。响应包括 `MD5OfMessageBody` 和包含消息的 `MessageId`。

```
{
"MD5OfMessageBody": "<MD5OfMessageBody>",
"MessageId": "<MessageId>"
}
```