本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將伺服器存取日誌交付至 CloudWatch Logs
您可以使用 Amazon CloudWatch Logs 提供的日誌交付,將 Amazon S3 Amazon CloudWatch Logs 日誌群組。 CloudWatch 日誌在 CloudWatch Logs 中後,您可以使用 CloudWatch Logs Insights 來查詢它們、跨帳戶和區域彙總它們、使用 AWS Key Management Service (AWS KMS) 加密它們,以及選擇性地以 Apache Iceberg 格式將其交付至 Amazon S3 Tables 以進行 SQL 分析。您也可以以 JSON 或 Apache Parquet 格式將日誌交付至 Amazon S3,或透過 Amazon Data Firehose 路由日誌。
您可以使用 CloudWatch Logs APIs而非 Amazon S3 APIs 來設定交付。您可以為每個來源儲存貯體指定日誌群組。多個儲存貯體可以共用相同的日誌群組,或每個儲存貯體可以交付給自己的 。
提示
您可以為相同的儲存貯體設定多個目的地。例如,將 交付至 CloudWatch Logs 日誌群組以進行互動式查詢,並同時以 Parquet 格式交付至 Amazon S3,以較低成本長期保留。
注意
CloudWatch Logs 提供的日誌交付也支援 Amazon Data Firehose 和 Amazon S3 做為交付目的地,包括 Apache Parquet 輸出格式。此頁面涵蓋 CloudWatch Logs 日誌群組目的地,這也支援用於 SQL 分析的 S3 Tables 整合。如需 Firehose 和 Amazon S3 目的地的相關資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的從 AWS 服務啟用記錄。
注意
如需將伺服器存取日誌改為交付至 Amazon S3 一般用途儲存貯體的詳細資訊,請參閱 啟用 Amazon S3 伺服器存取記錄日誌。
先決條件
設定交付之前,您需要下列項目:
-
Amazon S3 一般用途儲存貯體 (您要記錄的來源儲存貯體)。
-
AWS 區域 與來源儲存貯體位於相同 中的 CloudWatch Logs 日誌群組。
-
發起人的 IAM 許可。您至少需要下列許可:
-
logs:PutDeliverySource -
logs:PutDeliveryDestination -
logs:CreateDelivery -
s3:AllowVendedLogDeliveryForResource(在來源儲存貯體上)
如果您計劃啟用 S3 Tables 整合,您也需要:
-
observabilityadmin:CreateS3TableIntegration -
logs:AssociateSourceToS3TableIntegration -
s3tables:CreateTableBucket -
s3tables:PutTableBucketEncryption -
s3tables:PutTableBucketPolicy
-
設定交付 (AWS CLI)
若要使用 設定伺服器存取日誌交付至 CloudWatch Logs AWS Command Line Interface,請完成下列三個步驟。
-
建立交付來源。這會向 CloudWatch Logs 將您的 Amazon S3 儲存貯體註冊為日誌來源。
aws logs put-delivery-source \ --namemy-sal-source\ --resource-arn arn:aws:s3:::my-bucket\ --log-type S3_SERVER_ACCESS_LOGS -
建立交付目的地。這會指定將交付日誌的 CloudWatch Logs 日誌群組。
aws logs put-delivery-destination \ --namemy-sal-destination\ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}' -
建立交付。這會將來源連結至目的地,並開始日誌交付。
aws logs create-delivery \ --delivery-source-namemy-sal-source\ --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:my-sal-destination
完成這些步驟後,Amazon S3 會開始將伺服器存取日誌交付至 CloudWatch Logs 日誌群組。組態需要 15-20 分鐘才能傳播。傳播之後,日誌交付通常會在幾個小時內開始。只會記錄新的請求 – 不會回填歷史資料。
設定交付 (Amazon S3 主控台)
-
至 https://console.aws.amazon.com/s3/
登入 Amazon S3 主控台。 -
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
選擇您要啟用記錄的來源儲存貯體名稱。
-
選擇屬性索引標籤。
-
在伺服器存取日誌交付至 CloudWatch Logs 區段中,選擇編輯。
-
選擇啟用。
-
選取或建立 CloudWatch Logs 日誌群組做為交付目的地。
-
(選用) 若要以 Apache Iceberg 格式將日誌交付至 S3 資料表,請選取啟用 S3 資料表整合。
-
選擇儲存變更。
儲存後,伺服器存取日誌交付至 CloudWatch Logs 區段會顯示已啟用的日誌群組。
設定交付 (CloudFormation)
您可以使用 AWS CloudFormation 自動設定伺服器存取日誌交付至 CloudWatch Logs。下列範本會建立所需的資源:IAM 角色、CloudWatch Logs 日誌群組、交付來源、交付目的地和交付。
AWSTemplateFormatVersion: '2010-09-09' Description: S3 Access Logs delivery to CloudWatch Logs Parameters: SourceBucketArn: Type: String Description: ARN of the S3 bucket to enable access logging LogGroupName: Type: String Default: /aws/s3/access-logs Description: CloudWatch Log Group name for SAL delivery Resources: SALLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Ref LogGroupName RetentionInDays: 180 SALDeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: !Sub '${AWS::StackName}-sal-source' ResourceArn: !Ref SourceBucketArn LogType: S3_SERVER_ACCESS_LOGS SALDeliveryDestination: Type: AWS::Logs::DeliveryDestination Properties: Name: !Sub '${AWS::StackName}-sal-destination' DestinationResourceArn: !GetAtt SALLogGroup.Arn SALDelivery: Type: AWS::Logs::Delivery Properties: DeliverySourceName: !Ref SALDeliverySource DeliveryDestinationArn: !GetAtt SALDeliveryDestination.Arn
啟用 S3 Tables 整合 (選用)
當您啟用 S3 Tables 整合時,CloudWatch Logs 會自動以 Apache Iceberg 格式將您的伺服器存取日誌交付至您帳戶中的aws-cloudwatch受管資料表儲存貯體。然後,您可以使用 Amazon Athena、Amazon Redshift 或任何 Iceberg 相容工具來查詢此資料。
S3 Tables 整合中的儲存體或資料表維護不收取額外費用。您只需按 S3 Tables 定價支付 CloudWatch Logs 擷取和查詢請求的費用。
-
建立 S3 Tables 整合 (每個區域每個帳戶一次)。
aws observabilityadmin create-s3-table-integration \ --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole\ --encryption '{"SseAlgorithm": "AES256"}'IAM 角色必須信任
logs.amazonaws.com服務主體並授予logs:integrateWithS3Table許可。信任政策範例如下:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name" } } } ] }此角色也需要下列許可政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:integrateWithS3Table", "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] } -
將您的交付來源與整合建立關聯。
aws logs associate-source-to-s3-table-integration \ --integration-arnintegration-arn\ --data-source '{"name":"amazon_s3","type":"server_access"}'
完成這些步驟後,CloudWatch Logs 會建立aws-cloudwatch受管資料表儲存貯體,並開始以 Iceberg 格式交付日誌。資料通常會在第一次交付至 CloudWatch Logs 後的一小時內顯示。
如需查詢 S3 Tables 整合的資訊,請參閱 在 S3 資料表中查詢存取日誌。
跨帳戶和跨區域彙總
CloudWatch Logs 交付路徑支援兩個選項的跨帳戶和跨區域日誌彙總:
-
CloudWatch 跨帳戶可觀測性可讓您查詢跨帳戶的日誌,而無需複製資料。
-
CloudWatch Logs 集中化可讓您將多個帳戶和區域的日誌合併到中央日誌群組,選擇性地使用訂閱篩選條件進行選擇性轉送。
對於多帳戶設定,管理員可以使用 CloudWatch Telemetry Config 啟用規則搭配 AWS Organizations 自動啟用跨成員帳戶的伺服器存取日誌交付。
注意
啟用規則目前不支援 S3 Tables 整合的自動啟用。您必須在每個帳戶中分別啟用整合。
加密
您可以在日誌群組上設定 AWS KMS 加密,以加密交付至 CloudWatch Logs 的伺服器存取日誌。當伺服器存取日誌交付至該日誌群組時,它們會使用您的 AWS KMS 金鑰加密。這解決了 Amazon S3 一般用途儲存貯體交付路徑的金鑰限制,僅支援 SSE-S3 加密。
如果您啟用 S3 Tables AWS KMS與加密日誌群組的整合,則必須將 AWS KMS 金鑰政策中的其他許可授予下列服務主體:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableCWSystemTablesKeyUsage", "Effect": "Allow", "Principal": { "Service": "systemtables.cloudwatch.amazonaws.com" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "EnableS3TablesMaintenanceKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": "table-bucket-arn/*" } } } ] }
CloudWatch Logs 會使用systemtables.cloudwatch.amazonaws.com主體將日誌寫入 S3 Tables。maintenance.s3tables.amazonaws.com 委託人由 S3 Tables 用於壓縮等 Iceberg 操作。
停用交付
若要停止將伺服器存取日誌交付至 CloudWatch Logs,您可以刪除交付或交付來源:
-
刪除交付 – 停止日誌交付,但保持交付來源組態不變。您可以稍後建立新的交付,而無需重新設定來源。
aws logs delete-delivery \ --iddelivery-id -
刪除交付來源 – 完全移除來源組態。如果您不再希望與 CloudWatch Logs 交付相關聯的儲存貯體,請使用此選項。
aws logs delete-delivery-source \ --namedelivery-source-name
先前交付的日誌會保留在日誌群組和 S3 Tables 整合中 (如果啟用)。刪除交付不會移除現有的日誌資料。