

 AWS SDK for Java 1.x는 2025년 12월 31일에 end-of-support되었습니다. 새로운 기능, 가용성 개선 및 보안 업데이트를 계속 받으려면 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)로 마이그레이션하는 것이 좋습니다.

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

# 버킷 정책을 사용한 Amazon S3 버킷 액세스 관리
<a name="examples-s3-bucket-policies"></a>

*버킷 정책*을 설정하거나 가져오거나 삭제하여 Amazon S3 버킷에 대한 액세스를 관리할 수 있습니다.

## 버킷 정책 설정
<a name="set-s3-bucket-policy"></a>

다음과 같은 방법으로 특정 S3 버킷에 대한 버킷 정책을 설정할 수 있습니다.
+ AmazonS3 클라이언트의 `setBucketPolicy`를 호출하고 이 메서드에 [SetBucketPolicyRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/SetBucketPolicyRequest.html) 지정 
+ 버킷 이름과 정책 텍스트(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 클래스를 사용하여 정책 생성 또는 검사
<a name="use-s3-bucket-policy-class"></a>

`setBucketPolicy`에 버킷 정책을 제공하려는 경우 다음을 수행합니다.
+ 정책을 JSON 형식 텍스트 문자열로 직접 지정
+ [Policy](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/policy/Policy.html) 클래스를 사용하여 정책 빌드

`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의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java)를 참조하세요.

## 버킷 정책 가져오기
<a name="get-s3-bucket-policy"></a>

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의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/GetBucketPolicy.java)를 참조하세요.

## 버킷 정책 삭제
<a name="delete-s3-bucket-policy"></a>

버킷 정책을 삭제하려면 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의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucketPolicy.java)를 참조하세요.

## 추가 정보
<a name="more-info"></a>
+  Amazon Simple Storage Service 사용 설명서의 [액세스 정책 언어 개요](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html)
+  Amazon Simple Storage Service 사용 설명서의 [버킷 정책 예제](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html)