

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

# Amazon CloudWatch Logs를 사용한 데이터 전송 모니터링
<a name="configure-logging"></a>

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

## DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용
<a name="cloudwatchlogs"></a>

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

------
#### [ Enhanced mode ]

확장 모드에서 DataSync는 작업 로그를 `/aws/datasync`라는 로그 그룹으로 자동 전송합니다. 해당 로그 그룹이에 없는 경우 AWS 리전 DataSync는 작업을 생성할 때 IAM [서비스 연결 역할을](https://docs.aws.amazon.com/datasync/latest/userguide/using-service-linked-roles-service-action-2.html) 사용하여 사용자를 대신하여 로그 그룹을 생성합니다.

------
#### [ 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`문에 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 자세한 내용은 [교차 서비스 혼동된 대리인 방지](cross-service-confused-deputy-prevention.md) 단원을 참조하십시오.

DataSync 작업 또는 작업을 지정하려면를 작업이 AWS 리전 위치한의 리전 코드(예: `us-west-2`)*`region`*로 바꾸고를 작업이 포함된 계정의 AWS 계정 ID*`account-id`*로 바꿉니다. CloudWatch 로그 그룹을 지정하려면 동일한 값을 바꾸세요. 특정 로그 그룹을 대상으로 지정하도록 `Resource`문을 변경할 수도 있습니다. `SourceArn` 및 `SourceAccount`사용에 대한 자세한 설명은 *IAM 사용자 가이드*의 [글로벌 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)를 참조하세요.

정책을 적용하려면 이 정책 설명을 로컬 컴퓨터의 파일에 저장합니다. 그런 다음 다음 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 리전 를 사용하여이 명령을 실행합니다.

자세한 내용은 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)를 참조하세요.

------

## DataSync 작업에 대한 로깅 구성
<a name="configure-logging-for-task"></a>

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

**시작하기 전 준비 사항**  
DataSync에는 CloudWatch 로그 그룹에 로그를 업로드할 수 있는 권한이 필요합니다. 자세한 내용은 [DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용](#cloudwatchlogs) 단원을 참조하십시오.

### DataSync 콘솔 사용
<a name="configure-logging-steps-console"></a>

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

1. [https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/) AWS DataSync 콘솔을 엽니다.

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

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

   자세한 내용은 [데이터를 어디로 전송할 수 있나요 AWS DataSync?](working-with-locations.md) 섹션을 참조하세요.

1. **설정 구성** 페이지에서 [작업 모드](choosing-task-mode.md)와 그 외 옵션을 선택합니다.

   다음 옵션 중 일부에 관심이 있을 수 있습니다.
   + [매니페스트](transferring-with-manifest.md) 또는 [필터](filtering.md)를 사용하여 전송할 데이터를 지정합니다.
   + [파일 메타데이터를 처리](configure-metadata.md)하고 [데이터 무결성을 확인](configure-data-verification-options.md)하는 방법을 구성합니다.

1. **로그 수준**에서 다음 옵션 중 하나를 선택합니다:
   + **전송 오류 같은 기초 정보 로그** - 로그에 기본 정보(예: 전송 오류)만 게시합니다.
   + **전송된 모든 객체 및 파일 로그** - DataSync가 전송하고 데이터 무결성 검사를 수행하는 모든 파일 또는 객체에 대한 로그를 게시합니다.
   + **로그 생성 안 함**

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

------
#### [ Enhanced mode ]

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

------
#### [ Basic mode ]

   **CloudWatch 로그 그룹**의 경우, 다음 중 하나를 수행하여 DataSync가 로그를 업로드할 권한이 있는 로그 그룹을 지정합니다.
   + **자동 생성**을 선택하여 DataSync가 로그를 업로드할 수 있는 로그 그룹을 자동으로 생성합니다.
   + 현재 AWS 리전에서 기존 로그 그룹을 선택합니다.

     기존 로그 그룹을 선택하는 경우 [DataSync에 해당 로그 그룹에 로그를 업로드할 권한이 있는지](#cloudwatchlogs) 확인합니다.

------

1. **작업 생성**을 선택합니다.

[작업을 시작](run-task.md)할 준비가 되었습니다.

### 사용 AWS CLI
<a name="configure-logging-steps-cli"></a>

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:*"
   ```

1. `--source-location-arn`에서 소스 위치의 Amazon 리소스 이름(ARN)을 지정합니다.

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

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

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

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

1. `LogLevel`에 대해 다음 옵션 중 하나를 지정하세요.
   + `BASIC` - 기본 정보(예: 전송 오류)만 포함하여 로그를 게시합니다.
   + `TRANSFER` - DataSync가 전송하는 모든 파일 또는 객체에 대한 로그를 게시하고 데이터 무결성 검사를 수행합니다.
   + `NONE` - 로그를 생성하지 않습니다.

1. `-cloudwatch-log-group-arn`에 대해 CloudWatch 로그 그룹의 ARN을 지정합니다.
**중요**  
`--task-mode`가 `ENHANCED`인 경우 이 옵션을 지정할 필요가 없습니다. 자세한 내용은 [DataSync가 CloudWatch 로그 그룹에 로그를 업로드하도록 허용](#cloudwatchlogs) 단원을 참조하십시오.

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

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

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

[작업을 시작](run-task.md)할 준비가 되었습니다.

### DataSync API 사용
<a name="configure-logging-steps-api"></a>

다음 작업 중 하나와 함께 `CloudWatchLogGroupArn`파라미터를 사용하여 작업에 대한 CloudWatch 로깅을 구성할 수 있습니다.
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)

## DataSync 작업 로그 보기
<a name="monitoring-verification-errors-cloudwatch"></a>

[작업을 시작할](run-task.md) 때 CloudWatch 콘솔 또는 AWS CLI (기타 옵션 중)를 사용하여 작업 실행의 로그를 볼 수 있습니다. 자세한 내용은 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)를 참조하세요.

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
```

------