本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用主控台將日誌資料匯出至 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 儲存貯體
前往 https://console.aws.amazon.com/s3/
開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。 -
如有必要請變更區域。在導覽列中,選擇記 CloudWatch 錄所在的區域。
-
選擇 Create Bucket (建立儲存貯體)。
-
針對 Bucket Name (儲存貯體名稱),輸入儲存貯體的名稱。
-
針對「區域」,選取 CloudWatch 記錄資料所在的區域。
-
選擇建立。
步驟 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 使用者:
-
建立您的使用者可擔任的角色。請按照 IAM 使用者指南 的 為 IAM 使用者建立角色 中的指示進行操作。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循 IAM 使用者指南的新增許可到使用者 (主控台)中的指示。
-
步驟 3:設定 S3 儲存貯體的許可
依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的 AWS 帳戶 ,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。
當您設定政策時,我們建議您包含隨機產生的字串做為儲存貯體的前綴,如此一來,只有適用的日誌串流才會匯出到儲存貯體。
重要
為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。
在下列範例中,aws:SourceAccount
金鑰中的帳戶 ID 清單將是使用者可以從中將日誌資料匯出到 S3 儲存貯體的帳戶。aws:SourceArn
金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。
設定 Amazon S3 儲存貯體的許可
-
在 Amazon S3 主控台中,選擇您在步驟 1 建立的儲存貯體。
-
選擇 Permissions (許可)、Bucket policy (儲存貯體政策)。
-
在 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:*", ... ] } } } ] } -
選擇 Save (儲存),將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch 日誌將日誌資料匯出到 S3 儲存貯體。儲存貯體擁有者擁有所有匯出物件的完整許可。
警告
如果現有值區已附加一或多個政策,請新增該政策或政策的 CloudWatch 記錄存取權限的陳述式。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。
(選用) 步驟 4:匯出至使用 SSE-KMS 加密的儲存貯體
只有在匯出到使用伺服器端加密的 S3 儲存貯體時,才需要執行此步驟 AWS KMS keys。這種加密稱為 SSE-KMS。
匯出至使用 SSE-KMS 加密的儲存貯體
-
請在以下位置開啟 AWS KMS 主控台。
https://console.aws.amazon.com/kms -
若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。
-
在左側導覽列中,選擇 Customer managed keys (客戶受管金鑰)。
選擇 Create Key (建立金鑰)。
-
針對 Key type (金鑰類型),請選擇 Symmetric (對稱)。
-
在 Key usage (金鑰用途) 中,選擇 Encrypt and decrypt (加密與解密),然後選擇 Next (下一步)。
-
在 Add labels (加入標示) 下,輸入金鑰的別名,並選擇是否新增說明或標籤。然後選擇下一步。
-
在 Key administrators (金鑰管理員) 下,選取可管理此金鑰的人員,然後選擇 Next (下一步)。
-
在 Define key usage permissions (定義金鑰用途許可) 下,不進行變更,然後選擇 Next (下一步)。
-
檢閱設定,然後選擇 Finish (完成)。
-
返回 Customer managed keys (客戶受管金鑰) 頁面,選擇您剛建立的金鑰名稱。
-
選擇 Key policy (金鑰政策) 索引標籤,並選擇 Switch to policy view (切換至政策檢視)。
-
在 Key policy (金鑰政策) 區段中,選擇 Edit (編輯)。
-
將下列陳述式新增至金鑰政策陳述式清單。執行時,請將
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": "*" } ] } -
選擇儲存變更。
前往 https://console.aws.amazon.com/s3/
開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。 -
尋找您在 步驟 1:建立 S3 儲存貯體 中建立的儲存貯體,選擇儲存貯體名稱。
-
選擇屬性索引標籤。在 Default encryption (預設加密) 下,選擇 Edit (編輯)。
-
在 Server-side Encryption (伺服器端加密) 下,選擇 Enable (啟用)。
-
在 Encryption type (加密類型) 下,選擇 AWS Key Management Service key (SSE-KMS) ( 金鑰 (SSE-KMS))。
-
從您的 AWS KMS 金鑰中選擇「選擇」,然後尋找您建立的金鑰。
-
在 Bucket Key (儲存貯體金鑰) 下,選擇 Enable (啟用)。
-
選擇儲存變更。
步驟 5:建立匯出任務
在此步驟中,您會建立從日誌群組匯出日誌的匯出任務。
若要使用 CloudWatch 主控台將資料匯出到 Amazon S3
-
如 步驟 2:設置存取許可 中所示,以足夠的許可登入。
請在以下位置開啟 CloudWatch 主控台。
https://console.aws.amazon.com/cloudwatch/ -
在導覽窗格中,選擇 Log groups (日誌群組)。
-
在 Log Groups (日誌群組) 畫面上,選擇日誌群組的名稱。
-
選擇 Actions (動作)、Export data to Amazon S3 (匯出資料至 Amazon S3)。
-
在 Export data to Amazon S3 (匯出資料至 Amazon S3) 畫面的 Define data to export (定義資料匯出) 下方,使用 From (從) 和 To (至) 設定所要匯出資料的時間範圍。
-
如果您的日誌群組有多個日誌串流,您可以提供日誌串流前綴,將日誌群組資料限制於特定串流。選擇 Advanced (進階),然後針對 Stream prefix (串流前綴),輸入日誌串流前綴。
-
在 Choose S3 bucket (選擇 S3 儲存貯體) 下,選擇與 S3 儲存貯體關聯的帳戶。
-
在 S3 bucket name (S3 儲存貯體名稱) 中,選擇一個 S3 儲存貯體。
-
針對 S3 Bucket prefix (S3 儲存貯體前綴),輸入您在儲存貯體政策中指定的隨機產生字串。
-
選擇 Export (匯出) 將您的日誌資料匯出至 Amazon S3。
-
若要檢視您匯出至 Amazon S3 的日誌資料的狀態,請選擇 Actions (動作,然後選擇 View all exports to Amazon S3 (檢視所有匯出至 Amazon S3 的項目)。
跨帳戶匯出
如果 Amazon S3 儲存貯體與要匯出的日誌位於不同帳戶,請參閱本區段的說明。
步驟 1:建立 Amazon S3 儲存貯體
我們建議您使用專門為 CloudWatch Logs 建立的值區。不過,如果您想要使用現有的儲存貯體,您可以跳到步驟 2。
注意
S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。 CloudWatch 日誌不支援將資料匯出到不同區域中的 S3 儲存貯體。
建立 S3 儲存貯體
前往 https://console.aws.amazon.com/s3/
開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。 -
如有必要請變更區域。在導覽列中,選擇記 CloudWatch 錄所在的區域。
-
選擇 Create Bucket (建立儲存貯體)。
-
針對 Bucket Name (儲存貯體名稱),輸入儲存貯體的名稱。
-
針對「區域」,選取 CloudWatch 記錄資料所在的區域。
-
選擇建立。
步驟 2:設置存取許可
首先,您必須建立新的 IAM 政策,讓 CloudWatch 日誌擁有目的地帳戶中目的地 Amazon S3 儲存貯體的s3:PutObject
許可。
您建立的政策取決於目的地儲存貯體是否使用 AWS KMS 加密。
若要建立 IAM 政策將日誌匯出至 Amazon S3 儲存貯體
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 在左側的導覽窗格中,選擇 Policies (政策)。
選擇 Create policy (建立政策)。
在政策編輯器區段中,選擇 JSON。
如果目的地值區未使用 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
" } ] }選擇下一步。
輸入政策名稱。您會使用此名稱為您的 IAM 角色附加政策。
選擇建立政策,儲存新政策。
若要在步驟 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 使用者:
-
建立您的使用者可擔任的角色。請按照 IAM 使用者指南 的 為 IAM 使用者建立角色 中的指示進行操作。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循 IAM 使用者指南的新增許可到使用者 (主控台)中的指示。
-
步驟 3:設定 S3 儲存貯體的許可
依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的 AWS 帳戶 ,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。
當您設定政策時,我們建議您包含隨機產生的字串做為儲存貯體的前綴,如此一來,只有適用的日誌串流才會匯出到儲存貯體。
重要
為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。
在下列範例中,aws:SourceAccount
金鑰中的帳戶 ID 清單將是使用者可以從中將日誌資料匯出到 S3 儲存貯體的帳戶。aws:SourceArn
金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。
設定 Amazon S3 儲存貯體的許可
-
在 Amazon S3 主控台中,選擇您在步驟 1 建立的儲存貯體。
-
選擇 Permissions (許可)、Bucket policy (儲存貯體政策)。
-
在 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" } } } ] } -
選擇 Save (儲存),將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch 日誌將日誌資料匯出到 S3 儲存貯體。儲存貯體擁有者擁有所有匯出物件的完整許可。
警告
如果現有值區已附加一或多個政策,請新增該政策或政策的 CloudWatch 記錄存取權限的陳述式。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。
(選用) 步驟 4:匯出至使用 SSE-KMS 加密的儲存貯體
只有在匯出到使用伺服器端加密的 S3 儲存貯體時,才需要執行此步驟 AWS KMS keys。這種加密稱為 SSE-KMS。
匯出至使用 SSE-KMS 加密的儲存貯體
-
請在以下位置開啟 AWS KMS 主控台。
https://console.aws.amazon.com/kms -
若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。
-
在左側導覽列中,選擇 Customer managed keys (客戶受管金鑰)。
選擇 Create Key (建立金鑰)。
-
針對 Key type (金鑰類型),請選擇 Symmetric (對稱)。
-
在 Key usage (金鑰用途) 中,選擇 Encrypt and decrypt (加密與解密),然後選擇 Next (下一步)。
-
在 Add labels (加入標示) 下,輸入金鑰的別名,並選擇是否新增說明或標籤。然後選擇下一步。
-
在 Key administrators (金鑰管理員) 下,選取可管理此金鑰的人員,然後選擇 Next (下一步)。
-
在 Define key usage permissions (定義金鑰用途許可) 下,不進行變更,然後選擇 Next (下一步)。
-
檢閱設定,然後選擇 Finish (完成)。
-
返回 Customer managed keys (客戶受管金鑰) 頁面,選擇您剛建立的金鑰名稱。
-
選擇 Key policy (金鑰政策) 索引標籤,並選擇 Switch to policy view (切換至政策檢視)。
-
在 Key policy (金鑰政策) 區段中,選擇 Edit (編輯)。
-
將下列陳述式新增至金鑰政策陳述式清單。執行時,請將
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
" } ] } -
選擇儲存變更。
前往 https://console.aws.amazon.com/s3/
開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。 -
尋找您在 步驟 1:建立 S3 儲存貯體 中建立的儲存貯體,選擇儲存貯體名稱。
-
選擇屬性索引標籤。在 Default encryption (預設加密) 下,選擇 Edit (編輯)。
-
在 Server-side Encryption (伺服器端加密) 下,選擇 Enable (啟用)。
-
在 Encryption type (加密類型) 下,選擇 AWS Key Management Service key (SSE-KMS) ( 金鑰 (SSE-KMS))。
-
從您的 AWS KMS 金鑰中選擇「選擇」,然後尋找您建立的金鑰。
-
在 Bucket Key (儲存貯體金鑰) 下,選擇 Enable (啟用)。
-
選擇儲存變更。
步驟 5:建立匯出任務
在此步驟中,您會建立從日誌群組匯出日誌的匯出任務。
若要使用 CloudWatch 主控台將資料匯出到 Amazon S3
-
如 步驟 2:設置存取許可 中所示,以足夠的許可登入。
請在以下位置開啟 CloudWatch 主控台。
https://console.aws.amazon.com/cloudwatch/ -
在導覽窗格中,選擇 Log groups (日誌群組)。
-
在 Log Groups (日誌群組) 畫面上,選擇日誌群組的名稱。
-
選擇 Actions (動作)、Export data to Amazon S3 (匯出資料至 Amazon S3)。
-
在 Export data to Amazon S3 (匯出資料至 Amazon S3) 畫面的 Define data to export (定義資料匯出) 下方,使用 From (從) 和 To (至) 設定所要匯出資料的時間範圍。
-
如果您的日誌群組有多個日誌串流,您可以提供日誌串流前綴,將日誌群組資料限制於特定串流。選擇 Advanced (進階),然後針對 Stream prefix (串流前綴),輸入日誌串流前綴。
-
在 Choose S3 bucket (選擇 S3 儲存貯體) 下,選擇與 S3 儲存貯體關聯的帳戶。
-
在 S3 bucket name (S3 儲存貯體名稱) 中,選擇一個 S3 儲存貯體。
-
針對 S3 Bucket prefix (S3 儲存貯體前綴),輸入您在儲存貯體政策中指定的隨機產生字串。
-
選擇 Export (匯出) 將您的日誌資料匯出至 Amazon S3。
-
若要檢視您匯出至 Amazon S3 的日誌資料的狀態,請選擇 Actions (動作,然後選擇 View all exports to Amazon S3 (檢視所有匯出至 Amazon S3 的項目)。