본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] AWS DataSync - S3

by BTC_류지연 2023. 12. 26.

베하 :)

날씨가 많이 추워졌는데 다들 붕어빵 많이 드셨나요?

귀여운 고양이 보고 힘내서 시작해봅시다!

이번 시간에는 지난 DataSycn - EFS 시간에 이어

DataSync - S3에 대하여 알아보겠습니다.

차근차근 시작해보아요

팔로미 ~~~


1. Amazon S3에서 Amazon S3로 AWS 계정 간 데이터 전송

AWS DataSync를 사용하면 서로 다른 AWS 계정Amazon S3 버킷 간에 데이터를 이동할 수 있습니다.

Transfers across accounts

 

Transfers accross accounts and Regions


1단계: 계정DataSync A에 대한 IAM 역할 생성

계정 B에서 S3 버킷에 대한 쓰기DataSync 권한을 부여하는 IAM 역할이 필요합니다.

 

IAM 역할에 사용자 지정 정책 연결

IAM 정책을 IAM 역할에 연결하려면 IAM 콘솔의 역할 페이지에서 생성한 역할을 검색하고 이름을 선택합니다.
역할의 세부 정보 페이지에서 권한 탭을 선택합니다. 권한 추가를 선택한 다음 인라인 정책 생성을 선택합니다.
JSON 탭을 선택하고 다음을 수행합니다.

다음 JSON을 정책 편집기에 붙여 넣습니다.

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

 

계정 B에 있는 account-b-bucket S3 버킷의 이름으로 바꿉니다.

Review policy(정책 검토)를 선택합니다.
정책 이름을 지정하고 정책 생성을 선택합니다.


2단계: 계정 B에서 S3 버킷의 ACL을 비활성화합니다.


3단계: 계정 B에서 S3 버킷 정책 업데이트

S3 버킷 정책을 업데이트하려면

S3 콘솔에서 계정 B를 사용하는 동안 데이터를 복사하려는 S3 버킷을 선택합니다.

버킷의 세부 정보 페이지에서 권한 탭을 선택합니다.
버킷 정책에서 편집을 선택하고 다음을 수행하여 S3 버킷 정책을 수정합니다.
편집기에 있는 내용을 업데이트하여 다음 정책 설명을 포함하세요.

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "DataSyncCreateS3LocationAndTaskAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account-a-id:role/name-of-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:::account-b-bucket",
        "arn:aws:s3:::account-b-bucket/*"
      ]
    },
    {
      "Sid": "DataSyncCreateS3Location",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account-a-id:role/name-of-your-role"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::account-b-bucket"
    }
  ]
}

 

계정 A의 account-a-id AWS 계정 번호로 바꾸십시오.

계정 A 에서 생성한 (1단계 이전) DataSync IAMname-of-datasync-role 역할로 바꾸십시오.
계정 B에 있는 account-b-bucket S3 버킷의 이름으로 바꿉니다.

콘솔에 액세스하는 데 사용하는 IAM 역할 또는 계정 A AWS CLI name-of-your-role로 바꾸십시오.
변경 사항 저장(Save changes)을 선택합니다.

 

 

4단계: S3 버킷의DataSync 대상 위치 생성



S3 버킷의 위치를 생성한 후DataSync 작업을 실행할 수 있습니다. 하지만DataSync 콘솔에서는 다른 계정에서 위치를 만들 수 없습니다. 작업을 실행하려면AWS CLI를 먼저 사용하여 위치를 만들어야 합니다.

CLI를 사용하여DataSync 위치를 만들려면 우선 터미널을 엽니다.
CLI 프로필이 계정 A를 사용하도록 구성되어 있는지 확인하십시오.

다음 명령을 복사합니다.

aws datasync create-location-s3 \
  --s3-bucket-arn arn:aws:s3:::account-b-bucket \
  --s3-config '{"BucketAccessRoleArn":"arn:aws:iam::account-a-id:role/name-of-datasync-role"}'


계정 B에 있는 account-b-bucket S3 버킷의 이름으로 바꿉니다.

계정 A의 account-a-id AWS 계정 번호로 바꾸십시오.

계정 A 에서 생성한 (1단계 이전) IAMname-of-datasync-role 역할로 바꾸십시오.

계정 B의 버킷이 계정 A의 버킷과 다른 지역에 있는 경우 명령 끝에 --region 옵션을 추가하여 계정 B 버킷이 있는 지역을 지정합니다. 예: --region us-west-1.

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

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


AWS Management Console에서 계정 A로 다시 전환하십시오.
DataSync 콘솔을 엽니다.
왼쪽 탐색 창에서 위치를 선택합니다.
CLI로 방금 생성한 계정 B에서 S3 버킷의 위치를 볼 수 있습니다.

5단계:DataSync 태스크 생성 및 시작


: 데이터를 이동하기 전에 지금까지 수행한 작업을 요약해 보겠습니다.

계정 B의 S3 버킷에 데이터를 쓸 수 있도록 DataSync 계정 A에 IAM 역할을 생성했습니다.

DataSync작업이 제대로 작동하도록 계정 B에서 S3 버킷을 구성했습니다.

계정 A에서 DataSync 출발지와 목적지 위치를 생성했습니다.

DataSync 작업을 생성하고 시작하려면
계정 A에서 DataSync 콘솔을 계속 사용하는 동안 왼쪽 탐색 창에서 데이터 전송을 확장한 다음 작업 및 작업 생성을 선택합니다.

**참고
3단계에서 S3 버킷 정책에서 지정한 계정 A와 동일한 IAM 역할로 콘솔에 로그인해야 합니다.

 

- 계정 B의 버킷이 계정 A의 버킷과 다른 지역에 있는 경우 탐색 창에서 계정 B 버킷의 지역을 선택합니다.
- 연결 오류가 발생하지 않도록 대상 위치의 리전 (이 경우에는 계정 B 버킷) 에서DataSync 작업을 시작해야 합니다.
- 소스 위치 구성 페이지에서 기존 위치 선택을 선택합니다.

- 리전 간 전송의 경우 Account A 버킷이 있는 리전을 선택합니다.
- 데이터를 복사할 원본 위치 (계정 A의 S3 버킷) 를 선택한 후 다음을 선택합니다.
- 대상 위치 구성 페이지에서 기존 위치 선택을 선택합니다. 데이터를 복사할 대상 위치 (계정 B의 S3 버킷) 를 선택한 후 다음을 선택합니다.
- 설정 구성 페이지에서 작업 이름을 지정합니다. 필요에 따라 AmazonCloudWatch 로그 그룹 지정과 같은 추가 설정을 구성합니다. 다음을 선택합니다.
- 검토 페이지에서 설정을 검토하고 작업 생성을 선택합니다.

작업의 세부 정보 페이지에서 시작을 선택한 후 다음 중 하나를 선택합니다.
수정 없이 작업을 실행하려면 [기본값으로 시작] 을 선택합니다.
작업을 실행하기 전에 수정하려면 우선 적용 옵션을 사용하여 시작을 선택합니다.
작업이 완료되면 계정 B에서 S3 버킷을 확인합니다. 

그러면 계정 A 버킷의 데이터가 보일 것입니다.

 


여기까지 AWS DataSync S3 to S3 과정에 대해 알아보았습니다.

공식 문서의 내용이지만 필요 부분에 대한 강조를 꼭 확인해주세요!

다음시간에도 서지타산과 함께해요 

제에바알 ~~

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

[AWS] AWS ACM  (1) 2023.12.26
AWS IAM 정책  (0) 2023.12.26
[AWS] RDS AuroraMysql 엔진버전 업그레이드  (1) 2023.12.22
[AWS] AWS EMR  (0) 2023.12.22
AWS Quantum Ledger Database (QLDB)  (1) 2023.12.22

댓글