バケットは、Object Storage Service (OSS) にオブジェクトを格納するために使用されるコンテナです。 OSS のすべてのオブジェクトはバケットに格納されます。このトピックでは、バケットを作成する方法について説明します。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用しています。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報を設定する方法の詳細については、「アクセス認証情報を設定する」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「一般的なシナリオの設定例」をご参照ください。
2025年10月13日 10:00 (UTC + 08:00) から、OSS はすべてリージョンで段階的な調整を実施し、API、OSS SDK、または ossutil を使用して作成された新しいバケットに対して、デフォルトで パブリックアクセスをブロックする を有効にします。各リージョンで調整が有効になる正確な時間については、[公式発表] 新しく作成されたバケットのパブリックアクセスブロック設定の調整 を参照してください。パブリックアクセスブロックが有効になっていると、パブリック ACL (パブリック読み取りおよびパブリック読み取り/書き込み) やパブリックアクセスを許可するバケットポリシーなど、パブリックアクセス権限を設定することはできません。ビジネスでパブリックアクセスが必要な場合は、バケットの作成後にこの機能を無効にすることができます。
権限
デフォルトでは、Alibaba Cloud アカウントにはすべての権限があります。Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールには、デフォルトでは権限がありません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシー または バケットポリシー を介して操作権限を付与する必要があります。
API | アクション | 定義 |
PutBucket |
| バケットを作成します。 |
| バケットを作成した後、バケット ACL を変更するには、この権限が必要です。 |
サンプルコード
次のコードは、examplebucket という名前のバケットを作成する方法の例を示しています。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
public class Demo {
public static void main(String[] args) throws Exception {
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンに配置されている場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
String endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。
String bucketName = "examplebucket";
// リソースグループの ID を指定します。リソースグループ ID を指定しない場合、バケットはデフォルトのリソースグループに属します。
//String rsId = "rg-aek27tc****";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンに配置されている場合は、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// OSSClient インスタンスを作成します。
// OSSClient が不要になったら、shutdown メソッドを呼び出して関連付けられているリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// バケットを作成し、バケットの階層型名前空間機能を有効にします。
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName).withHnsStatus(HnsStatus.Enabled);
// 次のコードは、バケットを作成するときにストレージクラス、アクセス制御リスト (ACL)、および冗長タイプを指定する方法の例を示しています。
// この例では、バケットのストレージクラスは Standard です。
createBucketRequest.setStorageClass(StorageClass.Standard);
// バケットのデフォルトの冗長タイプは DataRedundancyType.LRS です。
createBucketRequest.setDataRedundancyType(DataRedundancyType.LRS);
// バケットの ACL を public-read に設定します。デフォルトの ACL は private です。
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// リソースグループをサポートするリージョンにバケットを作成する場合は、バケットにリソースグループを設定できます。
//createBucketRequest.setResourceGroupId(rsId);
ossClient.createBucket(createBucketRequest);
// バケットを作成します。
ossClient.createBucket(createBucketRequest);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}