使用主控台將日誌資料匯出至 Amazon S3 - Amazon CloudWatch 日誌

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

使用主控台將日誌資料匯出至 Amazon S3

在下列範例中,您可以使用 Amazon CloudWatch 主控台將所有資料從名為的 Amazon S3 CloudWatch 儲存貯體匯出my-log-group到名為的 Amazon S3 儲存貯體my-exported-logs

支援將日誌資料匯出至由 SSE-KMS 加密的 S3 儲存貯體。不支援匯出至使用 DSSE-KMS 加密的儲存貯體。

如何設定匯出作業的詳細方法,取決於您要存放匯出資料的 Amazon S3 儲存貯體是否與要匯出的日誌位於同一帳戶。

同帳戶匯出

如果 Amazon S3 儲存貯體與要匯出的日誌位於同一帳戶,請參閱本區段的說明。

步驟 1:建立 Amazon S3 儲存貯體

我們建議您使用專門為 CloudWatch Logs 建立的值區。不過,如果您想要使用現有的儲存貯體,您可以跳到步驟 2。

注意

S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。 CloudWatch 日誌不支援將資料匯出到不同區域中的 S3 儲存貯體。

建立 S3 儲存貯體
  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 如有必要請變更區域。在導覽列中,選擇記 CloudWatch 錄所在的區域。

  3. 選擇 Create Bucket (建立儲存貯體)。

  4. 針對 Bucket Name (儲存貯體名稱),輸入儲存貯體的名稱。

  5. 針對「區域」,選取 CloudWatch 記錄資料所在的區域。

  6. 選擇建立

步驟 2:設置存取許可

若要在步驟 5 中建立匯出任務,您將需要使用 AmazonS3ReadOnlyAccess IAM 角色登入且要具有以下許可:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

若要提供存取權,請新增權限至您的使用者、群組或角色:

  • 使用者和群組位於 AWS IAM Identity Center:

    建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。

  • 透過身分提供者在 IAM 中管理的使用者:

    建立聯合身分的角色。請按照 IAM 使用者指南為第三方身分提供者 (聯合) 建立角色 中的指示進行操作。

  • IAM 使用者:

步驟 3:設定 S3 儲存貯體的許可

依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的 AWS 帳戶 ,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。

當您設定政策時,我們建議您包含隨機產生的字串做為儲存貯體的前綴,如此一來,只有適用的日誌串流才會匯出到儲存貯體。

重要

為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。

在下列範例中,aws:SourceAccount金鑰中的帳戶 ID 清單將是使用者可以從中將日誌資料匯出到 S3 儲存貯體的帳戶。aws:SourceArn 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。

我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。

設定 Amazon S3 儲存貯體的許可
  1. 在 Amazon S3 主控台中,選擇您在步驟 1 建立的儲存貯體。

  2. 選擇 Permissions (許可)Bucket policy (儲存貯體政策)

  3. Bucket Policy Editor (儲存貯體政策編輯器) 中,輸入下列政策。將 my-exported-logs 變更為 Amazon S3 儲存貯體的名稱。務必為主體指定正確的區域端點,例如 us-west-1

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } } ] }
  4. 選擇 Save (儲存),將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch 日誌將日誌資料匯出到 S3 儲存貯體。儲存貯體擁有者擁有所有匯出物件的完整許可。

    警告

    如果現有值區已附加一或多個政策,請新增該政策或政策的 CloudWatch 記錄存取權限的陳述式。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。

(選用) 步驟 4:匯出至使用 SSE-KMS 加密的儲存貯體

只有在匯出到使用伺服器端加密的 S3 儲存貯體時,才需要執行此步驟 AWS KMS keys。這種加密稱為 SSE-KMS。

匯出至使用 SSE-KMS 加密的儲存貯體
  1. 請在以下位置開啟 AWS KMS 主控台。 https://console.aws.amazon.com/kms

  2. 若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。

  3. 在左側導覽列中,選擇 Customer managed keys (客戶受管金鑰)。

    選擇 Create Key (建立金鑰)。

  4. 針對 Key type (金鑰類型),請選擇 Symmetric (對稱)

  5. Key usage (金鑰用途) 中,選擇 Encrypt and decrypt (加密與解密),然後選擇 Next (下一步)。

  6. Add labels (加入標示) 下,輸入金鑰的別名,並選擇是否新增說明或標籤。然後選擇下一步

  7. Key administrators (金鑰管理員) 下,選取可管理此金鑰的人員,然後選擇 Next (下一步)。

  8. Define key usage permissions (定義金鑰用途許可) 下,不進行變更,然後選擇 Next (下一步)。

  9. 檢閱設定,然後選擇 Finish (完成)。

  10. 返回 Customer managed keys (客戶受管金鑰) 頁面,選擇您剛建立的金鑰名稱。

  11. 選擇 Key policy (金鑰政策) 索引標籤,並選擇 Switch to policy view (切換至政策檢視)。

  12. Key policy (金鑰政策) 區段中,選擇 Edit (編輯)。

  13. 將下列陳述式新增至金鑰政策陳述式清單。執行時,請將 Region 替換為日誌區域,並以所擁有 KMS 金鑰的帳戶 ARN 替換 account-ARN

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  14. 選擇儲存變更

  15. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  16. 尋找您在 步驟 1:建立 S3 儲存貯體 中建立的儲存貯體,選擇儲存貯體名稱。

  17. 選擇屬性索引標籤。在 Default encryption (預設加密) 下,選擇 Edit (編輯)。

  18. Server-side Encryption (伺服器端加密) 下,選擇 Enable (啟用)。

  19. Encryption type (加密類型) 下,選擇 AWS Key Management Service key (SSE-KMS) ( 金鑰 (SSE-KMS))。

  20. 從您的 AWS KMS 金鑰中選擇「選擇」,然後尋找您建立的金鑰。

  21. Bucket Key (儲存貯體金鑰) 下,選擇 Enable (啟用)。

  22. 選擇儲存變更

步驟 5:建立匯出任務

在此步驟中,您會建立從日誌群組匯出日誌的匯出任務。

若要使用 CloudWatch 主控台將資料匯出到 Amazon S3
  1. 步驟 2:設置存取許可 中所示,以足夠的許可登入。

  2. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  3. 在導覽窗格中,選擇 Log groups (日誌群組)。

  4. Log Groups (日誌群組) 畫面上,選擇日誌群組的名稱。

  5. 選擇 Actions (動作)、Export data to Amazon S3 (匯出資料至 Amazon S3)。

  6. Export data to Amazon S3 (匯出資料至 Amazon S3) 畫面的 Define data to export (定義資料匯出) 下方,使用 From (從) 和 To (至) 設定所要匯出資料的時間範圍。

  7. 如果您的日誌群組有多個日誌串流,您可以提供日誌串流前綴,將日誌群組資料限制於特定串流。選擇 Advanced (進階),然後針對 Stream prefix (串流前綴),輸入日誌串流前綴。

  8. Choose S3 bucket (選擇 S3 儲存貯體) 下,選擇與 S3 儲存貯體關聯的帳戶。

  9. S3 bucket name (S3 儲存貯體名稱) 中,選擇一個 S3 儲存貯體。

  10. 針對 S3 Bucket prefix (S3 儲存貯體前綴),輸入您在儲存貯體政策中指定的隨機產生字串。

  11. 選擇 Export (匯出) 將您的日誌資料匯出至 Amazon S3。

  12. 若要檢視您匯出至 Amazon S3 的日誌資料的狀態,請選擇 Actions (動作,然後選擇 View all exports to Amazon S3 (檢視所有匯出至 Amazon S3 的項目)。

跨帳戶匯出

如果 Amazon S3 儲存貯體與要匯出的日誌位於不同帳戶,請參閱本區段的說明。

步驟 1:建立 Amazon S3 儲存貯體

我們建議您使用專門為 CloudWatch Logs 建立的值區。不過,如果您想要使用現有的儲存貯體,您可以跳到步驟 2。

注意

S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。 CloudWatch 日誌不支援將資料匯出到不同區域中的 S3 儲存貯體。

建立 S3 儲存貯體
  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 如有必要請變更區域。在導覽列中,選擇記 CloudWatch 錄所在的區域。

  3. 選擇 Create Bucket (建立儲存貯體)。

  4. 針對 Bucket Name (儲存貯體名稱),輸入儲存貯體的名稱。

  5. 針對「區域」,選取 CloudWatch 記錄資料所在的區域。

  6. 選擇建立

步驟 2:設置存取許可

首先,您必須建立新的 IAM 政策,讓 CloudWatch 日誌擁有目的地帳戶中目的地 Amazon S3 儲存貯體的s3:PutObject許可。

您建立的政策取決於目的地儲存貯體是否使用 AWS KMS 加密。

若要建立 IAM 政策將日誌匯出至 Amazon S3 儲存貯體
  1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在左側的導覽窗格中,選擇 Policies (政策)

  3. 選擇 Create policy (建立政策)。

  4. 政策編輯器區段中,選擇 JSON

  5. 如果目的地值區未使用 AWS KMS 加密,請將下列原則貼到編輯器中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" } ] }

    如果目的地儲存貯體確實使用 AWS KMS 加密,請將下列原則貼到編輯器中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  6. 選擇下一步

  7. 輸入政策名稱。您會使用此名稱為您的 IAM 角色附加政策。

  8. 選擇建立政策,儲存新政策。

若要在步驟 5 中建立匯出任務,您將需要使用 AmazonS3ReadOnlyAccess IAM 角色登入。您也必須使用剛才建立的 IAM 政策登入,並具有以下許可:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

若要提供存取權,請新增權限至您的使用者、群組或角色:

  • 使用者和群組位於 AWS IAM Identity Center:

    建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。

  • 透過身分提供者在 IAM 中管理的使用者:

    建立聯合身分的角色。請按照 IAM 使用者指南為第三方身分提供者 (聯合) 建立角色 中的指示進行操作。

  • IAM 使用者:

步驟 3:設定 S3 儲存貯體的許可

依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的 AWS 帳戶 ,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。

當您設定政策時,我們建議您包含隨機產生的字串做為儲存貯體的前綴,如此一來,只有適用的日誌串流才會匯出到儲存貯體。

重要

為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。

在下列範例中,aws:SourceAccount金鑰中的帳戶 ID 清單將是使用者可以從中將日誌資料匯出到 S3 儲存貯體的帳戶。aws:SourceArn 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。

我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。

設定 Amazon S3 儲存貯體的許可
  1. 在 Amazon S3 主控台中,選擇您在步驟 1 建立的儲存貯體。

  2. 選擇 Permissions (許可)Bucket policy (儲存貯體政策)

  3. Bucket Policy Editor (儲存貯體政策編輯器) 中,輸入下列政策。將 my-exported-logs 變更為 Amazon S3 儲存貯體的名稱。務必為主體指定正確的區域端點,例如 us-west-1

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  4. 選擇 Save (儲存),將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch 日誌將日誌資料匯出到 S3 儲存貯體。儲存貯體擁有者擁有所有匯出物件的完整許可。

    警告

    如果現有值區已附加一或多個政策,請新增該政策或政策的 CloudWatch 記錄存取權限的陳述式。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。

(選用) 步驟 4:匯出至使用 SSE-KMS 加密的儲存貯體

只有在匯出到使用伺服器端加密的 S3 儲存貯體時,才需要執行此步驟 AWS KMS keys。這種加密稱為 SSE-KMS。

匯出至使用 SSE-KMS 加密的儲存貯體
  1. 請在以下位置開啟 AWS KMS 主控台。 https://console.aws.amazon.com/kms

  2. 若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。

  3. 在左側導覽列中,選擇 Customer managed keys (客戶受管金鑰)。

    選擇 Create Key (建立金鑰)。

  4. 針對 Key type (金鑰類型),請選擇 Symmetric (對稱)

  5. Key usage (金鑰用途) 中,選擇 Encrypt and decrypt (加密與解密),然後選擇 Next (下一步)。

  6. Add labels (加入標示) 下,輸入金鑰的別名,並選擇是否新增說明或標籤。然後選擇下一步

  7. Key administrators (金鑰管理員) 下,選取可管理此金鑰的人員,然後選擇 Next (下一步)。

  8. Define key usage permissions (定義金鑰用途許可) 下,不進行變更,然後選擇 Next (下一步)。

  9. 檢閱設定,然後選擇 Finish (完成)。

  10. 返回 Customer managed keys (客戶受管金鑰) 頁面,選擇您剛建立的金鑰名稱。

  11. 選擇 Key policy (金鑰政策) 索引標籤,並選擇 Switch to policy view (切換至政策檢視)。

  12. Key policy (金鑰政策) 區段中,選擇 Edit (編輯)。

  13. 將下列陳述式新增至金鑰政策陳述式清單。執行時,請將 Region 替換為日誌區域,並以所擁有 KMS 金鑰的帳戶 ARN 替換 account-ARN

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  14. 選擇儲存變更

  15. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  16. 尋找您在 步驟 1:建立 S3 儲存貯體 中建立的儲存貯體,選擇儲存貯體名稱。

  17. 選擇屬性索引標籤。在 Default encryption (預設加密) 下,選擇 Edit (編輯)。

  18. Server-side Encryption (伺服器端加密) 下,選擇 Enable (啟用)。

  19. Encryption type (加密類型) 下,選擇 AWS Key Management Service key (SSE-KMS) ( 金鑰 (SSE-KMS))。

  20. 從您的 AWS KMS 金鑰中選擇「選擇」,然後尋找您建立的金鑰。

  21. Bucket Key (儲存貯體金鑰) 下,選擇 Enable (啟用)。

  22. 選擇儲存變更

步驟 5:建立匯出任務

在此步驟中,您會建立從日誌群組匯出日誌的匯出任務。

若要使用 CloudWatch 主控台將資料匯出到 Amazon S3
  1. 步驟 2:設置存取許可 中所示,以足夠的許可登入。

  2. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  3. 在導覽窗格中,選擇 Log groups (日誌群組)。

  4. Log Groups (日誌群組) 畫面上,選擇日誌群組的名稱。

  5. 選擇 Actions (動作)、Export data to Amazon S3 (匯出資料至 Amazon S3)。

  6. Export data to Amazon S3 (匯出資料至 Amazon S3) 畫面的 Define data to export (定義資料匯出) 下方,使用 From (從) 和 To (至) 設定所要匯出資料的時間範圍。

  7. 如果您的日誌群組有多個日誌串流,您可以提供日誌串流前綴,將日誌群組資料限制於特定串流。選擇 Advanced (進階),然後針對 Stream prefix (串流前綴),輸入日誌串流前綴。

  8. Choose S3 bucket (選擇 S3 儲存貯體) 下,選擇與 S3 儲存貯體關聯的帳戶。

  9. S3 bucket name (S3 儲存貯體名稱) 中,選擇一個 S3 儲存貯體。

  10. 針對 S3 Bucket prefix (S3 儲存貯體前綴),輸入您在儲存貯體政策中指定的隨機產生字串。

  11. 選擇 Export (匯出) 將您的日誌資料匯出至 Amazon S3。

  12. 若要檢視您匯出至 Amazon S3 的日誌資料的狀態,請選擇 Actions (動作,然後選擇 View all exports to Amazon S3 (檢視所有匯出至 Amazon S3 的項目)。