

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

# 日誌遞迴預防
<a name="Subscriptions-recursion-prevention"></a>

如果未防止，訂閱篩選條件可能會導致 CloudWatch Logs 和目的地的擷取計費大幅增加，則存在導致無限日誌遞迴的風險。當訂閱篩選條件與因訂閱交付工作流程而接收日誌事件的日誌群組相關聯時，就會發生這種情況。擷取到日誌群組的日誌會傳送到目的地，導致日誌群組擷取更多日誌，然後再次轉送到目的地，建立遞迴迴圈。

例如，將目的地為 Firehose 的訂閱篩選條件視為 Firehose，這會將日誌事件交付給 Amazon S3。此外，也有 Lambda 函數可處理交付至 Amazon S3 的新事件，並產生一些日誌本身。如果訂閱篩選條件套用至 Lambda 函數的日誌群組，則函數產生的日誌事件會在目的地轉送至 Firehose 和 Amazon S3，然後再次叫用該函數，導致產生更多日誌並轉送至 Firehose 和 Amazon S3，進而再次叫用該函數等。這將發生在無限迴圈中，導致日誌擷取、Firehose 和 Amazon S3 的計費意外增加。

如果 Lambda 函數連接到已啟用 CloudWatch Logs 流程日誌的 VPC，則 VPC 的日誌群組也可能導致日誌遞迴。

建議您不要將訂閱篩選條件套用至屬於訂閱交付工作流程一部分的日誌群組。對於帳戶層級訂閱篩選條件，請使用 `PutAccountPolicy` API 中的 `selectionCriteria` 參數，從政策中排除這些日誌群組。

排除日誌群組時，請考慮下列產生日誌的服務，這些 AWS 服務可能是訂閱交付工作流程的一部分：
+ Amazon EC2 搭配 Fargate
+ Lambda
+ AWS 步驟函數
+ 為 CloudWatch Logs 啟用的 Amazon VPC 流程日誌

**注意**  
Lambda 目的地的日誌群組所產生的日誌事件將不會轉送回帳戶層級訂閱篩選條件政策的 Lambda 函數。在此情況下，帳戶訂閱政策`selectionCriteria`不需要使用 排除目的地 Lambda 函數的日誌群組。