View a markdown version of this page

建立 REST API 執行日誌的日誌交付 - Amazon API Gateway

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

建立 REST API 執行日誌的日誌交付

您可以將執行日誌路由到您自己的 CloudWatch Logs 日誌群組、Amazon S3 儲存貯體或 Firehose 串流。若要這樣做,請建立 Amazon CloudWatch Logs 交付。這包括三個步驟:建立交付來源、建立交付目的地,以及將它們與交付連結。

先決條件

建立日誌交付之前,請確定您有下列項目:

  • 在您的 REST API 階段上啟用執行記錄。將 loggingLevel 設為 ERROR 或 INFO。如果未啟用記錄,則交付來源建立會失敗。

  • 目的地資源:您擁有的 CloudWatch Logs 日誌群組、Amazon S3 儲存貯體或 Firehose 串流。

  • 呼叫 Amazon CloudWatch Logs 交付 APIs許可。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的從 AWS 服務啟用記錄。

Amazon CloudWatch Logs 交付的 API Gateway 特定值

當您為 API Gateway 執行日誌建立交付時,請使用下列值:

資源 ARN

arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}

日誌類型

EXECUTION_LOGS

建立日誌交付 (AWS CLI)

下列範例會建立交付,將執行日誌從 REST API 傳送至您擁有的 CloudWatch Logs 日誌群組。

  1. 建立交付來源

    將您的 REST API 註冊為交付來源。

    aws logs put-delivery-source \ --name my-apigw-source \ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}
  2. 建立交付目的地

    將日誌群組註冊為交付目的地。

    aws logs put-delivery-destination \ --name my-log-destination \ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}"
  3. 建立交付

    將來源連結至目的地。

    aws logs create-delivery \ --delivery-source-name my-apigw-source \ --delivery-destination-arn arn:aws:logs:{region}:{account-id}:delivery-destination:my-log-destination

若要將日誌傳送至 Amazon S3 或 Firehose,請在 put-delivery-destination命令中指定適當的資源 ARN。如需完整 Amazon CloudWatch Logs 交付工作流程的詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的從 AWS 服務啟用記錄。

若要將日誌傳送至多個目的地,請使用具有不同目的地的相同交付來源來建立其他交付。

記錄欄位

透過 Amazon CloudWatch Logs 交付,執行日誌包含您可以為每個目的地自訂的結構化欄位。下列欄位可供使用:

  • resource_arn – API 階段的 ARN

  • event_timestamp – 日誌事件的時間

  • api_id – REST API 識別符

  • stage – 階段名稱

  • resource_path – 請求的資源路徑

  • http_method – HTTP 方法

  • payload – 執行日誌內容 (與標準執行日誌相同)

您可以使用 上的 --record-fields 參數和 上的 參數,選取要包含的欄位create-delivery和每個目的地的輸出格式--output-formatput-delivery-destination。

可用的輸出格式取決於目的地:

  • CloudWatch Logs – json、純

  • Amazon S3 – json、Plain、w3c、parquet

  • Firehose – json、純

比對標準執行日誌輸出

如果您想要符合標準執行記錄的交付輸出 (僅承載,無其他欄位),請將 --output-format "plain"新增至 put-delivery-destination和 --record-fields "payload" --field-delimiter "" create-delivery。

建立日誌交付 (CloudFormation)

為 CloudFormation 範本組合階段 ARN 時,請使用下列模式:

DeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: my-apigw-source LogType: EXECUTION_LOGS ResourceArn: !Sub "arn:${AWS::Partition}:apigateway:${AWS::Region}:${AWS::AccountId}:/restapis/${MyApi}/stages/${MyStageName}"

建立日誌交付 (API Gateway 主控台)

您可以從階段詳細資訊頁面的日誌和追蹤區段建立日誌交付。

  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway。

  2. 選擇您的 REST API,然後選擇階段。

  3. 選擇一個階段。

  4. 在日誌和追蹤區段的日誌交付目的地下,選擇新增目的地。

  5. 選擇目的地類型 (CloudWatch Logs、Amazon S3 或 Firehose),並指定目的地資源。

  6. 選擇儲存。

重要

您必須先在階段上啟用執行記錄,才能新增交付目的地。如果記錄設定為關閉,則交付組態不會產生日誌。

注意

若要設定跨帳戶交付目的地,請使用 AWS CLI。在來源帳戶中建立交付之前,您必須在目的地帳戶中建立交付目的地政策。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的跨帳戶交付範例。