

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon SQS 主控台設定 Amazon SQS 佇列
<a name="sqs-configuring"></a>

使用 Amazon SQS 主控台來設定和管理 Amazon SQS 佇列和功能。您也可以：
+ 啟用伺服器端加密以增強安全性。
+ 關聯無效字母佇列來處理未處理的訊息。
+ 設定觸發來叫用 Lambda 函數以進行事件驅動處理。

# Amazon SQS 的屬性型存取控制
<a name="sqs-abac"></a>

## ABAC 是什麼？
<a name="sqs-abac-whatis"></a>

屬性型存取控制 (ABAC) 是一種授權程序，可根據連接至使用者 AWS 和資源的標籤來定義許可。ABAC 根據屬性和值提供精細且靈活的存取控制，降低與重新設定角色型政策相關的安全風險，並集中進行稽核及存取政策管理。如需更多有關 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[什麼是適用於 AWS的 ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。

Amazon SQS 支援 ABAC 的方式是讓您根據與 Amazon SQS 佇列相關聯的標籤和別名來控制對 Amazon SQS 佇列的存取。在 Amazon SQS 中啟用 ABAC 的標籤和別名條件金鑰，授權給 IAM 主體使用 Amazon SQS 佇列，而無需編輯政策或管理授與。若要進一步了解 ABAC 條件金鑰，請參閱*《服務授權參考*》中的 [Amazon SQS 的條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html#amazonsqs-policy-keys)。

若使用 ABAC，您可以使用標籤為 Amazon SQS 佇列設定 IAM 存取許可和政策，以協助您擴展許可權限管理範圍。您可以使用新增至每個商務角色的標籤，在 IAM 中建立單一許可政策，而不必在每次新增資源時更新政策。您也可以將標籤連接至 IAM 主體，以建立 ABAC 政策。當進行呼叫的 IAM 使用者角色上的標籤與 Amazon SQS 佇列標籤相符時，您可以設計 ABAC 政策來允許 Amazon SQS 作業。若要進一步了解如何標記 AWS，請參閱[AWS 標記策略](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)和 [Amazon SQS 成本分配標籤](sqs-queue-tags.md)。

**注意**  
ABAC for Amazon SQS 目前可在可使用 Amazon SQS 的所有 AWS 商業區域中使用，但以下情況除外：  
亞太地區 (海德拉巴)
亞太地區 (墨爾本)
歐洲 (西班牙) 
歐洲 (蘇黎世)

## 為什麼一定要在 Amazon SQS 中使用 ABAC？
<a name="sqs-abac-benefits"></a>

以下是在 Amazon SQS 中使用 ABAC 的一些好處：
+ Amazon SQS 的 ABAC 需要較少的許可政策。您不需要為不同的工作職能建立不同政策。您可以使用套用至一個以上的佇列的資源和請求標籤，如此可降低營運成本。
+ 使用 ABAC 快速擴展團隊。當資源在建立期間適當標記，就會根據標籤自動授予新資源許可權。
+ 使用 IAM 主體的許可權來限制資源存取。您可以為 IAM 主體建立標籤，並使用這些標籤來限制對符合 IAM 主體標籤之特定動作的存取。這可協助您將授與請求權限的程序自動化。
+ 追蹤誰在存取您的資源。您可以透過查看 AWS CloudTrail中的使用者屬性來判斷工作階段的身分識別。

**Topics**
+ [ABAC 是什麼？](#sqs-abac-whatis)
+ [為什麼一定要在 Amazon SQS 中使用 ABAC？](#sqs-abac-benefits)
+ [為存取控制加上標籤](sqs-abac-tagging-resource-control.md)
+ [建立 IAM 使用者和 Amazon SQS 佇列](sqs-abac-creating-queues.md)
+ [測試屬性型存取控制](sqs-abac-testing-access-control.md)

# 標記 Amazon SQS 中的存取控制
<a name="sqs-abac-tagging-resource-control"></a>

以下是在 Amazon SQS 中使用標籤進行存取控制的範例。IAM 政策限制 IAM 使用者只能執行所有佇列的所有 Amazon SQS 操作，這些佇列包含鍵為 environment、值為 production 的資源標籤。如需詳細資訊，請參閱[使用標籤和 AWS Organizations 的屬性型存取控制](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging_abac.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessForProd",
      "Effect": "Allow",
      "Action": "sqs:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "prod"
        }
      }
    }
  ]
}
```

------

# 建立 IAM 使用者和 Amazon SQS 佇列
<a name="sqs-abac-creating-queues"></a>

下列範例說明如何建立 ABAC 政策，以使用 AWS 管理主控台 和 控制對 Amazon SQS 的存取 CloudFormation。

## 使用 AWS 管理主控台
<a name="sqs-abac-creating-queues-console"></a>

**建立 IAM 使用者**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 從左側導覽窗格中，選擇**使用者**。

1. 選擇**新增使用者**，然後在**使用者名稱**文字方塊中輸入名稱。

1. 選取**存取金鑰 - 程式設計存取**方塊，然後選擇**下一步：許可**。

1. 選擇 **Next: Add Tags (下一步：新增標籤)**。

1. 新增鍵 `environment` 且值為 `beta` 的標籤。

1. 選擇**下一步：檢閱**，然後選擇**建立使用者**。

1. 請將存取金鑰 ID 和私密存取金鑰複製並存放在安全之處。

**新增 IAM 使用者許可權**

1. 選取您建立的 IAM 使用者。

1. 選擇**新增內嵌政策**。

1. 在 JSON 標籤上，貼上下列政策。

1. 選擇**檢閱政策**。

1. 選擇**建立政策**。

## 使用 AWS CloudFormation
<a name="sqs-abac-creating-queues-cf"></a>

使用下列範例 CloudFormation 範本建立已連接內嵌政策和 Amazon SQS 佇列的 IAM 使用者：

```
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation template to create IAM user with custom inline policy"
Resources:
    IAMPolicy:
        Type: "AWS::IAM::Policy"
        Properties:
            PolicyDocument: |
                {
                    "Version": "2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Sid": "AllowAccessForSameResTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:SendMessage",
                                "sqs:ReceiveMessage",
                                "sqs:DeleteMessage"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "AllowAccessForSameReqTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:CreateQueue",
                                "sqs:DeleteQueue",
                                "sqs:SetQueueAttributes",
                                "sqs:tagqueue"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:RequestTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "DenyAccessForProd",
                            "Effect": "Deny",
                            "Action": "sqs:*",
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/stage": "prod"
                                }
                            }
                        }
                    ]
                }
                
            Users: 
              - "testUser"
            PolicyName: tagQueuePolicy

    IAMUser:
        Type: "AWS::IAM::User"
        Properties:
            Path: "/"
            UserName: "testUser"
            Tags: 
              - 
                Key: "environment"
                Value: "beta"
```

# 在 Amazon SQS 中測試屬性型存取控制
<a name="sqs-abac-testing-access-control"></a>

以下範例顯示如何在 Amazon SQS 中測試屬性型存取控制。

## 使用設定為 environment 的標籤鍵和設定為 prod 的標籤值來建立佇列
<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)機器的 CLI。

```
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 呼叫中傳遞的標籤不符。請記住，我們將標籤套用至具有鍵設定為 `environment` 且值設定為 `beta` 的 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>"
}
```

# 使用 Amazon SQS 主控台設定佇列參數
<a name="sqs-configure-queue-parameters"></a>

[建立](creating-sqs-standard-queues.md#step-create-standard-queue)或[編輯](sqs-configure-edit-queue.md)佇列時，您可以設定下列參數：
+ **可見性逾時** - 其他訊息消費者看不到從佇列 (由一位消費者) 接收訊息的時間長度。如需詳細資訊，請參閱[可見性逾時](sqs-visibility-timeout.md)。
**注意**  
使用主控台設定可見性逾時，可設定佇列中所有訊息的逾時值。若要設定單一或多個訊息的逾時，您必須使用其中一個 AWS SDKs。
+ **訊息保留期** - Amazon SQS 保留留在佇列中之訊息的時間量。在預設情況下，佇列會將訊息保留四天。您可以設定佇列為保留訊息最多 14 天。如需詳細資訊，請參閱[訊息保留期間](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)。
+ **交付延遲** - Amazon SQS 在交付新增至佇列的訊息之前延遲的時間量。如需詳細資訊，請參閱[交付延遲](sqs-delay-queues.md)。
+ **訊息大小上限** - 此佇列的訊息大小上限。如需詳細資訊，請參閱[訊息大小上限](sqs-s3-messages.md)。
+ **接收訊息等待時間** - Amazon SQS 等待訊息在佇列收到接收請求後變為可用的時間上限。如需詳細資訊，請參閱 [Amazon SQS 短輪詢和長輪詢](sqs-short-and-long-polling.md)。
+ **啟用內容型重複資料刪除** - Amazon SQS 可以根據訊息內文自動建立重複資料刪除 ID。如需詳細資訊，請參閱 [Amazon SQS FIFO 佇列](sqs-fifo-queues.md)。
+ **啟用高輸送量 FIFO** - 用於為佇列中的訊息啟用高輸送量。選擇此選項會將相關選項 ([重複資料刪除範圍](enable-high-throughput-fifo.md)和 [FIFO 輸送量限制](enable-high-throughput-fifo.md)) 變更為啟用 FIFO 佇列高輸送量的必要設定。如需詳細資訊，請參閱[Amazon SQS 中 FIFO 佇列的高輸送量](high-throughput-fifo.md)及[Amazon SQS 訊息配額](quotas-messages.md)。
+  **再驅動允許政策**：定義哪些來源佇列能將此佇列用作無效字母佇列。如需詳細資訊，請參閱 [在 Amazon SQS 中使用無效字母佇列](sqs-dead-letter-queues.md)。



**若要設定現有佇列的佇列參數 (主控台)**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。選擇佇列，然後選擇**編輯**。

1. 捲動至**組態**區段。

1. 在**可見性逾時**中，輸入持續時間和單位。範圍介於 0 到 12 小時之間。預設值為 30 秒。

1. 在**訊息保留期間**中，輸入持續時間和單位。範圍介於 1 分鐘到 14 天之間。預設值為 4 天。

1. 對於標準佇列，請輸入**接收訊息等待時間**的值。範圍介於 0 到 20 秒之間。預設值為 0 秒，它會設定[短輪詢](sqs-short-and-long-polling.md)。任何非零值都會設定長輪詢。

1. 對於**遞送延遲**，請輸入持續時間和單位。範圍介於 0 到 15 分鐘之間。預設值為 0 秒。

1. 在**訊息大小上限**中，輸入一個值。範圍從 1 KiB 到 1024 KiB。預設值為 1024 KiB。

1. 對於 FIFO 佇列，請選擇**啟用內容型重複資料刪除**以啟用內容型重複資料刪除功能。預設設定為停用。

1. (選用) 若要讓 FIFO 佇列啟用更高輸送量以傳送和接收佇列中的訊息，請選擇**啟用高輸送量 FIFO**。

   選擇此選項會將相關選項 (**重複資料刪除範圍**和 **FIFO 輸送量限制**) 變更為啟用 FIFO 佇列高輸送量的必要設定。如果您變更使用高輸送量 FIFO 所需的任何設定，則佇列的正常輸送量將生效，而重複資料刪除會依指定方式執行。如需詳細資訊，請參閱[Amazon SQS 中 FIFO 佇列的高輸送量](high-throughput-fifo.md)及[Amazon SQS 訊息配額](quotas-messages.md)。

1. 對於**再驅動允許政策**，選擇**啟用**。從下列選項中選取：**全部允許** (預設值)、**依佇列**或**全部拒絕**。選擇**依佇列**時，請依 Amazon Resource Name (ARN) 指定最多 10 個來源佇列的清單。

1. 完成佇列參數的設定後，請選擇**儲存**。

# 在 Amazon SQS 中設定存取政策
<a name="sqs-configure-add-permissions"></a>

[編輯](sqs-configure-edit-queue.md)佇列時，您可以設定其存取政策，以控制誰可以與其互動。
+ 存取政策會定義哪些帳戶、使用者和角色具有存取佇列的許可。
+ 它指定允許的動作，例如 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)、 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)或 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)。
+ 根據預設，只有佇列擁有者具有傳送和接收訊息的許可。

****設定現有佇列的存取政策 （主控台）****

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 選擇佇列，然後選擇**編輯**。

1. 捲動至**存取政策**區段。

1. 在輸入方塊中編輯**存取政策陳述**式。如需存取政策陳述式的詳細資訊，請參閱 [Amazon SQS 中的身分和存取管理](security-iam.md)。

1. 完成設定存取政策後，請選擇**儲存**。

# 使用 SQS 受管加密金鑰設定佇列的伺服器端加密
<a name="sqs-configure-sqs-sse-queue"></a>

除了[預設](creating-sqs-standard-queues.md#step-create-standard-queue)的 Amazon SQS 受管伺服器端加密 (SSE) 選項之外，Amazon SQS 受管 SSE (SSE-SQS) 可讓您建立自訂的受管伺服器端加密，以使用 SQL 管理的加密金鑰來保護透過訊息佇列傳送的敏感資料。使用 SSE-SQS，您不需要建立和管理加密金鑰，也不需要修改程式碼來加密資料。SSE-SQS 可讓您安全地傳輸資料，並協助您符合嚴格的加密合規性和法規要求，而無需額外付費。

SSE-SQS 使用 256 位元進階加密標準 (AES-256) 加密法，來保護靜態資料。Amazon SQS 一收到訊息，SSE 就會將其加密。Amazon SQS 會以加密形式存放訊息，並且只有在將訊息傳送給授權的消費者時才會解密訊息。

**注意**  
預設 SSE 選項只有在您建立佇列而未指定加密屬性時才有效。
Amazon SQS 可讓您關閉所有佇列加密。因此，關閉 KMS-SSE，將不會自動啟用 SQS-SSE。如果您希望在關閉 KMS-SSE 之後啟用 SQS-SSE，您必須在請求中新增屬性變更。

**若要設定佇列的 SSE-SQS 加密 (主控台)**
**注意**  
根據預設，使用 HTTP (非 TLS) 端點建立的任何新佇列都不會啟用 SSE-SQS 加密。使用 HTTPS 或[簽章版本 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 端點建立 Amazon SQS 佇列是安全性最佳實務。

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 選擇佇列，然後選擇**編輯**。

1. 展開**加密**。

1. 在**伺服器端加密**下，選擇**啟用**。
**注意**  
啟用 SSE 後，對加密佇列的匿名 `SendMessage` 和 `ReceiveMessage` 請求將被拒絕。Amazon SQS 安全性最佳實務建議您不要使用匿名請求。如果您希望將匿名請求傳送到 Amazon SQS 佇列，請務必停用 SSE。

1. 選取 **Amazon SQS 金鑰 (SSE-SQS)**。使用此選項無須額外付費。

1. 選擇**儲存**。

# 使用 Amazon SQS 主控台設定佇列的伺服器端加密
<a name="sqs-configure-sse-existing-queue"></a>

為了保護佇列訊息中的資料，Amazon SQS 預設為所有新建立的佇列啟用伺服器端加密 (SSE)。Amazon SQS 已與 Amazon Web Services Key Management Service (Amazon Web Services KMS) 整合，以管理用於伺服器端加密 (SSE) 的 [KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)。如需使用 SSE 的詳細資訊，請參閱 [Amazon SQS 中的靜態加密](sqs-server-side-encryption.md)。



您指派給佇列的 KMS 金鑰必須具有金鑰政策，其中包含授權可使用佇列之所有主體的許可。如需詳細資訊，請參閱[金鑰管理](sqs-key-management.md)。

若您並非 KMS 金鑰的擁有者，或者您登入的帳戶並無 `kms:ListAliases` 和 `kms:DescribeKey` 的許可，即無法在 Amazon SQS 主控台上檢視 KMS 相關資訊。請要求 KMS 金鑰的擁有者授與您這些許可。如需詳細資訊，請參閱[金鑰管理](sqs-key-management.md)。

[建立](creating-sqs-standard-queues.md#step-create-standard-queue)或[編輯](sqs-configure-edit-queue.md)佇列時，可以設定 SSE-KMS。

**若要設定現有佇列的 SSE-KMS (主控台)**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 選擇佇列，然後選擇**編輯**。

1. 展開**加密**。

1. 在**伺服器端加密**下，選擇**啟用**。
**注意**  
啟用 SSE 後，對加密佇列的匿名 `SendMessage` 和 `ReceiveMessage` 請求將被拒絕。Amazon SQS 安全性最佳實務建議您不要使用匿名請求。如果您希望將匿名請求傳送到 Amazon SQS 佇列，請務必停用 SSE。

1. 選取**AWS Key Management Service 金鑰 (SSE-KMS**)。

   主控台會顯示 KMS 金鑰的**說明**、**帳戶**和 **KMS 金鑰 ARN**。

1. 指定佇列的 KMS 金鑰 ID。如需詳細資訊，請參閱 [重要用語](sqs-server-side-encryption.md#sqs-sse-key-terms)。

   1. 選擇**選擇 KMS 金鑰別名**選項。

   1. 預設金鑰是 Amazon SQS 的 Amazon Web Services 託管 KMS 金鑰。若要使用此金鑰，請從 **KMS 金鑰**清單中選擇該金鑰。

   1. 若要使用 Amazon Web Services 帳戶中的自訂 KMS 金鑰，請從 **KMS 金鑰**清單中選擇。如需建立自訂 KMS 金鑰的指示，請參閱《Amazon Web Services Key Management Service 開發人員指南》**中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

   1. 若要使用不在清單中的自訂 KMS 金鑰，或使用其他 Amazon Web Services 帳戶的自訂 KMS 金鑰，請選擇**輸入 KMS 金鑰別名**，然後輸入 KMS 金鑰 Amazon Resource Name (ARN)。

1. (選用) 對於**資料金鑰重複使用期間**，指定 1 分鐘到 24 小時之間的值。預設值為 5 分鐘。如需詳細資訊，請參閱 [了解資料金鑰重複使用期間](sqs-key-management.md#sqs-how-does-the-data-key-reuse-period-work)。

1. 完成 SSE-KMS 的設定後，請選擇**儲存**。

# 使用 Amazon SQS 主控台設定佇列的成本分配標籤
<a name="sqs-configure-tag-queue"></a>

若要組織和識別 Amazon SQS 佇列，您可以新增成本分配標籤。如需詳細資訊，請參閱[Amazon SQS 成本分配標籤](sqs-queue-tags.md)。
+ 詳細資訊頁面上的標記標籤會顯示佇列的標籤。
+ 您可以在[建立](creating-sqs-standard-queues.md#step-create-standard-queue)或修改[使用主控台編輯 Amazon SQS 佇列](sqs-configure-edit-queue.md)佇列時新增或修改標籤。

**若要設定現有佇列的標籤 (主控台)**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 選擇佇列，然後選擇**編輯**。

1. 捲動至**標籤**區段。

1. 新增、修改或移除佇列標籤：

   1. 若要新增標籤，請選擇**新增標籤**、輸入**鍵**和**值**，然後選擇**新增標籤**。

   1. 若要更新標籤，請變更其**鍵**和**值**。

   1. 若要移除標籤，請選擇鍵/值對旁邊的**移除**。

1. 完成設定標籤後，請選擇**儲存**。

# 使用 Amazon SQS 主控台訂閱 Amazon SNS 主題的佇列 Amazon SQS
<a name="sqs-configure-subscribe-queue-sns-topic"></a>

您可以訂閱一或多個 Amazon SQS 佇列至 Amazon SNS 主題。當您發佈訊息至主題時，Amazon SNS 會將訊息傳送至每個訂閱的佇列。Amazon SQS 會管理訂閱並處理所需的許可。如需詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的[什麼是 Amazon SNS？](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)

當您訂閱 Amazon SQS 佇列至 Amazon SNS 主題時，Amazon SNS 會使用 HTTPS 將訊息轉送至 Amazon SQS。如需搭配加密的 Amazon SQS 佇列使用 Amazon SNS 的詳細資訊，請參閱 [設定 AWS 服務的 KMS 許可](sqs-key-management.md#compatibility-with-aws-services)。 Amazon SQS 

**重要**  
Amazon SQS 支援每個存取政策最多 20 個陳述式。訂閱 Amazon SNS 主題會新增一個這類陳述式。超過此數量會導致主題訂閱交付失敗。

**訂閱 Amazon SNS 主題的佇列 （主控台）**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 在佇列清單中選擇要訂閱 Amazon SNS 主題的 佇列。

1. 在 **Actions** (動作) 選單中選擇 **Subscribe to Amazon SNS topic** (訂閱 Amazon SNS 主題)。

1. 從**指定此佇列可用的 Amazon SNS 主題**功能表中，選擇佇列的 Amazon SNS 主題。

   如果未列出 SNS 主題，請選擇**輸入 Amazon SNS 主題 ARN**，然後輸入主題的 Amazon Resource Name (ARN)。

1. 選擇**儲存**。

1. 若要驗證訂閱，請將訊息發佈至 主題，並檢視佇列中的訊息。如需詳細資訊，請參閱[《Amazon Simple Notification Service 開發人員指南》中的 Amazon SNS 訊息發佈](https://docs.aws.amazon.com/sns/latest/dg/sns-publishing.html)。 **

## 跨帳戶訂閱
<a name="cross-account-subscriptions"></a>

如果您的 Amazon SQS 佇列和 Amazon SNS 主題不同 AWS 帳戶，則需要額外的許可。

**主題擁有者 （帳戶 A)**

修改 Amazon SNS 主題的存取政策， AWS 帳戶 以允許 Amazon SQS 佇列的 訂閱。範例政策陳述式：

```
{
  "Effect": "Allow",
  "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
  "Action": "sns:Subscribe",
  "Resource": "arn:aws:sns:us-east-1:123456789012:MyTopic"
}
```

此政策允許帳戶`111122223333`訂閱 `MyTopic`。

**佇列擁有者 （帳戶 B)**

修改 Amazon SQS 佇列的存取政策，以允許 Amazon SNS 主題傳送訊息。範例政策陳述式：

```
{
  "Effect": "Allow",
  "Principal": { "Service": "sns.amazonaws.com" },
  "Action": "sqs:SendMessage",
  "Resource": "arn:aws:sqs:us-east-1:111122223333:MyQueue",
  "Condition": {
    "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:MyTopic" }
  }
}
```

此政策允許 `MyTopic`傳送訊息至 `MyQueue`。

## 跨區域訂閱
<a name="cross-region-subscriptions"></a>

若要訂閱不同 中的 Amazon SNS 主題 AWS 區域，請確定：
+ Amazon SNS 主題的存取政策允許跨區域訂閱。
+ Amazon SQS 佇列的存取政策允許 Amazon SNS 主題跨區域傳送訊息。

如需詳細資訊，[請參閱《Amazon Simple Notification Service 開發人員指南》中的將 Amazon SNS 訊息傳送至不同區域中的 Amazon SQS 佇列或 AWS Lambda 函數](https://docs.aws.amazon.com/sns/latest/dg/sns-cross-region-delivery.html)。 **

# 設定 Amazon SQS 佇列以觸發 AWS Lambda 函數
<a name="sqs-configure-lambda-function-trigger"></a>

您可以使用 Lambda 函數來處理來自 Amazon SQS 佇列的訊息。Lambda 會輪詢佇列並同步叫用函數，以事件形式傳遞一批訊息。

**設定可見性逾時**   
將佇列的可見性逾時設定為[函數逾時](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-common-summary)的至少六倍。這可確保 Lambda 有足夠的時間在處理上一個批次時調節函數時重試。

**使用無效字母佇列 (DLQ)**  
指定無效字母佇列，以擷取 Lambda 函數無法處理的訊息。

**處理多個佇列和函數**  
Lambda 函數可以透過為每個佇列建立單獨的事件來源來處理多個佇列。您也可以將多個 Lambda 函數與相同的佇列建立關聯。

**加密佇列的許可**  
如果您將加密佇列與 Lambda 函數建立關聯，但 Lambda 不會輪詢訊息，請將 `kms:Decrypt` 許可新增至您的 Lambda 執行角色。

**限制**  
佇列和 Lambda 函數必須位於相同的 中 AWS 區域。  
使用預設金鑰 (Amazon SQS 的AWS 受管 KMS 金鑰） 的[加密佇列](sqs-server-side-encryption.md)無法在不同的 中叫用 Lambda 函數 AWS 帳戶。

如需實作詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[搭配使用 AWS Lambda 與 Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)。

## 先決條件
<a name="configure-lambda-function-trigger-prerequisites"></a>

若要設定 Lambda 函數觸發條件，您必須符合下列要求：
+ 如果您使用的是使用者，您的 Amazon SQS 角色必須包含下列許可：
  + `lambda:CreateEventSourceMapping`
  + `lambda:ListEventSourceMappings`
  + `lambda:ListFunctions`
+ Lambda 執行角色必須包含下列許可。
  + `sqs:DeleteMessage`
  + `sqs:GetQueueAttributes`
  + `sqs:ReceiveMessage`
+ 如果您將加密佇列與 Lambda 函數建立關聯，請將 `kms:Decrypt` 許可新增至 Lambda 執行角色。

如需詳細資訊，請參閱 [在 Amazon SQS 中管理存取的概觀](sqs-overview-of-managing-access.md)。

**若要將佇列設定為觸發 Lambda 函數 (主控台)**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 在**佇列**頁面上，選擇要設定的佇列。

1. 在佇列頁面上，選擇 **Lambda 觸發器**索引標籤。

1. 在 **Lambda 觸發程序**頁面上，選擇 Lambda 觸發程序。

   如果清單不包含您需要的 Lambda 觸發程序，請選擇**設定 Lambda 函數觸發程序**。輸入 Lambda 函數的 Amazon Resource Name (ARN)，或選擇現有的資源。然後選擇 **Save** (儲存)。

1. 選擇**儲存**。主控台會儲存設定並顯示佇列的**詳細資訊**頁面。

   在**詳細資訊**頁面上，**Lambda 觸發程序**索引標籤會顯示 Lambda 函數及其狀態。Lambda 函數大約需要 1 分鐘的時間才能與您的佇列產生關聯。

1. 若要驗證組態的結果，您可以[傳送訊息至佇列](creating-sqs-standard-queues.md#sqs-send-messages)，然後在 Lambda 主控台檢視觸發的 Lambda 函數。

# 使用 Amazon EventBridge 自動化從 AWS 服務到 Amazon SQS 的通知 Amazon SQS
<a name="sqs-automating-using-eventbridge"></a>

Amazon EventBridge 可讓您近乎即時地自動化 AWS 服務 和回應事件，例如應用程式問題或資源變更。
+ 您可以建立規則來篩選特定事件，並在規則符合事件時定義自動動作。
+ EventBridge 支援多個目標，包括以 JSON 格式接收事件的 Amazon SQS 標準和 FIFO 佇列。

如需詳細資訊，請參閱 *[Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*中的 [Amazon EventBridge 目標](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)。

# 使用 Amazon SQS 傳送具有屬性的訊息
<a name="sqs-using-send-message-with-attributes"></a>

對於標準 和 FIFO 佇列，您可以將結構化中繼資料包含到訊息中，包括時間戳記、地理空間資料、簽章和識別符。如需詳細資訊，請參閱[Amazon SQS 訊息屬性](sqs-message-metadata.md#sqs-message-attributes)。

**使用 Amazon SQS 主控台將具有屬性的訊息傳送至佇列**

1. 在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/) 開啟 Amazon SQS 主控台。

1. 在導覽窗格中，選擇 **Queues** (佇列)。

1. 在**佇列**頁面上，選擇佇列。

1. 選擇**傳送及接收訊息**。

1. 輸入訊息屬性參數。

   1. 在名稱文字方塊中，輸入最多 256 個字元的唯一名稱。

   1. 針對屬性類型，選擇**字串**、**數字**或**二進位**。

   1. （選用） 輸入自訂資料類型。例如，您可以新增 **byte**、 **int**或 **float**做為 **Number** 的自訂資料類型。

   1. 在值文字方塊中，輸入訊息屬性值。  
![\[顯示訊息屬性區段的 Amazon SQS 主控台。\]](http://docs.aws.amazon.com/zh_tw/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-tutorials-sending-message-with-attributes.png)

1. 若要新增另一個訊息屬性，請選擇**新增屬性**。  
![\[在訊息屬性區段中顯示移除按鈕的 Amazon SQS 主控台。\]](http://docs.aws.amazon.com/zh_tw/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-tutorials-sending-message-with-attributes-custom-attribute.png)

1. 您可以在傳送訊息之前隨時修改屬性值。

1. 若要刪除屬性，請選擇**移除**。若要刪除第一個屬性，請關閉**訊息屬性**。

1. 完成新增訊息屬性後，選擇**傳送訊息**。您的訊息已傳送，主控台會顯示成功訊息。若要檢視已傳送訊息之訊息屬性的相關資訊，請選擇**檢視詳細資訊**。選擇**完成**以關閉**訊息詳細資訊**對話方塊。