기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 Amazon S3로 로그 데이터 내보내기 AWS CLI
다음 예제에서는 내보내기 작업을 사용하여 이름이 인 CloudWatch Logs 로그 그룹에서 라는 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 사용 설명서의 권한 세트 생성의 지침을 따릅니다.
-
자격 증명 공급자를 IAM 통해 에서 관리되는 사용자:
ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서의 타사 자격 증명 공급자(페더레이션)에 대한 역할 생성의 지침을 따릅니다.
-
IAM 사용자:
-
사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서의 IAM 사용자 역할 생성의 지침을 따릅니다.
-
(권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서의 사용자(콘솔)에 권한 추가의 지침을 따릅니다.
-
3단계: S3 버킷에 대한 권한 설정
기본적으로 모든 S3 버킷 및 객체는 비공개입니다. 리소스 소유자(버킷을 생성한 계정)만 해당 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 그러나 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.
중요
S3 버킷을 더 안전하게 내보내려면 이제 로그 데이터를 S3 버킷으로 내보낼 수 있는 소스 계정 목록을 지정해야 합니다.
다음 예제에서 IDs aws:SourceAccount
키의 계정 목록은 사용자가 로그 데이터를 S3 버킷으로 내보낼 수 있는 계정입니다. aws:SourceArn
키는 작업이 수행되는 리소스가 됩니다. 이를 특정 로그 그룹으로 제한하거나 이 예와 같이 와일드카드를 사용할 수 있습니다.
동일한 계정 내에서 내보내기를 허용하려면 S3 버킷이 생성된 계정의 계정 ID도 포함하는 것이 좋습니다.
S3 버킷에 대한 권한을 설정하려면
-
이름이
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:*", ... ] } } } ] } -
put-bucket-policy 명령을 사용하여 버킷에 액세스 정책으로 방금 추가한 정책을 설정합니다. 이 정책을 통해 CloudWatch Logs는 로그 데이터를 S3 버킷으로 내보낼 수 있습니다. 버킷 소유자는 내보낸 모든 개체에 대해 모든 권한을 갖게 됩니다.
aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
주의
기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 해당 정책 또는 정책에 대한 CloudWatch Logs 액세스 문을 추가합니다. 발생한 권한 집합이 버킷에 액세스하는 사용자에게 적절한지를 여부를 평가하는 것이 좋습니다.
(선택 사항) 4단계: SSE-로 암호화된 버킷으로 내보내기KMS
이 단계는 를 사용하여 서버 측 암호화를 사용하는 S3 버킷으로 내보내는 경우에만 필요합니다 AWS KMS keys. 이 암호화를 SSE-라고 합니다KMS.
SSE로 암호화된 버킷으로 내보내려면KMS
-
텍스트 편집기를 사용하여 이름이
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": "*" } ] } -
-
다음 명령을 입력합니다.
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 } -
텍스트 편집기를 사용하여 다음 내용을 포함하는
bucketencryption.json
이라는 파일을 생성합니다.{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
-
다음 명령을 입력하고
bucket-name
로그를 내보내는 버킷의 이름을 사용합니다.aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.json명령이 오류를 반환하지 않으면 프로세스가 성공한 것입니다.
5단계: 내보내기 작업 생성
다음 명령을 사용하여 내보내기 작업을 생성합니다. 생성하고 나면 내보낼 데이터의 크기에 따라 내보내기 작업에 몇 초부터 몇 시간까지 소요될 수 있습니다.
를 사용하여 Amazon S3로 데이터를 내보내려면 AWS CLI
-
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
" --from1441490400000
--to1441494000000
--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단계: 액세스 권한 설정
먼저 새 IAM 정책을 생성하여 CloudWatch Logs가 대상 Amazon S3 버킷에 대한 s3:PutObject
권한을 갖도록 해야 합니다.
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단계에서 내보내기 작업을 생성하려면 AmazonS3ReadOnlyAccess
IAM 역할, 방금 생성한 IAM 정책 및 다음 권한으로 로그인해야 합니다.
logs:CreateExportTask
logs:CancelExportTask
logs:DescribeExportTasks
logs:DescribeLogStreams
logs:DescribeLogGroups
액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:
-
의 사용자 및 그룹 AWS IAM Identity Center:
권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서의 권한 세트 생성의 지침을 따릅니다.
-
자격 증명 공급자를 IAM 통해 에서 관리되는 사용자:
ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서의 타사 자격 증명 공급자(페더레이션)에 대한 역할 생성의 지침을 따릅니다.
-
IAM 사용자:
-
사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서의 IAM 사용자 역할 생성의 지침을 따릅니다.
-
(권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서의 사용자(콘솔)에 권한 추가의 지침을 따릅니다.
-
3단계: S3 버킷에 대한 권한 설정
기본적으로 모든 S3 버킷 및 객체는 비공개입니다. 리소스 소유자(버킷을 생성한 계정)만 해당 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 그러나 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.
중요
S3 버킷을 더 안전하게 내보내려면 이제 로그 데이터를 S3 버킷으로 내보낼 수 있는 소스 계정 목록을 지정해야 합니다.
다음 예제에서 IDs aws:SourceAccount
키의 계정 목록은 사용자가 로그 데이터를 S3 버킷으로 내보낼 수 있는 계정입니다. aws:SourceArn
키는 작업이 수행되는 리소스가 됩니다. 이를 특정 로그 그룹으로 제한하거나 이 예와 같이 와일드카드를 사용할 수 있습니다.
동일한 계정 내에서 내보내기를 허용하려면 S3 버킷이 생성된 계정의 계정 ID도 포함하는 것이 좋습니다.
S3 버킷에 대한 권한을 설정하려면
-
이름이
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" } } } ] } -
put-bucket-policy 명령을 사용하여 버킷에 액세스 정책으로 방금 추가한 정책을 설정합니다. 이 정책을 통해 CloudWatch Logs는 로그 데이터를 S3 버킷으로 내보낼 수 있습니다. 버킷 소유자는 내보낸 모든 개체에 대해 모든 권한을 갖게 됩니다.
aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
주의
기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 해당 정책 또는 정책에 대한 CloudWatch Logs 액세스 문을 추가합니다. 발생한 권한 집합이 버킷에 액세스하는 사용자에게 적절한지를 여부를 평가하는 것이 좋습니다.
(선택 사항) 4단계: SSE-로 암호화된 버킷으로 내보내기KMS
이 단계는 를 사용하여 서버 측 암호화를 사용하는 S3 버킷으로 내보내는 경우에만 필요합니다 AWS KMS keys. 이 암호화를 SSE-라고 합니다KMS.
SSE로 암호화된 버킷으로 내보내려면KMS
-
텍스트 편집기를 사용하여 이름이
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
" } ] } -
-
다음 명령을 입력합니다.
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 } -
텍스트 편집기를 사용하여 다음 내용을 포함하는
bucketencryption.json
이라는 파일을 생성합니다.{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
-
다음 명령을 입력하고
bucket-name
로그를 내보내는 버킷의 이름을 사용합니다.aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.json명령이 오류를 반환하지 않으면 프로세스가 성공한 것입니다.
5단계: 내보내기 작업 생성
다음 명령을 사용하여 내보내기 작업을 생성합니다. 생성하고 나면 내보낼 데이터의 크기에 따라 내보내기 작업에 몇 초부터 몇 시간까지 소요될 수 있습니다.
를 사용하여 Amazon S3로 데이터를 내보내려면 AWS CLI
-
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
" --from1441490400000
--to1441494000000
--destination "my-exported-logs
" --destination-prefix "export-task-output
"출력의 예시는 다음과 같습니다.
{ "taskId": "
cda45419-90ea-4db5-9833-aade86253e66
" }