

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

# 자습서:를 통해 온프레미스 스토리지에서 Amazon S3로 데이터 전송 AWS 계정
<a name="s3-cross-account-transfer"></a>

온프레미스 스토리지 AWS DataSync 와 함께를 AWS 사용하는 경우 일반적으로 DataSync 에이전트 AWS 계정 와 동일한에 속하는 스토리지 서비스로 데이터를 전송합니다. 하지만 다른 계정과 연계된 Amazon S3 버킷으로 데이터를 전송해야 하는 경우도 있습니다.

**중요**  
이 자습서의 메서드를 AWS 계정 사용하여 간에 데이터를 전송하는 것은 Amazon S3가 DataSync 전송 위치 중 하나인 경우에만 작동합니다.

## 개요
<a name="s3-cross-account-overview"></a>

 AWS 계정특히 조직의 리소스를 관리하는 별도의 팀이 있는 경우 서로 다른 간에 데이터를 전송해야 하는 경우는 드물지 않습니다. DataSync를 사용한 계정간 전송은 다음과 같습니다:
+ **소스 계정**: 네트워크 리소스를 관리하기 AWS 계정 위한 입니다. DataSync 에이전트를 활성화하는 데 사용할 계정입니다.
+ **대상 계정**: 데이터를 전송해야 하는 S3 버킷을 관리하기 AWS 계정 위한 입니다.

다음 다이어그램은 이 종류의 시나리오를 나타냅니다

![\[인터넷을 통한 Direct Connect 연결을 통해 온프레미스 스토리지 시스템에서 이동하는 데이터의 예제 DataSync 시나리오입니다 AWS. 데이터는 먼저 하나의 AWS 계정 (소스 계정)로 전송된 후 마지막으로 다른 AWS 계정 (대상 계정)의 Amazon S3 버킷으로 전송됩니다.\]](http://docs.aws.amazon.com/ko_kr/datasync/latest/userguide/images/s3-cross-account-diagram.png)


## 사전 조건: 필수 소스 계정 권한
<a name="onprem-s3-cross-account-required-permissions-source"></a>

소스의 경우 이러한 종류의 교차 계정 전송과 함께 고려해야 할 두 가지 권한 세트 AWS 계정가 있습니다.
+ 사용자가 DataSync를 사용하도록 허용하는 *사용자 권한*(사용자 또는 스토리지 관리자일 수 있음)입니다. 이러한 권한을 통해 DataSync 위치 및 작업을 생성할 수 있습니다.
+ DataSync가 대상 계정 버킷으로 데이터를 전송하도록 허용하는 *DataSync 서비스 권한*입니다.

------
#### [ User permissions ]

소스 계정에서 DataSync 위치 및 작업을 생성하기 위해 IAM 역할에 최소한 다음 권한을 추가합니다. 역할에 권한을 추가하는 방법에 대한 자세한 내용은 IAM 역할 [생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 또는 [수정](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)을 참조하세요.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SourceUserRolePermissions",
            "Effect": "Allow",
            "Action": [
                "datasync:CreateLocationS3",
                "datasync:CreateTask",
                "datasync:DescribeLocation*",
                "datasync:DescribeTaskExecution",
                "datasync:ListLocations",
                "datasync:ListTaskExecutions",
                "datasync:DescribeTask",
                "datasync:CancelTaskExecution",
                "datasync:ListTasks",
                "datasync:StartTaskExecution",
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMPermissions",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:ListRoles",
                "iam:CreatePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:role/DataSync-*"
        },
        {
            "Sid": "IAMAttachRolePermissions",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:role/DataSync-*",
            "Condition": {
            "ArnLike": {
                "iam:PolicyARN": [
                   "arn:aws:iam::111122223333:policy/DataSync-*",
                   "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess",
                   "arn:aws:iam::aws:policy/service-role/AWSDataSyncFullAccess"
                ]
            }
          }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "datasync.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

**작은 정보**  
*사용자 권한*을 설정하려면 [AWSDataSyncFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-awsdatasyncfullaccess) 사용을 고려하세요. 이는 사용자에게 DataSync에 대한 전체 액세스 권한과 해당 종속성에 대한 최소 액세스를 제공하는 AWS 관리형 정책입니다.

------
#### [ DataSync service permissions ]

대상 계정 버킷으로 데이터를 전송하려면 DataSync 서비스는 소스 계정에서 다음 권한이 필요합니다.

이 자습서의 후반부에서 DataSync에 대한 [IAM 역할을 생성](#s3-cross-account-create-iam-role-source-account)할 때 이러한 권한을 추가합니다. 또한 [대상 버킷 정책](#s3-cross-account-update-s3-policy-destination-account) 및 [DataSync 대상 위치 생성](#s3-cross-account-create-datasync-destination) 시 이 역할(`source-datasync-role`)을 지정합니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject",
        "s3:GetObjectTagging",
        "s3:PutObjectTagging"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    }
  ]
}
```

------

## 사전 조건: 필수 대상 계정 권한
<a name="onprem-s3-cross-account-required-permissions-destination"></a>

대상 계정에서 *사용자 권한*을 통해 대상 버킷의 정책을 업데이트하고 해당 액세스 제어 목록(ACL)을 비활성화할 수 있어야 합니다. 이러한 특정 권한에 대한 자세한 설명은 [https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)[https://docs.aws.amazon.com/AmazonS3/latest/userguide/](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)를 참조하세요.

## 1단계: 소스 계정에서 DataSync 에이전트를 생성합니다.
<a name="s3-cross-account-deploy-agent"></a>

시작하려면 온프레미스 스토리지 시스템에서 읽고 DataSync 서비스와 통신할 수 있는 DataSync 에이전트를 생성해야 합니다. 이 프로세스에는 온프레미스 스토리지 환경에 에이전트를 배포하고 소스 AWS 계정에서 에이전트를 활성화하는 작업이 포함됩니다. 

**참고**  
이 자습서의 단계는 사용하는 모든 타입의 에이전트 및 서비스 엔드포인트에 적용됩니다.

**DataSync 에이전트를 만들려면**

1. 온프레미스 스토리지 환경에 [DataSync 에이전트를 배포합니다](deploy-agents.md).

1. 에이전트가 통신하는 데 사용할 [서비스 엔드포인트를 선택합니다](choose-service-endpoint.md) AWS.

1. 소스 계정에서 [에이전트를 활성화하세요](activate-agent.md).

## 2단계: 소스 계정에서 대상 버킷 액세스의 DataSync IAM 역할 생성
<a name="s3-cross-account-create-iam-role-source-account"></a>

소스 계정에는 DataSync가 대상 계정 버킷에 데이터를 전송할 권한을 부여하는 IAM 역할이 필요합니다.

계정 간에 데이터를 이전하는 것이므로 이 역할을 수동으로 생성해야 합니다. (DataSync는 동일한 계정으로 전송할 때 콘솔에서 이 역할을 생성할 수 있습니다.)

### DataSync IAM 역할 생성
<a name="s3-cross-account-create-iam-role"></a>

DataSync를 신뢰할 수 있는 엔터티로 사용하여 IAM 역할을 생성합니다.

**IAM 역할을 만들려면**

1. 소스 계정으로 AWS Management Console 에 로그인합니다.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 왼쪽 탐색 창의 **액세스 관리**에서 **역할**을 선택한 다음, **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 선택** 페이지에서 **신뢰할 수 있는 엔터티 유형**으로 **AWS 서비스**를 선택합니다.

1. **사용 사례**로 드롭다운 목록에서 **DataSync**를 선택하고 **DataSync**를 선택합니다. **다음**을 선택합니다.

1. **권한 추가** 페이지에서 **다음**을 선택합니다.

1. 역할 이름을 제공하고 **역할 생성**을 선택합니다.

자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스 (콘솔)에 대한 역할 생성을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) 참조하세요.

### DataSync IAM 역할에 권한 추가
<a name="s3-cross-account-attach-custom-policy"></a>

방금 생성한 IAM 역할에는 DataSync가 대상 계정의 S3 버킷에 데이터를 전송하도록 허용하는 권한이 필요합니다.

**IAM 역할에 권한을 추가하려면**

1. IAM 콘솔의 **역할** 페이지에서 방금 생성한 역할을 찾아서 그 명칭을 선택합니다.

1. 역할의 세부 정보 페이지에서 **권한** 탭을 선택합니다. **권한 추가**를 선택한 후 **인라인 정책 추가**를 선택합니다.

1. **JSON** 탭을 선택한 다음, 다음을 수행합니다.

   1. 다음 JSON을 정책 편집기에 붙여넣습니다.
**참고**  
`aws:ResourceAccount`의 값은 정책에 명시된 Amazon S3 버킷을 소유한 계정의 ID여야 합니다.

------
#### [ JSON ]

****  

      ```
      {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket",
                   "s3:ListBucketMultipartUploads"
               ],
               "Effect": "Allow",
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
               "Condition": {
                   "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                   }
               }
           },
           {
               "Action": [
                   "s3:AbortMultipartUpload",
                   "s3:DeleteObject",
                   "s3:GetObject",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersion",
                   "s3:GetObjectVersionTagging",
                   "s3:ListMultipartUploadParts",
                   "s3:PutObject",
                   "s3:PutObjectTagging"
                 ],
               "Effect": "Allow",
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "123456789012"
                   }
               }
           }
       ]
      }
      ```

------

   1. `amzn-s3-demo-destination-bucket`의 각 인스턴스를 대상 계정의 S3 버킷의 이름으로 바꿉니다.

1. **다음**을 선택합니다. 정책 명칭을 지정하고 **정책 생성**을 선택합니다.

## 3단계: 대상 계정에서 S3 버킷 정책 업데이트
<a name="s3-cross-account-update-s3-policy-destination-account"></a>

대상 계정에서, 소스 계정에서 생성한 [DataSync IAM 역할](#s3-cross-account-create-iam-role-source-account)을 포함하도록 대상 S3 버킷 정책을 수정합니다.

**시작하기 전에**: [대상 계정에 필요한 권한](#onprem-s3-cross-account-required-permissions-destination)이 있는지 확인합니다.

**목적지 S3 버킷 정책을 업데이트하려면**

1. 에서 대상 계정으로 AWS Management Console전환합니다.

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷**을 선택합니다.

1. **버킷** 목록에서 데이터를 전송할 S3 버킷을 선택합니다.

1. 버킷의 세부 정보 페이지에서 **권한** 탭을 선택합니다.

1. **버킷 정책**에서 **편집**을 선택하고 다음을 수행하여 S3 버킷 정책을 수정하세요.

   1. 편집기에 있는 내용을 업데이트하여 다음 정책 설명을 포함하세요.

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "DataSyncCreateS3LocationAndTaskAccess",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/source-datasync-role"
            },
            "Action": [
              "s3:GetBucketLocation",
              "s3:ListBucket",
              "s3:ListBucketMultipartUploads",
              "s3:AbortMultipartUpload",
              "s3:DeleteObject",
              "s3:GetObject",
              "s3:ListMultipartUploadParts",
              "s3:PutObject",
              "s3:GetObjectTagging",
              "s3:PutObjectTagging"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-destination-bucket",
              "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
          }
        ]
      }
      ```

------

   1. `source-account`의 각 인스턴스를 소스 계정의 AWS 계정 ID로 바꾸세요.

   1. `source-datasync-role`을 [소스 계정에서 DataSync용으로 생성한 IAM 역할](#s3-cross-account-create-iam-role-source-account)로 바꾸세요.

   1. `amzn-s3-demo-destination-bucket`의 각 인스턴스를 대상 계정의 S3 버킷의 이름으로 바꿉니다.

1. **변경 사항 저장**을 선택합니다.

## 4단계: 목적지 계정에서 S3 버킷의 ACL을 비활성화합니다.
<a name="s3-cross-account-disable-acls-destination-account"></a>

S3 버킷에 복사하는 모든 데이터는 귀하의 목적지 계정에 속한다는 사실이 중요합니다. 이 계정이 데이터를 소유하도록 하려면 버킷의 액세스 제어 목록(ACL)을 비활성화하십시오. 자세한 설명은 *Amazon S3 사용자 가이드*의 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)를 참조하세요.

**대상 버킷에 대한 ACL을 비활성화하려면**

1. 대상 계정으로 S3 콘솔에 로그인한 상태에서 데이터를 전송할 S3 버킷을 선택합니다.

1. 버킷의 세부 정보 페이지에서 **권한** 탭을 선택합니다.

1. **객체 소유권(Object Ownership)**에서 **편집(Edit)**을 선택합니다.

1. 아직 선택하지 않은 경우, **ACL 비활성화(권장)** 옵션을 선택하세요.

1. **변경 사항 저장**을 선택합니다.

## 5단계: 소스 계정에서 온프레미스 스토리지를 위한 DataSync 소스 위치 생성
<a name="s3-on-prem-cross-account-create-source-location"></a>

소스 계정에서 데이터를 전송하는 온프레미스 스토리지 시스템의 [DataSync 소스 위치](working-with-locations.md)를 생성합니다. 이 위치에서는 소스 계정에서 [활성화한 에이전트](#s3-cross-account-deploy-agent)를 사용합니다.

## 6단계: 소스 계정에서 S3 버킷의 DataSync 목적지 위치를 생성합니다.
<a name="s3-cross-account-create-datasync-destination"></a>

소스 계정에 있는 동안 데이터를 전송하려는 S3 버킷의 위치를 생성합니다.

**시작하기 전에**: [소스 계정에 필요한 권한](#onprem-s3-cross-account-required-permissions-source)이 있는지 확인합니다.

DataSync 콘솔 인터페이스를 사용하여 교차 계정 위치를 생성할 수 없으므로 이 지침에 따라 대상 위치를 생성하는 `create-location-s3` 명령을 실행해야 합니다. 콘솔에서 직접 시작하는 브라우저 기반 사전 인증된 AWS CloudShell쉘을 사용하여 명령을 실행하는 것이 좋습니다. CloudShell을 사용하면 AWS CLI 명령줄 도구를 다운로드하거나 설치`create-location-s3`하지 않고도와 같은 명령을 실행할 수 있습니다.

**참고**  
CloudShell 이외의 명령줄 도구를 사용하여 다음 단계를 완료하려면 [AWS CLI 프로필](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)이 소스 계정에서 DataSync를 사용하는 데 [필요한 사용자 권한](#onprem-s3-cross-account-required-permissions-source)을 포함하는 동일한 IAM 역할을 사용하는지 확인하세요.

**CloudShell을 사용하여 DataSync 목적지 위치를 만들려면**

1. 소스 계정에 있는 동안 다음 중 하나를 수행하여 콘솔에서 CloudShell을 시작합니다.
   + 콘솔 탐색 모음에서 CloudShell 아이콘을 선택합니다. 검색 상자 오른쪽에 있습니다.
   + 콘솔 탐색 모음의 검색 상자를 사용하여 **CloudShell**을 검색한 다음 **CloudShell** 옵션을 선택합니다.

1. 다음 명령을 복사합니다.

   ```
   aws datasync create-location-s3 \
     --s3-bucket-arn arn:aws:s3:::amzn-s3-demo-destination-bucket \
     --s3-config '{
       "BucketAccessRoleArn":"arn:aws:iam::source-user-account:role/source-datasync-role"
     }'
   ```

1. 대상 계정에서 `amzn-s3-demo-destination-bucket`을 S3 버킷의 이름으로 바꿉니다.

1. `source-user-account`을 소스 계정의 AWS 계정 ID로 바꾸십시오.

1. `source-datasync-role`을 [소스 계정에서 생성한 DataSync IAM 역할](#s3-cross-account-create-iam-role-source-account)로 대체하세요.

1. 명령을 CloudShell에서 실행합니다.

   명령이 다음과 비슷한 DataSync 위치 ARN을 반환하면 위치가 성공적으로 생성된 것입니다.

   ```
   {
     "LocationArn": "arn:aws:datasync:us-east-2:123456789012:location/loc-abcdef01234567890"
   }
   ```

1. 왼쪽 탐색 창에서 **데이터 전송**을 펼친 다음 **위치**를 선택합니다.

소스 계정에서 대상 계정 버킷용으로 방금 생성한 S3 위치를 확인할 수 있습니다.

## 7단계: 소스 계정에서 DataSync 전송 작업을 생성하고 시작
<a name="s3-cross-account-create-start-datasync-task"></a>

DataSync 작업을 시작하여 데이터를 전송하기 전에 지금까지 수행한 작업을 요약해 보겠습니다.
+ 소스 계정에서 DataSync 에이전트를 생성했습니다. 에이전트는 온프레미스 스토리지 시스템에서 읽고 DataSync 서비스와 통신할 수 있습니다.
+ 소스 계정에서 DataSync가 대상 계정의 S3 버킷에 데이터를 전송하도록 허용하는 IAM 역할을 생성했습니다.
+ 대상 계정에서 DataSync가 S3 버킷으로 데이터를 전송할 수 있도록 S3 버킷을 구성했습니다.
+ 소스 계정에서 전송을 위한 DataSync 소스 및 목적지 위치를 생성했습니다.

**DataSync 작업을 생성하고 시작하려면**

1. 소스 계정에서 DataSync 콘솔을 계속 사용하는 동안 왼쪽 탐색 창에서 **데이터 전송**을 펼친 다음 **작업**과 **작업 생성**을 선택합니다.

1. **소스 위치 구성** 페이지에서 **기존 위치 선택**을 선택합니다. 온프레미스 스토리지의 데이터를 복사할 소스 위치를 선택한 후 **다음**을 선택합니다.

1. **목적지 위치 구성** 페이지에서 **기존 위치 선택**을 선택합니다. 데이터를 복사할 목적지 위치(목적지 계정의 S3 버킷) 를 선택하고 **다음**을 선택합니다.

1. **설정 구성** 페이지에서 작업 이름을 지정합니다. 필요에 따라 Amazon CloudWatch 로그 그룹 지정과 같은 추가 설정을 구성합니다. **다음**을 선택합니다.

1. **검토** 페이지에서 설정을 검토하고 **작업 생성**을 선택합니다.

1. 작업의 세부 정보 페이지에서 **시작**을 선택하고 다음 중 하나를 선택하세요:
   + 수정하지 않고 작업을 실행하려면 **기본값으로 시작**을 선택합니다.
   + 작업을 실행하기 전에 수정하려면 **재정의 옵션으로 시작**을 선택합니다.

작업이 완료되면 목적지 계정의 S3 버킷을 확인합니다. 소스 위치에서 이동한 데이터를 확인할 수 있어야 합니다.

## 관련 리소스
<a name="s3-cross-account-create-start-datasync-task"></a>

이 자습서에서 수행한 것에 대한 자세한 내용은 다음 주제를 참조하십시오.
+ [에 대한 역할 생성 AWS 서비스 (콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)
+ [역할 신뢰 정책 수정(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)
+ [Amazon S3 콘솔을 사용하여 버킷 정책 추가](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)
+ [를 사용하여 S3 위치 생성 AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-location-s3.html)