本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 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 日誌群組。
-
建立交付來源
將您的 REST API 註冊為交付來源。
aws logs put-delivery-source \ --namemy-apigw-source\ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name} -
建立交付目的地
將日誌群組註冊為交付目的地。
aws logs put-delivery-destination \ --namemy-log-destination\ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}" -
建立交付
將來源連結至目的地。
aws logs create-delivery \ --delivery-source-namemy-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 階段的 ARNevent_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 主控台)
您可以從階段詳細資訊頁面的日誌和追蹤區段建立日誌交付。
在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway
。 -
選擇您的 REST API,然後選擇階段。
-
選擇一個階段。
-
在日誌和追蹤區段的日誌交付目的地下,選擇新增目的地。
-
選擇目的地類型 (CloudWatch Logs、Amazon S3 或 Firehose),並指定目的地資源。
-
選擇儲存。
重要
您必須先在階段上啟用執行記錄,才能新增交付目的地。如果記錄設定為關閉,則交付組態不會產生日誌。
注意
若要設定跨帳戶交付目的地,請使用 AWS CLI。在來源帳戶中建立交付之前,您必須在目的地帳戶中建立交付目的地政策。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的跨帳戶交付範例。