를 사용하여 Amazon S3로 로그 데이터를 내보냅니다. AWS CLI - 아마존 CloudWatch 로그

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 Amazon S3로 로그 데이터를 내보냅니다. AWS CLI

다음 예시에서는 내보내기 작업을 사용하여 이름이 지정된 로그 CloudWatch 로그 그룹에서 이름이 지정된 Amazon S3 my-log-group 버킷으로 모든 데이터를 내보냅니다my-exported-logs. 이 예제에서는 이름이 my-log-group인 로그 그룹을 이미 생성했다고 가정합니다.

에 의해 암호화된 S3 버킷으로 로그 데이터를 내보내는 AWS KMS 것이 지원됩니다. DSSE-로 암호화된 버킷으로 내보내는 KMS 것은 지원되지 않습니다.

내보내기 설정 방법에 대한 세부 정보는 내보내려는 Amazon S3 버킷이 내보내는 로그와 동일한 계정에 있는지, 또는 다른 계정에 있는지에 따라 다릅니다.

동일한 계정에 내보내기

Amazon S3 버킷이 내보내는 로그와 동일한 계정에 있는 경우 이 섹션의 지침을 사용합니다.

1단계: S3 버킷 생성

CloudWatch 로그용으로 특별히 생성된 버킷을 사용하는 것이 좋습니다. 그러나 기존 버킷을 사용하고 싶으면 2단계로 건너뛸 수 있습니다.

참고

S3 버킷은 내보낼 로그 데이터와 동일한 지역에 있어야 합니다. CloudWatch 로그는 다른 지역의 S3 버킷으로 데이터를 내보내는 것을 지원하지 않습니다.

를 사용하여 S3 버킷을 만들려면 AWS CLI

명령 프롬프트에서 다음 create-bucket 명령을 입력합니다. 여기서 LocationConstraint는 로그 데이터를 내보내는 리전입니다.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

출력의 예시는 다음과 같습니다.

{ "Location": "/my-exported-logs" }

2단계: 액세스 권한 설정

5단계에서 내보내기 작업을 생성하려면 해당 AmazonS3ReadOnlyAccess IAM 역할과 다음 권한으로 로그온해야 합니다.

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:

  • AWS IAM Identity Center다음 지역의 사용자 및 그룹:

    권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서권한 세트 생성의 지침을 따릅니다.

  • ID 공급자를 IAM 통해 관리되는 사용자:

    ID 페더레이션을 위한 역할을 생성합니다. 사용 IAM설명서의 타사 ID 공급자 (페더레이션) 를 위한 역할 생성의 지침을 따르세요.

  • IAM사용자:

    • 사용자가 맡을 수 있는 역할을 생성합니다. 사용 설명서의 IAM사용자 역할 생성에 나와 있는 지침을 따르십시오. IAM

    • (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. 사용 설명서의 사용자 (콘솔) 에 권한 추가의 IAM 지침을 따르십시오.

3단계: S3 버킷에 대한 권한 설정

기본적으로 모든 S3 버킷 및 객체는 비공개입니다. 리소스 소유자(버킷을 생성한 계정)만 해당 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 그러나 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

중요

S3 버킷을 더 안전하게 내보내려면 이제 로그 데이터를 S3 버킷으로 내보낼 수 있는 소스 계정 목록을 지정해야 합니다.

다음 예제에서 aws:SourceAccount 키의 계정 IDs 목록은 사용자가 S3 버킷으로 로그 데이터를 내보낼 수 있는 계정입니다. aws:SourceArn 키는 작업이 수행되는 리소스가 됩니다. 이를 특정 로그 그룹으로 제한하거나 이 예와 같이 와일드카드를 사용할 수 있습니다.

동일한 계정 내에서 내보내기를 허용하려면 S3 버킷이 생성된 계정의 계정 ID도 포함하는 것이 좋습니다.

S3 버킷에 대한 권한을 설정하려면
  1. 이름이 policy.json인 파일을 생성하고 다음 액세스 정책을 추가합니다. my-exported-logs을(를) S3 버킷의 이름으로 변경하고 Principal을(를) 로그 데이터(예: us-west-1)를 내보내는 리전의 엔드포인트로 변경합니다. 텍스트 편집기를 사용하여 이 정책 파일을 생성합니다. IAM 콘솔을 사용하지 마십시오.

    { "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:*", ... ] } } } ] }
  2. put-bucket-policy명령을 사용하여 방금 버킷에 액세스 정책으로 추가한 정책을 설정합니다. 이 정책을 사용하면 CloudWatch 로그가 로그 데이터를 S3 버킷으로 내보낼 수 있습니다. 버킷 소유자는 내보낸 모든 개체에 대해 모든 권한을 갖게 됩니다.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    주의

    기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 해당 정책 또는 정책에 CloudWatch 로그 액세스에 대한 설명을 추가하십시오. 발생한 권한 집합이 버킷에 액세스하는 사용자에게 적절한지를 여부를 평가하는 것이 좋습니다.

(선택 사항) 4단계: SSE -로 암호화된 버킷으로 내보내기 KMS

이 단계는 서버 측 암호화를 사용하는 S3 버킷으로 내보내는 경우에만 필요합니다. AWS KMS keys이 암호화를 -라고 합니다. SSE KMS

SSE-로 암호화된 버킷으로 내보내려면 KMS
  1. 텍스트 편집기를 사용하여 이름이 key_policy.json인 파일을 생성하고 다음 액세스 정책을 추가합니다. 정책을 추가할 때 다음과 같이 변경합니다.

    • Replace Region 로그의 지역과 함께.

    • Replace account-ARN KMS키를 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": "*" } ] }
  2. 다음 명령을 입력합니다.

    aws kms create-key --policy file://key_policy.json

    다음은 이 명령의 출력 예시입니다.

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account_id: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 }
  3. 텍스트 편집기를 사용하여 다음 내용을 포함하는 bucketencryption.json이라는 파일을 생성합니다.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. 다음 명령을 입력하여 대체합니다.bucket-name 로그를 내보내는 대상 버킷의 이름을 입력합니다.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    명령이 오류를 반환하지 않으면 프로세스가 성공한 것입니다.

5단계: 내보내기 작업 생성

다음 명령을 사용하여 내보내기 작업을 생성합니다. 생성하고 나면 내보낼 데이터의 크기에 따라 내보내기 작업에 몇 초부터 몇 시간까지 소요될 수 있습니다.

를 사용하여 Amazon S3로 데이터를 내보내려면 AWS CLI
  1. 2단계: 액세스 권한 설정에 설명된 대로 충분한 권한으로 로그인합니다.

  2. 명령 프롬프트에서 다음 create-export-task명령을 사용하여 내보내기 작업을 생성합니다.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "my-exported-logs" --destination-prefix "export-task-output"

    출력의 예시는 다음과 같습니다.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }

다른 계정에 내보내기

Amazon S3 버킷이 내보내는 로그와 다른 계정에 있는 경우 이 섹션의 지침을 사용합니다.

1단계: S3 버킷 생성

CloudWatch 로그용으로 특별히 만든 버킷을 사용하는 것이 좋습니다. 그러나 기존 버킷을 사용하고 싶으면 2단계로 건너뛸 수 있습니다.

참고

S3 버킷은 내보낼 로그 데이터와 동일한 지역에 있어야 합니다. CloudWatch 로그는 다른 지역의 S3 버킷으로 데이터를 내보내는 것을 지원하지 않습니다.

를 사용하여 S3 버킷을 만들려면 AWS CLI

명령 프롬프트에서 다음 create-bucket 명령을 입력합니다. 여기서 LocationConstraint는 로그 데이터를 내보내는 리전입니다.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

출력의 예시는 다음과 같습니다.

{ "Location": "/my-exported-logs" }

2단계: 액세스 권한 설정

먼저, CloudWatch Logs가 대상 Amazon S3 버킷에 대한 s3:PutObject 권한을 갖도록 하려면 새 IAM 정책을 생성해야 합니다.

5단계에서 내보내기 작업을 생성하려면 AmazonS3ReadOnlyAccess IAM 역할 및 기타 특정 권한으로 로그온해야 합니다. 이러한 기타 필요한 권한 중 일부를 포함하는 정책을 생성할 수 있습니다.

생성하는 정책은 대상 버킷이 AWS KMS 암호화를 사용하는지 여부에 따라 달라집니다. 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" } ] }

5단계에서 내보내기 작업을 생성하려면 방금 생성한 IAM 정책과 AmazonS3ReadOnlyAccess IAM 역할, 그리고 다음 권한으로 로그온해야 합니다.

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:

  • 내 사용자 및 그룹 AWS IAM Identity Center:

    권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서권한 세트 생성의 지침을 따릅니다.

  • ID 공급자를 IAM 통해 관리되는 사용자:

    ID 페더레이션을 위한 역할을 생성합니다. 사용 IAM설명서의 타사 ID 공급자 (페더레이션) 를 위한 역할 생성의 지침을 따르세요.

  • IAM사용자:

    • 사용자가 맡을 수 있는 역할을 생성합니다. 사용 설명서의 IAM사용자 역할 생성에 나와 있는 지침을 따르십시오. IAM

    • (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. 사용 설명서의 사용자 (콘솔) 에 권한 추가의 IAM 지침을 따르십시오.

3단계: S3 버킷에 대한 권한 설정

기본적으로 모든 S3 버킷 및 객체는 비공개입니다. 리소스 소유자(버킷을 생성한 계정)만 해당 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 그러나 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

중요

S3 버킷을 더 안전하게 내보내려면 이제 로그 데이터를 S3 버킷으로 내보낼 수 있는 소스 계정 목록을 지정해야 합니다.

다음 예제에서 aws:SourceAccount 키의 계정 IDs 목록은 사용자가 S3 버킷으로 로그 데이터를 내보낼 수 있는 계정입니다. aws:SourceArn 키는 작업이 수행되는 리소스가 됩니다. 이를 특정 로그 그룹으로 제한하거나 이 예와 같이 와일드카드를 사용할 수 있습니다.

동일한 계정 내에서 내보내기를 허용하려면 S3 버킷이 생성된 계정의 계정 ID도 포함하는 것이 좋습니다.

S3 버킷에 대한 권한을 설정하려면
  1. 이름이 policy.json인 파일을 생성하고 다음 액세스 정책을 추가합니다. my-exported-logs을(를) S3 버킷의 이름으로 변경하고 Principal을(를) 로그 데이터(예: us-west-1)를 내보내는 리전의 엔드포인트로 변경합니다. 텍스트 편집기를 사용하여 이 정책 파일을 생성합니다. IAM 콘솔을 사용하지 마십시오.

    { "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" } } } ] }
  2. put-bucket-policy명령을 사용하여 방금 버킷에 액세스 정책으로 추가한 정책을 설정합니다. 이 정책을 사용하면 CloudWatch 로그가 로그 데이터를 S3 버킷으로 내보낼 수 있습니다. 버킷 소유자는 내보낸 모든 개체에 대해 모든 권한을 갖게 됩니다.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    주의

    기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 해당 정책 또는 정책에 CloudWatch 로그 액세스에 대한 설명을 추가하십시오. 발생한 권한 집합이 버킷에 액세스하는 사용자에게 적절한지를 여부를 평가하는 것이 좋습니다.

(선택 사항) 4단계: SSE -로 암호화된 버킷으로 내보내기 KMS

이 단계는 서버 측 암호화를 사용하는 S3 버킷으로 내보내는 경우에만 필요합니다. AWS KMS keys이 암호화를 -라고 합니다. SSE KMS

SSE-로 암호화된 버킷으로 내보내려면 KMS
  1. 텍스트 편집기를 사용하여 이름이 key_policy.json인 파일을 생성하고 다음 액세스 정책을 추가합니다. 정책을 추가할 때 다음과 같이 변경합니다.

    • Replace Region 로그의 지역과 함께.

    • Replace account-ARN KMS키를 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" } ] }
  2. 다음 명령을 입력합니다.

    aws kms create-key --policy file://key_policy.json

    다음은 이 명령의 출력 예시입니다.

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account_id: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 }
  3. 텍스트 편집기를 사용하여 다음 내용을 포함하는 bucketencryption.json이라는 파일을 생성합니다.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. 다음 명령을 입력하여 대체합니다.bucket-name 로그를 내보내는 대상 버킷의 이름을 입력합니다.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    명령이 오류를 반환하지 않으면 프로세스가 성공한 것입니다.

5단계: 내보내기 작업 생성

다음 명령을 사용하여 내보내기 작업을 생성합니다. 생성하고 나면 내보낼 데이터의 크기에 따라 내보내기 작업에 몇 초부터 몇 시간까지 소요될 수 있습니다.

를 사용하여 Amazon S3로 데이터를 내보내려면 AWS CLI
  1. 2단계: 액세스 권한 설정에 설명된 대로 충분한 권한으로 로그인합니다.

  2. 명령 프롬프트에서 다음 create-export-task명령을 사용하여 내보내기 작업을 생성합니다.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "my-exported-logs" --destination-prefix "export-task-output"

    출력의 예시는 다음과 같습니다.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }