

 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-access-permissions"></a>

Amazon S3 리소스를 세부적으로 제어하려는 경우 Amazon S3 버킷 및 객체에 대한 ACL(액세스 제어 목록)을 사용할 수 있습니다.

**참고**  
이 코드 예제에서는 사용자가 [AWS SDK for Java 사용](basics.md)의 내용을 이해하고 [개발을 위한 AWS 자격 증명 및 리전 설정](setup-credentials.md)의 정보를 사용하여 기본 AWS 자격 증명을 구성했다고 가정합니다.

## 버킷에 대한 액세스 제어 목록 가져오기
<a name="get-the-access-control-list-for-a-bucket"></a>

버킷에 대한 현재 ACL(액세스 제어 목록)을 가져오려면 AmazonS3의 `getBucketAcl` 메서드를 호출하고 쿼리할 *버킷 이름*을 메서드에 전달합니다. 이 메서드는 [AccessControlList](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/AccessControlList.html) 객체를 반환합니다. 각 액세스 권한 부여(grant) 목록을 가져오려면 `getGrantsAsList` 메서드를 호출합니다. 그러면 [Grant](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Grant.html) 객체의 표준 Java 목록이 반환됩니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.Grant;
```

 ** 코드** 

```
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    AccessControlList acl = s3.getBucketAcl(bucket_name);
    List<Grant> grants = acl.getGrantsAsList();
    for (Grant grant : grants) {
        System.out.format("  %s: %s\n", grant.getGrantee().getIdentifier(),
                grant.getPermission().toString());
    }
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/GetAcl.java)를 참조하세요.

## 버킷에 대한 액세스 제어 목록 설정
<a name="set-the-access-control-list-for-a-bucket"></a>

버킷에 대한 ACL(액세스 제어 목록)에 권한을 추가하거나 권한을 수정하려면 AmazonS3의 `setBucketAcl` 메서드를 호출합니다. 이 메서드는 설정할 액세스 수준과 피부여자 목록을 포함하는 [AccessControlList](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/AccessControlList.html) 객체를 사용합니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.EmailAddressGrantee;
```

 ** 코드** 

```
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build();
try {
    // get the current ACL
    AccessControlList acl = s3.getBucketAcl(bucket_name);
    // set access for the grantee
    EmailAddressGrantee grantee = new EmailAddressGrantee(email);
    Permission permission = Permission.valueOf(access);
    acl.grantPermission(grantee, permission);
    s3.setBucketAcl(bucket_name, acl);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

**참고**  
[Grantee](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Grantee.html) 클래스를 사용하여 직접 피부여자의 고유 식별자를 제공하거나, 여기서처럼 [EmailAddressGrantee](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/EmailAddressGrantee.html) 클래스를 사용하여 이메일을 통해 피부여자를 설정할 수 있습니다.

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/SetAcl.java)를 참조하세요.

## 객체에 대한 액세스 제어 목록 가져오기
<a name="get-the-access-control-list-for-an-object"></a>

객체에 대한 현재 ACL(액세스 제어 목록)을 가져오려면 AmazonS3의 `getObjectAcl` 메서드를 호출하고 쿼리할 *버킷 이름*과 *객체 이름*을 이 메서드에 전달합니다. `getBucketAcl`과 마찬가지로 이 메서드는 각 [Grant](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Grant.html) 검사하는 데 사용할 수 있는 [AccessControlList](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/AccessControlList.html) 객체를 반환합니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.Grant;
```

 ** 코드** 

```
try {
    AccessControlList acl = s3.getObjectAcl(bucket_name, object_key);
    List<Grant> grants = acl.getGrantsAsList();
    for (Grant grant : grants) {
        System.out.format("  %s: %s\n", grant.getGrantee().getIdentifier(),
                grant.getPermission().toString());
    }
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/GetAcl.java)를 참조하세요.

## 객체에 대한 액세스 제어 목록 설정
<a name="set-the-access-control-list-for-an-object"></a>

객체에 대한 ACL(액세스 제어 목록)에 권한을 추가하거나 권한을 수정하려면 AmazonS3의 `setObjectAcl` 메서드를 호출합니다. 이 메서드는 설정할 액세스 수준과 피부여자 목록을 포함하는 [AccessControlList](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/AccessControlList.html) 객체를 사용합니다.

 **가져옵니다**.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.EmailAddressGrantee;
```

 ** 코드** 

```
    try {
        // get the current ACL
        AccessControlList acl = s3.getObjectAcl(bucket_name, object_key);
        // set access for the grantee
        EmailAddressGrantee grantee = new EmailAddressGrantee(email);
        Permission permission = Permission.valueOf(access);
        acl.grantPermission(grantee, permission);
        s3.setObjectAcl(bucket_name, object_key, acl);
    } catch (AmazonServiceException e) {
        System.err.println(e.getErrorMessage());
        System.exit(1);
    }
}
```

**참고**  
[Grantee](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/Grantee.html) 클래스를 사용하여 직접 피부여자의 고유 식별자를 제공하거나, 여기서처럼 [EmailAddressGrantee](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/EmailAddressGrantee.html) 클래스를 사용하여 이메일을 통해 피부여자를 설정할 수 있습니다.

GitHub의 [전체 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/SetAcl.java)를 참조하세요.

## 추가 정보
<a name="more-information"></a>
+  Amazon S3 API 참조의 [GET 버킷 ACL(액세스 제어 목록)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETacl.html)
+  Amazon S3 API 참조의 [PUT 버킷 ACL(액세스 제어 목록)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html)
+  Amazon S3 API 참조의 [GET 객체 ACL(액세스 제어 목록)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html)
+  Amazon S3 API 레퍼런스의 [PUT 객체 ACL(액세스 제어 목록)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTacl.html)