AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日にサポート終了
バケットおよびオブジェクトの Amazon S3 アクセス許可の管理
Amazon S3 バケットとオブジェクトのアクセスコントロールリスト (ACL) を使用して、Amazon S3 リソースをきめ細かく制御することができます。
注記
これらのコード例では、ユーザーが AWS SDK for Java の使用の内容を理解し、開発用の AWS 認証情報とリージョンのセットアップの情報を使用してデフォルトの AWS 認証情報を設定していることを前提としています。
バケットのアクセスコントロールリストの取得
バケットの現在の ACL を取得するには、AmazonS3 の getBucketAcl メソッドを呼び出して、それにクエリを実行するバケット名を渡します。このメソッドは、AccessControlList オブジェクトを返します。リスト内の各アクセス権を取得するには、その getGrantsAsList メソッドを呼び出します。これにより、Grant オブジェクトの標準 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;
Code
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
バケットのアクセスコントロールリストの設定
バケットの ACL に許可の追加や変更をするには、AmazonS3 の setBucketAcl メソッドを呼び出します。設定する被付与者やアクセスレベルのリストを含む AccessControlList オブジェクトが使用されます。
インポート
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 クラスを使用して直接被付与者の一意の識別子を提供するか、ここで行ったように、EmailAddressGrantee クラスを使用して被付与者を E メールで設定することができます。
GitHub
オブジェクトのアクセスコントロールリストの取得
オブジェクトの現在の ACL を取得するには、AmazonS3 の getObjectAcl メソッドを呼び出して、それにクエリを実行するバケット名およびオブジェクト名を渡します。getBucketAcl と同様に、このメソッドは各権限を調べるのに使用できる AccessControlList オブジェクトを返します。
インポート
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;
Code
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
オブジェクトのアクセスコントロールリストの設定
オブジェクトの ACL に許可の追加や変更をするには、AmazonS3 の setObjectAcl メソッドを呼び出します。設定する被付与者やアクセスレベルのリストを含む AccessControlList オブジェクトが使用されます。
インポート
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 クラスを使用して直接被付与者の一意の識別子を提供するか、ここで行ったように、EmailAddressGrantee クラスを使用して被付与者を E メールで設定することができます。
GitHub
詳細情報
-
Amazon S3 API リファレンスの GET Bucket acl
-
Amazon S3 API リファレンスの PUT Bucket acl
-
Amazon S3 API リファレンスの GET Object acl
-
Amazon S3 API リファレンスの PUT Object acl