Amazon CloudWatch Logs를 사용한 데이터 전송 모니터링 - AWS DataSync

Amazon CloudWatch Logs를 사용한 데이터 전송 모니터링

CloudWatch Logs를 사용하여 AWS DataSync 전송을 모니터링할 수 있습니다. 최소한 기본 정보(예: 전송 오류)를 기록하도록 작업을 구성하는 것이 좋습니다.

DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용

DataSync 작업에 대한 로깅을 구성하려면 DataSync가 로그를 전송할 권한이 있는 CloudWatch 로그 그룹이 필요합니다. AWS Identity and Access Management (IAM) 역할을 통해 이 액세스를 설정합니다. 구체적인 작동 방식은 작업 모드에 따라 달라집니다.

Enhanced mode

확장 모드에서 DataSync는 작업 로그를 /aws/datasync라는 로그 그룹으로 자동 전송합니다. 해당 로그 그룹이 AWS 리전에 없는 경우 DataSync는 작업 생성 시 IAM 서비스 연결 역할을 사용하여 사용자를 대신해 로그 그룹을 생성합니다.

Basic mode

기본 모드를 사용하여 DataSync 작업에 대한 CloudWatch 로그 그룹을 설정하는 몇 가지 방법이 있습니다. 콘솔에서는 대부분 DataSync가 로그를 업로드하는 데 필요한 권한을 포함하는 IAM 역할을 자동으로 생성할 수 있습니다. 이 자동 생성된 역할은 최소 권한 관점에서 볼 때 요구 사항을 충족하지 못할 수 있다는 점에 유의하세요.

기존 CloudWatch 로그 그룹을 사용하거나 프로그래밍 방식으로 작업을 생성하려는 경우, 이 IAM 역할을 직접 생성해야 합니다.

다음은 이러한 권한들을 부여하는 IAM 정책의 예시입니다.

{ "Version":"2012-10-17", "Statement": [ { "Sid": "DataSyncLogsToCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Principal": { "Service": "datasync.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:datasync:us-east-1:444455556666:task/*" ] }, "StringEquals": { "aws:SourceAccount": "444455556666" } }, "Resource": "arn:aws:logs:us-east-1:444455556666:log-group:*:*" } ] }

이 정책은 Condition문을 사용하여 지정된 계정의 DataSync 작업만 지정된 CloudWatch 로그 그룹에 액세스할 수 있도록 합니다. 혼동된 대리자 문제를 방지하려면 이러한 Condition문에 aws:SourceArnaws:SourceAccount 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 자세한 설명은 교차 서비스 혼동된 대리자 방지섹션을 참조하세요.

하나 또는 여러 개의 DataSync 작업을 지정하려면 region를 작업이 있는 AWS 리전 위치의 리전 코드(예: us-west-2)로 변경하고, account-id를 작업이 포함된 계정의 AWS 계정 ID로 변경하세요. CloudWatch 로그 그룹을 지정하려면 동일한 값을 바꾸세요. 특정 로그 그룹을 대상으로 지정하도록 Resource문을 변경할 수도 있습니다. SourceArnSourceAccount사용에 대한 자세한 설명은 IAM 사용자 가이드글로벌 조건 키를 참조하세요.

정책을 적용하려면 이 정책 설명을 로컬 컴퓨터의 파일에 저장합니다. 그러고 나서 다음 AWS CLI명령을 실행하여 리소스 정책을 적용합니다. 이 예시 명령을 사용하려면 full-path-to-policy-file를 정책 설명이 포함된 파일의 경로로 대체해야 합니다.

aws logs put-resource-policy --policy-name trust-datasync --policy-document file://full-path-to-policy-file
참고

DataSync 에이전트를 활성화한 AWS 계정및 AWS 리전위치와 동일한 위치를 사용하여 이 명령을 실행합니다.

자세한 내용은 Amazon CloudWatch Logs 사용 설명서를 참조하세요.

DataSync 작업에 대한 로깅 구성

DataSync 작업에 대해 일정 수준의 로깅을 구성하는 것이 좋습니다.

시작하기 전 준비 사항

DataSync에는 CloudWatch 로그 그룹에 로그를 업로드할 수 있는 권한이 필요합니다. 자세한 내용은 DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용 섹션을 참조하세요.

다음 지침에서는 작업을 생성할 때 CloudWatch 로깅을 구성하는 방법을 설명합니다. 또한 작업을 편집할 때 로깅을 구성할 수 있습니다.

  1. https://console.aws.amazon.com/datasync/에서 AWS DataSync콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 데이터 전송을 확장한 다음 작업을 선택하고 작업 생성을 선택합니다.

  3. 태스크의 소스 및 대상 위치를 구성합니다.

    자세한 내용은 AWS DataSync를 통해 데이터를 어디로 전송할 수 있나요? 섹션을 참조하세요.

  4. 설정 구성 페이지에서 작업 모드와 그 외 옵션을 선택합니다.

    다음 옵션 중 일부에 관심이 있을 수 있습니다.

  5. 로그 수준에서 다음 옵션 중 하나를 선택합니다:

    • 전송 오류 같은 기초 정보 로그 - 로그에 기본 정보(예: 전송 오류)만 게시합니다.

    • 전송된 모든 객체 및 파일 로그 - DataSync가 전송하고 데이터 무결성 검사를 수행하는 모든 파일 또는 객체에 대한 로그를 게시합니다.

    • 로그 생성 안 함

  6. CloudWatch 로그 그룹을 생성하거나 지정하는 데 사용하는 작업 모드에 따라 다음 중 하나를 수행합니다.

    Enhanced mode

    작업 생성을 선택하면 DataSync는 /aws/datasync라는 로그 그룹을 자동으로 사용(또는 생성)합니다.

    Basic mode

    CloudWatch 로그 그룹의 경우, 다음 중 하나를 수행하여 DataSync가 로그를 업로드할 권한이 있는 로그 그룹을 지정합니다.

  7. 작업 생성을 선택합니다.

작업을 시작할 준비가 되었습니다.

  1. 다음 create-task명령을 복사합니다.

    aws datasync create-task \ --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \ --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \ --task-mode "ENHANCED-or-BASIC" \ --name "task-name" \ --options '{"LogLevel": "log-level"}' \ --cloudwatch-log-group-arn "arn:aws:logs:us-east-1:account-id:log-group:log-group-name:*"
  2. --source-location-arn에서 소스 위치의 Amazon 리소스 이름(ARN)을 지정합니다.

  3. --destination-location-arn에서 대상 위치의 ARN을 지정합니다.

    AWS 리전 또는 계정 간에 전송하는 경우 ARN에 다른 리전 또는 계정 ID가 포함되어 있는지 확인합니다.

  4. --task-mode에 대해 ENHANCED 또는 BASIC을 지정합니다.

  5. (권장) --name에서 기억할 수 있는 작업의 이름을 지정합니다.

  6. LogLevel에 대해 다음 옵션 중 하나를 지정하세요.

    • BASIC - 기본 정보(예: 전송 오류)만 포함하여 로그를 게시합니다.

    • TRANSFER - DataSync가 전송하는 모든 파일 또는 객체에 대한 로그를 게시하고 데이터 무결성 검사를 수행합니다.

    • NONE - 로그를 생성하지 않습니다.

  7. -cloudwatch-log-group-arn에 대해 CloudWatch 로그 그룹의 ARN을 지정합니다.

    중요

    --task-modeENHANCED인 경우 이 옵션을 지정할 필요가 없습니다. 자세한 내용은 DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용 섹션을 참조하세요.

  8. create-task 명령을 실행합니다.

    명령이 성공하면 생성한 작업의 ARN을 보여주는 응답을 받게 됩니다. 예:

    { "TaskArn": "arn:aws:datasync:us-east-1:111222333444:task/task-08de6e6697796f026" }

작업을 시작할 준비가 되었습니다.

다음 작업 중 하나와 함께 CloudWatchLogGroupArn파라미터를 사용하여 작업에 대한 CloudWatch 로깅을 구성할 수 있습니다.

DataSync 작업 로그 보기

작업을 시작할 때 CloudWatch 콘솔 또는 AWS CLI(기타 옵션 중)를 사용하여 작업 실행의 로그를 확인할 수 있습니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서를 참조하세요.

DataSync는 확장 모드 작업에 대한 JSON 정형 로그를 제공합니다. 기본 모드 작업은 비정형 로그를 사용합니다. 다음 예시에서는 기본 모드 로그와 비교하여 확장 모드 로그에 확인 오류가 표시되는 방법을 보여줍니다.

Enhanced mode log example
{ "Action": "VERIFY", "Source": { "LocationId": "loc-abcdef01234567890", "RelativePath": "directory1/directory2/file1.txt" }, "Destination": { "LocationId": "loc-05ab2fdc272204a5f", "RelativePath": "directory1/directory2/file1.txt", "Metadata": { "Type": "Object", "ContentSize": 66060288, "LastModified": "2024-10-03T20:46:58Z", "S3": { "SystemMetadata": { "ContentType": "binary/octet-stream", "ETag": "\"1234abcd5678efgh9012ijkl3456mnop\"", "ServerSideEncryption": "AES256" }, "UserMetadata": { "file-mtime": "1602647222/222919600" }, "Tags": {} } } }, "ErrorCode": "FileNotAtSource", "ErrorDetail": "Verification failed due to file being present at the destination but not at the source" }
Basic mode log example
[NOTICE] Verification failed > /directory1/directory2/file1.txt [NOTICE] /directory1/directory2/file1.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=8972938 atime=1728657659/0 mtime=1728657659/0 extAttrsHash=0 [NOTICE] dstHash: f9c2cca900301d38b0930367d8d587153154af467da0fdcf1bebc0848ec72c0d