本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 將日誌資料匯出至 Amazon S3 AWS CLI
在以下範例中,您將使用匯出任務,從名為 my-log-group 的 CloudWatch Logs 日誌群組,將所有資料匯出至名為 amzn-s3-demo-bucket 的 Amazon S3 儲存貯體。此範例假設您已建立一個名為 my-log-group 的日誌群組。
AWS KMS支援將日誌資料匯出至 加密的 S3 儲存貯體。不支援匯出至使用 DSSE-KMS 加密的儲存貯體。
如何設定匯出作業的詳細方法,取決於您要存放匯出資料的 Amazon S3 儲存貯體是否與要匯出的日誌位於同一帳戶。
相同帳戶匯出 (CLI)
如果 Amazon S3 儲存貯體與要匯出的日誌位於同一帳戶,請參閱本區段的說明。
主題
建立 S3 儲存貯體 (CLI)
我們建議您使用專為 CloudWatch Logs 建立的儲存貯體。不過,如果您想要使用現有的儲存貯體,您可以略過此程序。
注意
S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。CloudWatch Logs 不支援將資料匯出至不同區域中的 S3 儲存貯體。
使用 建立 S3 儲存貯體AWS CLI
在命令提示中執行以下 create-bucket 命令,其中的 LocationConstraint 是您要匯出日誌資料的區域。
aws s3api create-bucket --bucketamzn-s3-demo-bucket--create-bucket-configuration LocationConstraint=us-east-2
以下為範例輸出。
{ "Location": "/amzn-s3-demo-bucket" }
設定存取許可 (CLI)
若要稍後建立匯出任務,您需要使用 IAM AmazonS3ReadOnlyAccess 角色和下列許可登入:
-
logs:CreateExportTask -
logs:CancelExportTask -
logs:DescribeExportTasks -
logs:DescribeLogStreams -
logs:DescribeLogGroups
若要提供存取權,請新增權限至您的使用者、群組或角色:
-
中的使用者和群組AWS IAM Identity Center:
建立權限合集。請按照《AWS IAM Identity Center 使用者指南》中的建立權限合集說明進行操作。
-
透過身分提供者在 IAM 中管理的使用者:
建立聯合身分的角色。遵循《IAM 使用者指南》的為第三方身分提供者 (聯合) 建立角色中的指示。
-
IAM 使用者:
-
建立您的使用者可擔任的角色。請按照《IAM 使用者指南》的為 IAM 使用者建立角色中的指示。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循《IAM 使用者指南》的新增許可到使用者 (主控台) 中的指示。
-
設定 S3 儲存貯體的許可 (CLI)
依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的帳戶,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。
重要
為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。
在下列範例中,aws:SourceAccount金鑰中的帳戶 IDs 清單會是使用者可以將日誌資料匯出至 S3 儲存貯體的帳戶。aws:SourceArn 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。
設定 S3 儲存貯體的許可
-
建立名為
policy.json的檔案,然後新增以下存取政策,將amzn-s3-demo-bucket變更為您的 S3 儲存貯體名稱,然後將Principal變更為您匯出日誌資料的區域端點,例如us-east-1。請使用文字編輯器來建立此政策檔案。請勿使用 IAM 主控台。 -
使用 put-bucket-policy 命令,將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch Logs 將日誌資料匯出至您的 S3 儲存貯體。儲存貯體擁有者將擁有所有匯出物件的完整許可。
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json警告
如果現有的儲存貯體已連接一個或多個政策,請新增陳述式讓 CloudWatch Logs 存取這個或這些政策。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。
(選用) 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體 (CLI)
只有在您匯出至使用伺服器端加密的 S3 儲存貯體時,才需要此程序AWS KMS keys。這種加密稱為 SSE-KMS。
匯出至使用 SSE-KMS 加密的儲存貯體
-
使用文字編輯器建立名為
key_policy.json的檔案,並新增下列存取政策。新增政策時,進行下列變更:-
將
Region替換成您的日誌區域。 -
將
account-ARN替換成所擁有 KMS 金鑰的帳戶 ARN。
-
-
輸入以下命令:
aws kms create-key --policy file://key_policy.json以下為此命令的範例輸出:
{ "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account-ARN:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } -
使用文字編輯器建立名為
bucketencryption.json的檔案,包含下列內容。{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] } -
輸入下列命令,以您要匯出日誌的儲存貯體名稱取代
amzn-s3-demo-bucket。aws s3api put-bucket-encryption --bucketamzn-s3-demo-bucket--server-side-encryption-configuration file://bucketencryption.json如果命令沒有傳回錯誤,則表示該流程成功。
建立匯出任務 (CLI)
使用以下命令建立匯出任務。在您建立匯出任務後,此任務可能需花費幾秒到幾小時的時間,視匯出資料的大小而定。
使用 將資料匯出至 Amazon S3 AWS CLI
-
如 設定存取許可 (CLI) 中所示,以足夠的許可登入。
-
在命令提示中,使用下列 create-export-task 命令以建立匯出任務。
aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from1441490400000--to1441494000000--destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"以下為範例輸出。
{ "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }
跨帳戶匯出 (CLI)
如果 Amazon S3 儲存貯體與要匯出的日誌位於不同帳戶,請參閱本區段的說明。
主題
建立 S3 儲存貯體以進行跨帳戶匯出 (CLI)
我們建議您使用專為 CloudWatch Logs 建立的儲存貯體。不過,如果您想要使用現有的儲存貯體,您可以跳到步驟 2。
注意
S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。CloudWatch Logs 不支援將資料匯出至不同區域中的 S3 儲存貯體。
使用 建立 S3 儲存貯體AWS CLI
在命令提示中執行以下 create-bucket 命令,其中的 LocationConstraint 是您要匯出日誌資料的區域。
aws s3api create-bucket --bucketamzn-s3-demo-bucket--create-bucket-configuration LocationConstraint=us-east-2
以下為範例輸出。
{ "Location": "/amzn-s3-demo-bucket" }
設定跨帳戶匯出的存取許可 (CLI)
首先,您必須建立新的 IAM 政策,讓 CloudWatch Logs 在目的地帳戶中擁有目的地 Amazon S3 儲存貯體s3:PutObject的動作。
除了 s3:PutObject動作之外,政策中包含的其他動作取決於目的地儲存貯體是否使用AWS KMS加密,或使用 S3 物件擁有權設定啟用 ACLs。
如果使用 KMS 加密,請新增金鑰資源的
kms:GenerateDataKey和kms:Decrypt動作如果在儲存貯體上啟用 ACLs,請新增儲存貯體資源
s3:PutObjectAcl的動作
在下列政策中amzn-s3-demo-bucket,將 變更為目的地 S3 儲存貯體的名稱。
您建立的政策取決於目的地儲存貯體是否使用 AWS KMS 加密。如果不使用AWS KMS加密,請使用下列內容建立政策。
如果目的地儲存貯體使用AWS KMS加密,請使用下列內容建立政策。
如果已在目的地儲存貯體上啟用 ACLs,請在上述政策中將 s3:PutObjectAcl 新增至 s3:PutObject 動作區塊。
若要建立匯出任務,您必須使用已連接 AmazonS3ReadOnlyAccess受管政策的 IAM 角色、上述建立的 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 使用者指南》的新增許可到使用者 (主控台) 中的指示。
-
設定 S3 儲存貯體的許可以進行跨帳戶匯出 (CLI)
依據預設,所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的帳戶,才能存取儲存貯體及其包含的任何物件。不過,資源擁有者可藉由編寫存取政策,選擇將存取許可授予其他資源或使用者。
重要
為了使匯出至 S3 儲存貯體更加安全,現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。
在下列範例中,aws:SourceAccount金鑰中的帳戶 IDs 清單會是使用者可以將日誌資料匯出至 S3 儲存貯體的帳戶。aws:SourceArn 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組,或使用萬用字元,如本範例所示。
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID,以允許在同一帳戶內匯出。
設定 S3 儲存貯體的許可
-
建立名為 的檔案,
policy.json並將下列存取政策變更為目的地 S3 儲存貯體amzn-s3-demo-bucket的名稱,Principal並新增至您要匯出日誌資料的 區域的端點,例如us-west-1。請使用文字編輯器來建立此政策檔案。請勿使用 IAM 主控台。 -
使用 put-bucket-policy 命令,將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch Logs 將日誌資料匯出至您的 S3 儲存貯體。儲存貯體擁有者將擁有所有匯出物件的完整許可。
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json警告
如果現有的儲存貯體已連接一個或多個政策,請新增陳述式讓 CloudWatch Logs 存取這個或這些政策。我們建議您評估所產生的一組許可,以確保它們適用於將存取儲存貯體的使用者。
(選用) 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體以進行跨帳戶匯出 (CLI)
只有在您匯出至使用伺服器端加密的 S3 儲存貯體時,才需要此程序AWS KMS keys。這種加密稱為 SSE-KMS。
匯出至使用 SSE-KMS 加密的儲存貯體
-
使用文字編輯器建立名為
key_policy.json的檔案,並新增下列存取政策。新增政策時,進行下列變更:-
將
us-east-1取代為日誌的區域。 -
將
account-ARN替換成所擁有 KMS 金鑰的帳戶 ARN。 -
將
123456789012取代為擁有 KMS 金鑰的帳號。 -
key_id與 kms-key ID。 -
role_name與用於建立匯出任務的角色。
-
-
輸入以下命令:
aws kms create-key --policy file://key_policy.json以下為此命令的範例輸出:
{ "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-1:123456789012:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } -
使用文字編輯器建立名為
bucketencryption.json的檔案,包含下列內容。{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] } -
輸入下列命令,以您要匯出日誌的儲存貯體名稱取代
amzn-s3-demo-bucket。aws s3api put-bucket-encryption --bucketamzn-s3-demo-bucket--server-side-encryption-configuration file://bucketencryption.json如果命令沒有傳回錯誤,則表示該流程成功。
建立跨帳戶匯出的匯出任務 (CLI)
使用以下命令建立匯出任務。在您建立匯出任務後,此任務可能需花費幾秒到幾小時的時間,視匯出資料的大小而定。
使用 將資料匯出至 Amazon S3 AWS CLI
-
如 設定存取許可 (CLI) 中所示,以足夠的許可登入。
-
在命令提示中,使用下列 create-export-task 命令以建立匯出任務。
aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from1441490400000--to1441494000000--destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"以下為範例輸出。
{ "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }