기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
파일을 Amazon Simple Storage Service(S3)에 쓰는 경우 해당 사용자가 기본적으로 해당 파일을 읽을 수 있는 유일한 사람입니다. 이 기본 설정은 해당 사용자가 파일을 자신의 고유 버킷에 쓴다고 가정하여 파일의 개인 정보를 보호합니다.
그러나 클러스터를 실행 중이고 출력이 다른 AWS 사용자의 Amazon S3 버킷에 쓰고 다른 AWS 사용자가 해당 출력을 읽을 수 있도록 하려면 다음 두 가지 작업을 수행해야 합니다.
-
다른 AWS 사용자에게 Amazon S3 버킷에 대한 쓰기 권한을 부여하도록 합니다. 시작하는 클러스터는 자격 AWS 증명으로 실행되므로 시작하는 모든 클러스터도 다른 AWS 사용자의 버킷에 쓸 수 있습니다.
-
사용자 또는 클러스터가 Amazon S3 버킷에 쓰는 파일에 대해 다른 AWS 사용자의 읽기 권한을 설정합니다. 이러한 읽기 권한을 설정하는 가장 쉬운 방법은 Amazon S3에서 정의한 사전 정의된 액세스 정책 세트인 미리 준비된 액세스 제어 목록(ACL)을 사용하는 것입니다.
다른 AWS 사용자가 다른 사용자의 Amazon S3 버킷에 파일을 쓸 수 있는 권한을 부여하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 버킷 권한 편집을 참조하세요.
파일을 Amazon S3에 쓸 때 클러스터에서 미리 준비된 ACL을 사용하도록 하려면 fs.s3.canned.acl
클러스터 구성 옵션을 사용하고자 하는 미리 준비된 ACL로 설정합니다. 다음 표에는 현재 정의되어 있는 미리 준비된 ACL이 나열됩니다.
미리 제공된 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.Read 및 Permission.Write 액세스가 부여되도록 지정합니다. |
실행 중인 클러스터 유형에 따라 클러스터 구성 옵션을 설정하는 방법에는 여러 가지가 있습니다. 다음 절차에서는 일반적인 경우에 적합한 옵션 설정 방법을 보여 줍니다.
Hive에서 미리 준비된 ACL을 사용하여 파일을 쓰려면
-
Hive 명령 프롬프트에서
fs.s3.canned.acl
구성 옵션을 클러스터에서 Amazon S3에 쓰는 파일에 대해 설정할 미리 준비된 ACL로 설정합니다. Hive 명령 프롬프트에 액세스하려면 SSH를 사용하여 마스터 노드에 연결하고 하둡 명령 프롬프트에서 Hive를 입력합니다. 자세한 내용은 SSH를 사용하여 Amazon EMR 클러스터 프라이머리 노드에 연결 단원을 참조하십시오.다음 예제에서는
fs.s3.canned.acl
구성 옵션을BucketOwnerFullControl
로 설정하여 Amazon S3 버킷 소유자에게 파일을 완벽하게 제어할 수 있는 권한을 부여합니다. set 명령은 대/소문자를 구분하며 물음표나 공백을 포함하지 않습니다.hive> set fs.s3.canned.acl=BucketOwnerFullControl; create table acl (n int) location 's3://amzn-s3-demo-bucket/acl/'; insert overwrite table acl select count(*) from acl;
이 예제의 마지막 두 행은 Amazon S3에 저장된 테이블을 생성하고 데이터를 테이블에 씁니다.
Pig에서 미리 준비된 ACL을 사용하여 파일을 쓰려면
-
Pig 명령 프롬프트에서
fs.s3.canned.acl
구성 옵션을 클러스터에서 Amazon S3에 쓰는 파일에 대해 설정할 미리 준비된 ACL로 설정합니다. Pig 명령 프롬프트에 액세스하려면 SSH를 사용하여 마스터 노드에 연결하고 하둡 명령 프롬프트에서 Pig를 입력합니다. 자세한 내용은 SSH를 사용하여 Amazon EMR 클러스터 프라이머리 노드에 연결 단원을 참조하십시오.다음 예제에서는
fs.s3.canned.acl
구성 옵션을 BucketOwnerFullControl로 설정하여 Amazon S3 버킷 소유자에게 파일을 완벽하게 제어할 수 있는 권한을 부여합니다. set 명령은 미리 준비된 ACL 이름 앞에 공백 하나를 포함하며 물음표는 포함하지 않습니다.pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://amzn-s3-demo-bucket/pig/acl';
사용자 지정 JAR에서 미리 준비된 ACL을 사용하여 파일을 쓰려면
-
-D 플래그와 함께 하둡을 사용하여
fs.s3.canned.acl
옵션을 설정합니다. 아래 예제에는 이 방법이 나와 있습니다.hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://amzn-s3-demo-bucket/input s3://amzn-s3-demo-bucket/output