

AWS App Runner 自 2026 年 4 月 30 日起，不再開放給新客戶。如果您想要使用 App Runner，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# 管理 AWS WAF Web ACLs
<a name="waf-manage"></a>

使用下列其中一種方法來管理 App Runner 服務的 AWS WAF Web ACLs：
+ [App Runner 主控台](#waf-manage.console)
+ [AWS CLI](#waf-manage.api)

## App Runner 主控台
<a name="waf-manage.console"></a>

當您[在 App Runner 主控台上建立服務或](manage-create.md)[更新現有的](manage-configure.md)服務時，您可以關聯或取消與 AWS WAF Web ACL 的關聯。

**注意**  
App Runner 服務只能與一個 Web ACL 建立關聯。不過，除了其他 AWS 資源之外，您還可以將一個 Web ACL 與多個 App Runner 服務建立關聯。
建立 Web ACL 關聯之前，請務必更新 的 IAM 許可 AWS WAF。如需詳細資訊，請參閱 [ 許可](waf.md#waf.permissions)。

### 關聯 AWS WAF Web ACL
<a name="waf-manage.console.add"></a>

**重要**  
與 WAF Web ACLs 相關聯的 App Runner 私有服務的來源 IP 規則*不遵守以 IP 為基礎的規則*。這是因為我們目前不支援將請求來源 IP 資料轉送至與 WAF 相關聯的 App Runner 私有服務。如果您的 App Runner 應用程式需要來源 IP/CIDR 傳入流量控制規則，您必須[對私有端點使用安全群組規則](network-pl-manage.md)，而不是 WAF Web ACLs。

**建立 AWS WAF Web ACL 的關聯**

1. 開啟 [App Runner 主控台](https://console.aws.amazon.com/apprunner)，然後在**區域**清單中選取您的 AWS 區域。

1. 根據您是要建立或更新服務，請執行下列其中一個步驟：
   + 如果您要建立新的服務，請選擇**建立 App Runner 服務**，然後前往**設定服務**。
   + 如果您要更新現有的服務，請選擇**組態**索引標籤，然後選擇**設定服務**下的**編輯**。

1. 前往**安全**下的 **Web 應用程式防火牆**。

1. 選擇**啟用**切換按鈕以檢視選項。  
![\[App Runner 主控台配置，顯示 Web Application Firewall 選項。\]](http://docs.aws.amazon.com/zh_tw/apprunner/latest/dg/images/console-waf.png)

1. 執行下列步驟之一：
   + **若要建立現有 Web ACL 的關聯**：從選擇要與您的 App Runner 服務建立關聯的 Web ACL 資料表**中選擇所需的 Web ACL**。
   + **若要建立新的 Web ACL**：選擇**建立 Web ACL**，以使用 AWS WAF 主控台建立新的 Web ACL。如需詳細資訊，請參閱《 *AWS WAF 開發人員指南*》中的[建立 Web ACL](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-creating.html)。

     1. 選擇重新整理按鈕，即可在選擇 Web ACL 資料表中**檢視新建立的 Web ACL**。

     1. 選取所需的 Web ACL。

1. 如果您要建立新服務，請選擇**下一步**，如果您要更新現有服務，請選擇**儲存變更**。選取的 Web ACL 與您的 App Runner 服務相關聯。

1. 若要驗證 Web ACL 關聯，請選擇服務的**組態**索引標籤，然後前往**設定服務**。捲動至**安全**下的 **Web 應用程式防火牆**，以檢視與您的服務相關聯的 Web ACL 詳細資訊。
**注意**  
當您建立 Web ACL 時，在 Web ACL 完全傳播並可供 App Runner 使用之前，會經過一小段時間。傳播時間可以是幾秒鐘到幾分鐘。當您嘗試在 Web ACL 完全傳播之前建立關聯`WAFUnavailableEntityException`時， 會 AWS WAF 傳回 。  
如果您在 Web ACL 完全傳播之前重新整理瀏覽器或離開 App Runner 主控台，則關聯會失敗。不過，您可以在 App Runner 主控台內導覽。

### 取消與 AWS WAF Web ACL 的關聯
<a name="waf-manage.console.disassociate"></a>

您可以[更新](manage-configure.md) App Runner 服務，取消不再需要的 AWS WAF Web ACl 關聯。

**取消與 AWS WAF Web ACl 的關聯**

1. 開啟 [App Runner 主控台](https://console.aws.amazon.com/apprunner)，然後在**區域**清單中選取您的 AWS 區域。

1. 前往您要更新之服務的**組態**索引標籤，然後在**設定服務**下選擇**編輯**。

1. 前往**安全**下的 **Web 應用程式防火牆**。

1. 停用**啟用**切換按鈕。您會收到確認刪除的訊息。

1. 選擇**確認**。Web ACL 與您的 App Runner 服務取消關聯。
**注意**  
如果您想要將服務與其他 Web ACL 建立關聯，請從選擇 Web ACL 資料表**中選取 Web ACL**。App Runner 會取消目前 Web ACL 的關聯，並啟動與所選 Web ACL 建立關聯的程序。
如果沒有其他 App Runner 服務或資源使用取消關聯的 Web ACL，請考慮刪除 Web ACL。否則，您將繼續產生成本。如需定價的詳細資訊，請參閱[AWS WAF 定價](https://aws.amazon.com/waf/pricing)。如需有關如何刪除 Web ACL 的說明，請參閱 *AWS WAF API 參考*中的 [DeleteWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_DeleteWebACL.html)。
您無法刪除與其他作用中 App Runner 服務或其他資源相關聯的 Web ACL。

## AWS CLI
<a name="waf-manage.api"></a>

您可以使用 AWS WAF 公有 APIs 來關聯或取消關聯 AWS WAF Web ACL。您要與 Web ACL 建立關聯或取消關聯的 App Runner 服務必須處於有效狀態。

AWS WAF 當您呼叫下列其中一個 AWS WAF APIs來取得處於無效狀態的 App Runner 服務時， 會傳回`WAFNonexistentItemException`錯誤：
+  `AssociateWebACL` 
+  `DisassociateWebACL` 
+  `GetWebACLForResource` 

App Runner 服務的無效狀態包括：
+  `CREATE_FAILED` 
+  `DELETE_FAILED` 
+  `DELETED` 
+  `OPERATION_IN_PROGRESS ` 
**注意**  
`OPERATION_IN_PROGRESS` 只有在刪除您的 App Runner 服務時，狀態才會無效。

如需 AWS WAF 公有 APIs的詳細資訊，請參閱 [https://docs.aws.amazon.com/waf/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/waf/latest/APIReference/Welcome.html)。

**注意**  
更新 的 IAM 許可 AWS WAF。如需詳細資訊，請參閱 [ 許可](waf.md#waf.permissions)。

### 使用 建立 AWS WAF Web ACL 的關聯 AWS CLI
<a name="waf-manage.api.add"></a>

**重要**  
與 WAF Web ACLs 相關聯的 App Runner 私有服務的來源 IP 規則*不遵守以 IP 為基礎的規則*。這是因為我們目前不支援將請求來源 IP 資料轉送至與 WAF 相關聯的 App Runner 私有服務。如果您的 App Runner 應用程式需要來源 IP/CIDR 傳入流量控制規則，您必須[對私有端點使用安全群組規則](network-pl-manage.md)，而不是 WAF Web ACLs。

**建立 AWS WAF Web ACL 的關聯**

1. 使用您偏好的規則動作集來建立服務的 AWS WAF Web ACL`Block`，`Allow`或為您的服務建立 Web 請求。如需 AWS WAF APIs的詳細資訊，請參閱 *AWS WAF API 參考指南*中的 [CreateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html)。  
**Example 建立 Web ACL - 請求**  

   ```
   aws wafv2
   create-web-acl
   --region <region>
   --name <web-acl-name>
   --scope REGIONAL
   --default-action Allow={}
   --visibility-config <file-name.json>
   # This is the file containing the WAF web ACL rules.
   ```

1. 使用`associate-web-acl` AWS WAF 公有 API，將您建立的 Web ACL 與 App Runner 服務建立關聯。如需 AWS WAF APIs的詳細資訊，請參閱 *AWS WAF API 參考指南*中的 [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html)。
**注意**  
當您建立 Web ACL 時，在 Web ACL 完全傳播並可供 App Runner 使用之前，會經過一小段時間。傳播時間可以是幾秒鐘到幾分鐘。當您嘗試在 Web ACL 完全傳播之前建立關聯`WAFUnavailableEntityException`時， 會 AWS WAF 傳回 。  
如果您在 Web ACL 完全傳播之前重新整理瀏覽器或離開 App Runner 主控台，則關聯會失敗。不過，您可以在 App Runner 主控台內導覽。  
**Example 關聯 Web ACL - 請求**  

   ```
   aws wafv2 associate-web-acl
   --resource-arn <apprunner_service_arn>
   --web-acl-arn <web_acl_arn>
   --region <region>
   ```

1. 使用`get-web-acl-for-resource` AWS WAF 公有 API 確認 Web ACL 與您的 App Runner 服務相關聯。如需 AWS WAF APIs的詳細資訊，請參閱 API *AWS WAF 參考指南*中的 [GetWebACLForResource](https://docs.aws.amazon.com/waf/latest/APIReference/API_GetWebACLForResource.html)。  
**Example 驗證資源的 Web ACL - 請求**  

   ```
   aws wafv2 get-web-acl-for-resource
   --resource-arn <apprunner_service_arn>
   --region <region>
   ```

   如果沒有與您服務相關聯的 Web ACLs，您會收到空白回應。

### 使用 刪除 AWS WAF Web ACL AWS CLI
<a name="waf-manage.api.disassociate"></a>

如果 AWS WAF Web ACL 與 App Runner 服務相關聯，則無法刪除。

**刪除 AWS WAF Web ACL**

1. 使用`disassociate-web-acl` AWS WAF 公有 API 取消 Web ACL 與 App Runner 服務的關聯。如需 AWS WAF APIs的詳細資訊，請參閱 API *AWS WAF 參考指南*中的 [DisassociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_DisassociateWebACL.html)。  
**Example 取消與 Web ACL 的關聯 - 請求**  

   ```
   aws wafv2 disassociate-web-acl
   --resource-arn <apprunner_service_arn>
   --region <region>
   ```

1. 使用`get-web-acl-for-resource` AWS WAF 公有 API 確認 Web ACL 已與您的 App Runner 服務取消關聯。  
**Example 確認 Web ACL 已解除關聯 - 請求**  

   ```
   aws wafv2 get-web-acl-for-resource
   --resource-arn <apprunner_service_arn>
   --region <region>
   ```

   取消關聯的 Web ACL 不會列出您的 App Runner 服務。如果沒有與您服務相關聯的 Web ACLs，您會收到空白回應。

1. 使用`delete-web-acl` AWS WAF 公有 API 刪除取消關聯的 Web ACL。如需 AWS WAF APIs的詳細資訊，請參閱 API *AWS WAF 參考指南*中的 [DeleteWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_DeleteWebACL.html)。  
**Example 刪除 Web ACL - 請求**  

   ```
   aws wafv2 delete-web-acl
   --name <web_acl_name>
   --scope REGIONAL
   --id <web_acl_id>
   --lock-token <web_acl_lock_token>
   --region <region>
   ```

1. 確認 Web ACL 已使用`list-web-acl` AWS WAF 公有 API 刪除。如需 AWS WAF APIs的詳細資訊，請參閱 *AWS WAF API 參考指南*中的 [ListWebACLs](https://docs.aws.amazon.com/waf/latest/APIReference/API_ListWebACLs.html)。  
**Example 確認 Web ACL 已刪除 - 請求**  

   ```
   aws wafv2 list-web-acls 
   --scope REGIONAL
   --region <region>
   ```

   刪除的 Web ACL 不會再列出。
**注意**  
如果 Web ACL 與其他作用中的 App Runner 服務或其他資源相關聯，例如 Amazon Cognito 使用者集區，則無法刪除 Web ACL。

### 列出與 Web ACL 相關聯的 App Runner 服務
<a name="waf-manage.api.list"></a>

Web ACL 可以與多個 App Runner 服務和其他資源建立關聯。使用`list-resources-for-web-acl` AWS WAF 公有 API 列出與 Web ACL 相關聯的 App Runner 服務。如需 AWS WAF APIs的詳細資訊，請參閱 *AWS WAF API 參考指南*中的 [ListResourcesForWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_ListResourcesForWebACL.html)。

**Example 列出與 Web ACL 相關聯的 App Runner 服務 - 請求**  

```
aws wafv2 list-resources-for-web-acl
--web-acl-arn <WEB_ACL_ARN>
--resource-type APP_RUNNER_SERVICE
--region <REGION>
```

**Example 列出與 Web ACL 相關聯的 App Runner 服務 - 回應**  
下列範例說明當沒有 App Runner 服務與 Web ACL 相關聯時的回應。  

```
{
  "ResourceArns": []
}
```

**Example 列出與 Web ACL 相關聯的 App Runner 服務 - 回應**  
下列範例說明當有 App Runner 服務與 Web ACL 相關聯時的回應。  

```
{
  "ResourceArns": [
    "arn:aws:apprunner:<region>:<aws_account_id>:service/<service_name>/<service_id>"
  ]
}
```

## 測試和記錄 AWS WAF Web ACLs
<a name="waf-manage.testing-and-logging"></a>

當您將規則動作設定為 Web ACL 中的**計數**時， 會將請求 AWS WAF 新增至符合規則的請求計數。若要使用 App Runner 服務測試 Web ACL，請將規則動作設定為**計數**，並考慮符合每個規則的請求量。例如，您可以為符合大量請求`Block`的動作設定規則，而這些請求是您確定為正常使用者流量。在這種情況下，您可能需要重新設定規則。如需詳細資訊，請參閱《 *AWS WAF 開發人員指南*》中的[測試和調校您的 AWS WAF 保護](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html)。

您也可以設定 AWS WAF 將請求標頭記錄到 Amazon CloudWatch Logs 日誌群組、Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon Data Firehose。如需詳細資訊，請參閱《*AWS WAF 開發人員指南*》中的[記錄 Web ACL 流量](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)。

若要存取與 App Runner 服務相關聯的 Web ACL 相關日誌，請參閱下列日誌欄位：
+ `httpSourceName`：包含 `APPRUNNER` 
+ `httpSourceId`：包含 `customeraccountid-apprunnerserviceid`

如需詳細資訊，請參閱《 *AWS WAF 開發人員指南*》中的[日誌範例](https://docs.aws.amazon.com/waf/latest/developerguide/logging-examples.html)。

**重要**  
與 WAF Web ACLs 相關聯的 App Runner 私有服務的來源 IP 規則*不遵守以 IP 為基礎的規則*。這是因為我們目前不支援將請求來源 IP 資料轉送至與 WAF 相關聯的 App Runner 私有服務。如果您的 App Runner 應用程式需要來源 IP/CIDR 傳入流量控制規則，您必須[對私有端點使用安全群組規則](network-pl-manage.md)，而不是 WAF Web ACLs。