Object Storage Service (OSS) SDK を使用すると、OSS をアプリケーションに統合して、効率的なストレージ管理を実現できます。このガイドでは、OSS SDK for Java を使用して、バケットの作成、ファイルのアップロード、ダウンロード、一覧表示、そして最後にファイルとバケットの削除という一連のワークフローを説明します。
前提条件
Alibaba Cloud アカウントが作成されています。
OSS が有効化されています。
環境変数の設定
OSS のすべての権限を持つ Resource Access Management (RAM) ユーザーの AccessKey ペアを作成します。
AccessKey ペアの環境変数を設定します。
Linux
CLI で次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc次のコマンドを実行して変更を適用します。
source ~/.bashrc次のコマンドを実行して、環境変数が有効になったかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します。
echo $SHELLデフォルトのシェルタイプに基づいて環境変数を設定します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc次のコマンドを実行して変更を適用します。
source ~/.zshrc次のコマンドを実行して、環境変数が有効になったかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
次のコマンドを実行して、環境変数の設定を
~/.bash_profileファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile次のコマンドを実行して変更を適用します。
source ~/.bash_profile次のコマンドを実行して、環境変数が有効になったかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
CMD で次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"次のコマンドを実行して、環境変数が有効になったかどうかを確認します。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
PowerShell で次のコマンドを実行します。
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)次のコマンドを実行して、環境変数が有効になったかどうかを確認します。
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
上記のように環境変数を設定した後、コンパイルおよびランタイム環境 (IDE、コマンドラインインターフェイス、その他のデスクトップアプリケーション、バックグラウンドサービスなど) を再起動またはリフレッシュして、最新のシステム環境変数が正常に読み込まれるようにしてください。
OSS SDK for Java のインストール
Java 7 以降をインストールします。
次のコマンドを実行して、Java のバージョンを確認できます。
java -versionJava が環境にインストールされていない場合、または Java のバージョンが V7 より前の場合は、互換性のあるバージョンをダウンロードしてください。
OSS SDK for Java をインストールします。
説明要件に基づいて、OSS SDK for Java の適切なバージョンを選択してください。 このセクションのサンプルコードが正常に実行されるように、最新の OSS SDK for Java V3.17.4 を使用することをお勧めします。
Maven プロジェクトに依存関係を追加する (推奨)
Java 7 または 8 で OSS SDK for Java を使用するには、対応する SDK の依存関係を pom.xml ファイルに追加します。
この例では、OSS SDK for Java V3.17.4 の依存関係が追加されています。<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.17.4</version> </dependency>Java 9 以降を使用する場合は、OSS SDK の依存関係に加えて、次の jaxb 関連の依存関係を追加します。
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <!-- no more than 2.3.3--> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version> </dependency>JAR ファイルを Eclipse プロジェクトにインポートする
OSS SDK for Java V3.17.4 を使用するには、次の手順で JAR ファイルをプロジェクトにインポートします。
OSS SDK for Java.zip をダウンロードします。
パッケージを解凍します。
aliyun-sdk-oss-3.17.4.jar ファイルと lib ディレクトリ内のすべてのファイルをプロジェクトにコピーします。
Eclipse でプロジェクトを選択し、右クリックメニューから を選択します。
コピーしたすべての JAR ファイルを選択し、ライブラリにインポートします。
JAR ファイルを IntelliJ IDEA プロジェクトにインポートする
OSS SDK for Java V3.17.4 を使用するには、次の手順で JAR ファイルをプロジェクトにインポートします。
OSS SDK for Java.zip パッケージをダウンロードします。
パッケージを解凍します。
aliyun-sdk-oss-3.17.4.jar ファイルと lib ディレクトリ内のすべての JAR ファイルをプロジェクトにコピーします。
IntelliJ IDEA でプロジェクトを選択し、 を選択します。
コピーしたすべての JAR ファイルを選択し、外部ライブラリにインポートします。
完全なコード例
次のコードを実行して設定を検証し、基本的なストレージ操作を実行します。この例では、シンガポールリージョンを使用して、コードがデフォルトのエンドポイントですぐに実行されることを保証します。
コンプライアンスとセキュリティを向上させるためのポリシー変更により、2025 年 3 月 20 日より、新規 OSS ユーザーは、中国本土リージョンにある OSS バケットでデータ API 操作を実行するには、カスタムドメイン名を使用する (CNAME ドメイン名) 必要があります。これらの操作では、デフォルトのパブリックエンドポイントは制限されます。影響を受ける操作の完全なリストについては、公式発表をご参照ください。HTTPS 経由でデータにアクセスする場合は、カスタムドメインに有効な SSL 証明書をバインドする必要があります。コンソールでは HTTPS が適用されるため、これはOSS コンソールへのアクセスには必須です。
import java.io.*;
import java.util.Random;
import com.aliyun.oss.*;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OssJavaSdkQuickStart {
/** 一意のバケット名を生成します。 */
public static String generateUniqueBucketName(String prefix) {
// 現在のタイムスタンプを取得します。
String timestamp = String.valueOf(System.currentTimeMillis());
// 0 から 9999 までの乱数を生成します。
Random random = new Random();
int randomNum = random.nextInt(10000); // 0 から 9999 までの乱数を生成します。
// 各部分を連結して一意のバケット名を形成します。
return prefix + "-" + timestamp + "-" + randomNum;
}
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
// この例では、プロセスを説明するためにシンガポールリージョンを使用します。エンドポイントを https://oss-ap-southeast-1.aliyuncs.com に設定します。実際のエンドポイントに置き換えてください。
String endpoint = "https://oss-ap-southeast-1.aliyuncs.com";
String bucketName = generateUniqueBucketName("demo");
// バケットが配置されているリージョンを指定します。この例ではシンガポールを使用します。リージョンを ap-southeast-1 に設定します。
String region = "ap-southeast-1";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数を設定してください。
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// OSSClient インスタンスを作成します。
// OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// V4 署名アルゴリズムの使用を明示的に宣言します。
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.region(region)
.build();
try {
// 1. バケットを作成します。
ossClient.createBucket(bucketName);
System.out.println("1. Bucket " + bucketName + " created.");
// 2. ファイルをアップロードします。
String objectName = "exampledir/exampleobject.txt";
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
System.out.println("2. File " + objectName + " uploaded.");
// 3. ファイルをダウンロードします。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream contentStream = ossObject.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(contentStream));
String line;
System.out.println("3. Content of the downloaded file:");
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
contentStream.close();
// 4. ファイルを一覧表示します。
System.out.println("4. Files in the bucket:");
ObjectListing objectListing = ossClient.listObjects(bucketName);
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " (size = " + objectSummary.getSize() + ")");
}
// 5. ファイルを削除します。
ossClient.deleteObject(bucketName, objectName);
System.out.println("5. File " + objectName + " deleted.");
// 6. バケットを削除します。
ossClient.deleteBucket(bucketName);
System.out.println("6. Bucket " + bucketName + " deleted.");
} 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 | IOException 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();
}
}
}
}正常に実行されると、次のような連続したログが出力されます。
1. Bucket demo-1731651903982-4074 created.
2. File exampledir/exampleobject.txt uploaded.
3. Content of the downloaded file:
Hello OSS
4. Files in the bucket:
- exampledir/exampleobject.txt (size = 9)
5. File exampledir/exampleobject.txt deleted.
6. Bucket demo-1731651903982-4074 deleted.その他の言語
他の言語の SDK も、バケット管理やファイル操作にご利用いただけます。

