Object Storage Service (OSS) SDK for Java を使用すると、OSS ストレージ管理機能とデータアクセス機能を Java アプリケーションに簡単に統合できます。このトピックでは、OSS SDK for Java を使用して、バケットとオブジェクトの一般的な管理操作(バケットの作成と削除、オブジェクトのアップロード、ダウンロード、一覧表示、削除など)を実行する方法について説明します。
注意事項
OSS でサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、環境変数から取得したアクセス認証情報を使用しています。アクセス認証情報の構成方法の詳細については、「アクセス認証情報を構成する」をご参照ください。
OSS SDK for Java を使用してリクエストを開始するには、OSSClient インスタンスを初期化する必要があります。このトピックでは、デフォルトの構成を使用して OSSClient を作成します。 OSSClient の構成方法の詳細については、「OSSClient インスタンスを構成する」をご参照ください。
前提条件
Alibaba Cloud アカウントが作成されている。
OSS がアクティブ化されている。
OSS のフルアクセス権限を持つ 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、コマンドラインインターフェイス、その他のデスクトップアプリケーション、バックグラウンドサービス) を再起動またはリフレッシュして、最新のシステム環境変数が正常にロードされていることを確認してください。
SDK をインストールする
Java 7 以降をインストールします。
次のコマンドを実行して、Java のバージョンを確認できます。
java -version
Java が環境にインストールされていない場合、または Java のバージョンが V7 より前の場合は、互換性のある Java バージョンをダウンロードしてください。
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 package.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 ファイルを選択し、外部ライブラリにインポートします。
例
次のサンプルコードは、OSS SDK for Java を使用してバケットを作成および削除し、オブジェクトをアップロード、ダウンロード、一覧表示、および削除する方法を示しています。
import java.io.*;
import java.util.Random;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.OSSObjectSummary;
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);
// 文字列を連結して一意のバケット名を作成します。
return prefix + "-" + timestamp + "-" + randomNum;
}
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
// OSS エンドポイントとバケット名を指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
String bucketName = generateUniqueBucketName("demo");
// リージョンを指定します。
String region = "cn-hangzhou";
// OSSClient インスタンスを作成します。
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.region(region)
.build();
try {
// 1. バケットを作成します。
ossClient.createBucket(bucketName);
System.out.println("1. バケット " + bucketName + " が作成されました。");
// 2. オブジェクトをアップロードします。
String objectName = "exampledir/exampleobject.txt";
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
System.out.println("2. オブジェクト " + objectName + " がアップロードされました。");
// 3. オブジェクトをダウンロードします。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream contentStream = ossObject.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(contentStream));
String line;
System.out.println("3. ダウンロードされたオブジェクトの内容:");
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
contentStream.close();
// 4. オブジェクトを一覧表示します。
System.out.println("4. 一覧表示されたオブジェクト:");
ObjectListing objectListing = ossClient.listObjects(bucketName);
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " (サイズ = " + objectSummary.getSize() + ")");
}
// 5. オブジェクトを削除します。
ossClient.deleteObject(bucketName, objectName);
System.out.println("5. オブジェクト " + objectName + " が削除されました。");
// 6. バケットを削除します。
ossClient.deleteBucket(bucketName);
System.out.println("6. バケット " + bucketName + " が削除されました。");
} catch (OSSException oe) {
System.out.println("OSSException が発生しました。これは、リクエストは OSS に到達しましたが、何らかの理由でエラー応答で拒否されたことを意味します。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエスト ID:" + oe.getRequestId());
System.out.println("ホスト ID:" + oe.getHostId());
} catch (ClientException | IOException ce) {
System.out.println("ClientException が発生しました。これは、クライアントが OSS と通信しようとしているときに、ネットワークにアクセスできないなど、重大な内部問題が発生したことを意味します。");
System.out.println("エラーメッセージ:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
以下は、サンプルレスポンスです。
1. バケット demo-1731651903982-4074 が作成されました。
2. オブジェクト exampledir/exampleobject.txt がアップロードされました。
3. ダウンロードされたオブジェクトの内容:
Hello OSS
4. 一覧表示されたオブジェクト:
- exampledir/exampleobject.txt (サイズ = 9)
5. オブジェクト exampledir/exampleobject.txt が削除されました。
6. バケット demo-1731651903982-4074 が削除されました。