The AWS SDK for Java 1.x는 2024년 7월 31일부터 유지 관리 모드로 전환되었으며 2025년 12월 31일에 end-of-support
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
버킷 정책을 사용한 Amazon S3 버킷 액세스 관리
버킷 정책을 설정하거나 가져오거나 삭제하여 Amazon S3 버킷에 대한 액세스를 관리할 수 있습니다.
버킷 정책 설정
다음과 같은 방법으로 특정 S3 버킷에 대한 버킷 정책을 설정할 수 있습니다.
-
AmazonS3 클라이언트의
setBucketPolicy
를 호출하고 이 메서드에 SetBucketPolicyRequest 지정 -
버킷 이름과 정책 텍스트(JSON 형식)를 사용하는
setBucketPolicy
오버로드를 사용하여 정책을 직접 설정
가져오기
import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;
코드
s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Policy 클래스를 사용하여 정책 생성 또는 검사
setBucketPolicy
에 버킷 정책을 제공하려는 경우 다음을 수행합니다.
-
정책을 JSON 형식 텍스트 문자열로 직접 지정
-
Policy 클래스를 사용하여 정책 빌드
Policy
클래스를 사용하면 텍스트 문자열에 대한 올바른 형식 지정에 대해 걱정할 필요가 없습니다. Policy
클래스에서 JSON 정책 텍스트를 가져오려면 toJson
메서드를 사용합니다.
가져오기
import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
코드
new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();
Policy
클래스는 전달된 JSON 문자열을 사용하여 정책을 빌드할 수 있는 fromJson
메서드도 제공합니다. 이 메서드는 해당 텍스트를 유효한 정책 구조로 변환할 수 있는지 검사하며, 정책 텍스트가 유효하지 않은 경우 실패하고 IllegalArgumentException
가 발생합니다.
Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }
이 기술을 사용하여 파일이나 기타 수단에서 읽어온 정책을 사전 검사할 수 있습니다.
GitHub의 전체 예제
버킷 정책 가져오기
Amazon S3 버킷에 대한 정책을 가져오려면 AmazonS3 클라이언트의 getBucketPolicy
메서드를 호출하고 정책을 가져올 버킷의 이름을 이 메서드에 전달합니다.
가져오기
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
코드
try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
이름이 지정된 버킷이 없거나, 해당 버킷에 대한 액세스 권한이 없거나, 버킷 정책이 없는 경우 AmazonServiceException
이 발생합니다.
GitHub의 전체 예제
버킷 정책 삭제
버킷 정책을 삭제하려면 AmazonS3 클라이언트의 deleteBucketPolicy
를 호출하고 이 메서드에 버킷 이름을 제공합니다.
가져오기
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
코드
try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
버킷에 정책이 아직 없더라도 이 메서드는 성공합니다. 존재하지 않는 버킷 이름을 지정하거나 해당 버킷에 대한 액세스 권한이 없는 경우 AmazonServiceException
이 발생합니다.
GitHub의 전체 예제
추가 정보
-
Amazon Simple Storage Service 사용 설명서에서 액세스 정책 언어 개요
-
Amazon Simple Storage Service 사용 설명서에서 버킷 정책 예제