소유하지 않는 Amazon S3 버킷에 데이터를 쓰는 방법3 - 아마존 EMR

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

소유하지 않는 Amazon S3 버킷에 데이터를 쓰는 방법3

파일을 Amazon Simple Storage Service(S3)에 쓰는 경우 해당 사용자가 기본적으로 해당 파일을 읽을 수 있는 유일한 사람입니다. 이 기본 설정은 해당 사용자가 파일을 자신의 고유 버킷에 쓴다고 가정하여 파일의 개인 정보를 보호합니다.

하지만 클러스터를 실행 중이고 출력을 다른 클러스터의 Amazon S3 버킷에 쓰려는 경우 AWS 사용자가 필요하다면 다른 사용자가 필요합니다. AWS 사용자가 해당 출력을 읽을 수 있으려면 다음 두 가지 작업을 수행해야 합니다.

  • 다른 쪽도 가져가세요 AWS 사용자가 Amazon S3 버킷에 대한 쓰기 권한을 부여합니다. 시작한 클러스터는 다음 클러스터에서 실행됩니다. AWS 자격 증명을 사용하면 실행하는 모든 클러스터가 다른 클러스터에도 쓸 수 있습니다. AWS 사용자 버킷.

  • 상대방의 읽기 권한을 설정합니다. AWS 사용자 또는 클러스터가 Amazon S3 버킷에 쓰는 파일의 사용자 이러한 읽기 권한을 설정하는 가장 쉬운 방법은 Amazon S3에서 정의한 사전 정의된 액세스 정책 집합인 미리 준비된 액세스 제어 목록 (ACLs) 을 사용하는 것입니다.

다른 방법에 대한 자세한 내용은 AWS 사용자는 다른 사용자의 Amazon S3 버킷에 파일을 쓸 권한을 부여할 수 있습니다. Amazon Simple Storage Service 사용 설명서의 버킷 권한 편집을 참조하십시오.

클러스터가 Amazon S3에 파일을 쓸 ACLs 때 canned 기능을 사용하려면 fs.s3.canned.acl 클러스터 구성 옵션을 canned ACL to use 로 설정하십시오. 다음 표에는 현재 정의된 캔이 나열되어 있습니다. ACLs

통조림 ACL 설명
AuthenticatedRead 소유자에게 Permission.FullControl이 부여되고 GroupGrantee.AuthenticatedUsers 그룹 피부여자에게 Permission.Read 액세스가 부여되도록 지정합니다.
BucketOwnerFullControl 버킷의 소유자에게 Permission.FullControl이 부여되도록 지정합니다. 버킷의 소유자가 반드시 객체의 소유자와 동일할 필요는 없습니다.
BucketOwnerRead 버킷의 소유자에게 Permission.Read이 부여되도록 지정합니다. 버킷의 소유자가 반드시 객체의 소유자와 동일할 필요는 없습니다.
LogDeliveryWrite 소유자에게 Permission.FullControl이 부여되고 GroupGrantee.LogDelivery 그룹 피부여자에게 Permission.Write 액세스가 부여되도록 지정합니다. 따라서 액세스 로그를 제공할 수 있습니다.
Private 소유자에게 Permission.FullControl이 부여되도록 지정합니다.
PublicRead 소유자에게 Permission.FullControl이 부여되고 GroupGrantee.AllUsers 그룹 피부여자에게 Permission.Read 액세스가 부여되도록 지정합니다.
PublicReadWrite 소유자에게 Permission.FullControl이 부여되고 GroupGrantee.AllUsers 그룹 피부여자에게 Permission.ReadPermission.Write 액세스가 부여되도록 지정합니다.

실행 중인 클러스터 유형에 따라 클러스터 구성 옵션을 설정하는 방법에는 여러 가지가 있습니다. 다음 절차에서는 일반적인 경우에 적합한 옵션 설정 방법을 보여 줍니다.

Hive에서 미리 준비된 ACLs 파일을 사용하여 파일을 쓰려면
  • Hive 명령 프롬프트에서 fs.s3.canned.acl 구성 옵션을 Amazon S3에 기록하는 파일에 클러스터를 ACL 설정하려는 미리 준비된 것으로 설정합니다. Hive 명령 프롬프트에 액세스하려면 를 사용하여 SSH 마스터 노드에 연결하고 하둡 명령 프롬프트에 Hive를 입력합니다. 자세한 내용은 를 사용하여 기본 노드에 연결 SSH 단원을 참조하십시오.

    다음 예제에서는 fs.s3.canned.acl 구성 옵션을 BucketOwnerFullControl로 설정하여 Amazon S3 버킷 소유자에게 파일을 완벽하게 제어할 수 있는 권한을 부여합니다. set 명령은 대/소문자를 구분하며 물음표나 공백을 포함하지 않습니다.

    hive> set fs.s3.canned.acl=BucketOwnerFullControl; create table acl (n int) location 's3://acltestbucket/acl/'; insert overwrite table acl select count(*) from acl;

    이 예제의 마지막 두 행은 Amazon S3에 저장된 테이블을 생성하고 데이터를 테이블에 씁니다.

Pig에서 canned를 사용하여 파일을 쓰려면 ACLs
  • Pig 명령 프롬프트에서 fs.s3.canned.acl 구성 옵션을 Amazon S3에 쓰는 파일에 클러스터를 ACL 설정하려는 미리 준비된 것으로 설정합니다. Pig 명령 프롬프트에 액세스하려면 를 사용하여 SSH 마스터 노드에 연결하고 Hadoop 명령 프롬프트에 Pig를 입력합니다. 자세한 내용은 를 사용하여 기본 노드에 연결 SSH 단원을 참조하십시오.

    다음 예제는 fs.s3.canned.acl 구성 옵션을 로 BucketOwnerFullControl 설정하여 Amazon S3 버킷 소유자에게 파일에 대한 완전한 제어권을 부여합니다. 참고로 set 명령은 미리 작성된 ACL 이름 앞에 공백 하나를 포함하며 따옴표는 포함하지 않습니다.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
사용자 정의에서 ACLs canned를 사용하여 파일을 쓰려면 JAR
  • -D 플래그와 함께 하둡을 사용하여 fs.s3.canned.acl 옵션을 설정합니다. 아래 예제에는 이 방법이 나와 있습니다.

    hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://mybucket/input s3://mybucket/output