OSSClientは、Object Storage Service (OSS) のJavaクライアントです。 バケットやオブジェクトなどのOSSリソースの管理に使用されます。 OSS SDK for Javaを使用してリクエストを開始するには、OSSClientインスタンスを初期化し、ビジネス要件に基づいてClientConfiguration設定クラスのデフォルト設定項目を変更する必要があります。
使用上の注意
OSSClientインスタンスを初期化する前に、アクセス資格情報を設定する必要があります。 このトピックでは、アクセス資格情報は環境変数から取得します。 詳細については、「アクセス資格情報の設定」をご参照ください。
OSSClientインスタンスの作成
OSSClientはスレッドセーフで、複数のスレッドを使用して同じインスタンスにアクセスできます。 同じOSSClientインスタンスを再利用するか、ビジネス要件に基づいて複数のOSSClientインスタンスを作成できます。
OSSClientインスタンスには接続プールがあります。 OSSClientインスタンスを使用しなくなった場合は、shutdownメソッドを呼び出してOSSClientインスタンスをシャットダウンします。 これにより、OSSClientインスタンスの数が多すぎることによるリソースの枯渇を防ぎます。
(推奨) V4署名アルゴリズムの使用
より良いセキュリティを提供するV4署名アルゴリズムを使用することを推奨します。
V4署名アルゴリズムを使用してOSSClientインスタンスを初期化する場合、エンドポイントを指定する必要があります。 例: https://oss-cn-hangzhou.aliyuncs.com 。
リクエストが開始されるリージョンの識別子として、Alibaba CloudリージョンIDを指定する必要があります。 例:cn-hangzhou。
コードでV4署名アルゴリズムの使用を明示的に宣言する必要があります。 例: SignVersion.V4
OSS SDK for Java 3.17.4以降は、V4署名アルゴリズムをサポートしています。
OSSエンドポイントを使用したOSSClientインスタンスの作成
次のサンプルコードは、OSSエンドポイントを使用してOSSClientインスタンスを作成し、V4署名アルゴリズムを使用する方法の例を示しています。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OSSClientV4 {
public static void main(String[] args) throws Exception {
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region in which the bucket is located. Example: cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
Apsara StackまたはプライベートリージョンでOSSClientインスタンスを作成する
次のサンプルコードは、Apsara StackまたはプライベートリージョンでOSSClientインスタンスを作成する方法の例を示しています。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OSSClientV4 {
public static void main(String[] args) throws Exception {
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region in which the bucket is located. Example: cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Disable CNAME.
clientBuilderConfiguration.setSupportCname(false);
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
カスタムドメイン名を使用してOSSClientインスタンスを作成する
次のサンプルコードは、カスタムドメイン名を使用してOSSClientインスタンスを作成する方法の例を示しています。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OSSClientV4 {
public static void main(String[] args) throws Exception {
// Specify a custom domain name.
String endpoint = "yourEndpoint";
// Specify the region in which the bucket is located. Example: cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Enable CNAME.
clientBuilderConfiguration.setSupportCname(true);
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
IPアドレスを使用したOSSClientインスタンスの作成
次のサンプルコードは、IPアドレスを使用してOSSClientインスタンスを作成する方法の例を示しています。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OSSClientV4 {
public static void main(String[] args) throws Exception {
// Specify an IP address as an endpoint in specific scenarios, such as scenarios that involve a private region. In specific scenarios, you must specify the IP address based on your business requirements.
String endpoint = "https://10.10.10.10";
// Specify the region in which the bucket is located. Example: cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Enable access from a second-level domain. By default, access from second-level domains is disabled. OSS SDK for Java 2.1.2 or later automatically detects IP addresses. If you use OSS SDK for Java whose version is earlier than 2.1.2, you must specify this parameter.
clientBuilderConfiguration.setSLDEnabled(true);
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
(非推奨) V1署名アルゴリズムの使用
2025年3月1日以降、新しいUIDを持つ新規顧客は、OSSのV1署名アルゴリズムを利用できなくなります。 2025年9月1日以降、OSSはV1署名アルゴリズムを更新および維持しなくなり、V1署名アルゴリズムは新しいバケットで使用できなくなります。 ビジネスへの影響を防ぐため、できるだけ早い機会にV1シグネチャをV4シグネチャにアップグレードします。
OSSエンドポイントを使用したOSSClientインスタンスの作成
次のサンプルコードは、OSSエンドポイントを使用してOSSClientインスタンスを作成する方法の例を示しています。 さまざまなリージョンのOSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
// Shut down the OSSClient instance.
ossClient.shutdown();
カスタムドメイン名を使用したOSSClientインスタンスの作成
次のサンプルコードは、カスタムドメイン名を使用してOSSClientインスタンスを作成する方法の例を示しています。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。
カスタムドメイン名を使用する場合、ossClient.listBucketsメソッドは使用できません。
// Specify a custom domain name.
String endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create ClientBuilderConfiguration and change the default values of the parameters based on your business requirements.
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// Specify whether to use CNAME. CNAME is used to map the custom domain name to the bucket.
conf.setSupportCname(true);
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
// Shut down the OSSClient instance.
ossClient.shutdown();
STSから取得したアクセス資格情報を使用したOSSClientインスタンスの作成
次のサンプルコードは、Security Token Service (STS) から取得したアクセス資格情報を使用してOSSClientインスタンスを作成する方法の例を示しています。
STSの設定方法の詳細については、「STSが提供する一時的なアクセス資格情報を使用してOSSにアクセスする」をご参照ください。
AssumeRole操作を呼び出すか、さまざまなプログラミング言語のSTS SDKを使用して、一時的なアクセス資格情報を取得できます。 詳細については、「STS SDKの概要」をご参照ください。
一時的なアクセス資格情報は、一時的なAccessKeyペアとセキュリティトークンで構成されます。 一時的なAccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 一時的なアクセス資格情報の有効期間は秒単位です。 一時的なアクセス資格情報の最小有効期間は900秒です。 一時的なアクセス資格情報の最大有効期間は、現在のロールに指定されている最大セッション期間です。 詳細については、「RAMロールの最大セッション期間の指定」をご参照ください。
STSから取得したアクセス資格情報を使用してOSSClientインスタンスを作成するために使用される完全なサンプルコードについては、「署名付きURLを使用してオブジェクトをダウンロードする」をご参照ください。
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Obtain temporary access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
// Shut down the OSSClient instance.
ossClient.shutdown();
STSAssumeRoleを使用したOSSClientインスタンスの作成
次のサンプルコードは、STSAssumeRoleを使用してOSSClientインスタンスを作成する方法の例を示しています。
// Specify the region for which you want to authorize STSAssumeRole to access. In this example, the China (Hangzhou) region is used. Specify your actual region.
String region = "cn-hangzhou";
// Obtain the AccessKey pair of the RAM user from the environment variables. Before you run the sample code, make sure that the environment variables are configured.
String accessKeyId = System.getenv("ALIYUN_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIYUN_ACCESS_KEY_SECRET");
// Obtain the Alibaba Cloud Resource Name (ARN) of the RAM role from the environment variable. Before you run the sample code, make sure that the environment variables are configured.
String roleArn = System.getenv("ALIYUN_STS_ROLE_ARN");
// Create an STSAssumeRoleSessionCredentialsProvider instance.
STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory.newSTSAssumeRoleSessionCredentialsProvider(
region, accessKeyId, accessKeySecret, roleArn);
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Create a ClientBuilderConfiguration instance.
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
// Shut down the OSSClient instance.
ossClient.shutdown();
EcsRamRoleを使用したOSSClientインスタンスの作成
インスタンスにアタッチされたRAMロールを使用して、ECS (Elastic Compute Service) インスタンスからOSSにアクセスできます。 RAMロールをECSインスタンスにアタッチして、STSから取得した一時的なアクセス資格情報を使用してインスタンスからOSSにアクセスできます。 一時的なアクセス資格情報は自動的に生成および更新されます。 アプリケーションは、インスタンスメタデータURLを使用して一時的なアクセス資格情報を取得できます。
次のサンプルコードは、EcsRamRoleを使用してOSSClientインスタンスを作成する方法の例を示しています。
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Use ecs-ram-role to obtain temporary access credentials.
InstanceProfileCredentialsProvider credentialsProvider = CredentialsProviderFactory.newInstanceProfileCredentialsProvider("ecs-ram-role");
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, new ClientBuilderConfiguration());
// Shut down the OSSClient instance.
ossClient.shutdown();
Apsara StackまたはプライベートリージョンでのOSSClientインスタンスの作成
次のサンプルコードは、Apsara StackまたはプライベートリージョンでOSSClientインスタンスを作成する方法の例を示しています。
// Specify the endpoint of the region in which the bucket is located.
String endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create ClientBuilderConfiguration and change the default values of the parameters based on your business requirements.
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// Disable CNAME.
conf.setSupportCname(false);
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
// Shut down the OSSClient instance.
ossClient.shutdown();
IPアドレスを使用したOSSClientインスタンスの作成
次のサンプルコードは、IPアドレスを使用してOSSClientインスタンスを作成する方法の例を示しています。
// Specify an IP address as an endpoint in specific scenarios, such as scenarios that involve a private region. In specific scenarios, you must specify the IP address based on your business requirements.
String endpoint = "https://10.10.10.10";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create a ClientBuilderConfiguration instance.
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// Enable access from a second-level domain. By default, access from second-level domains is disabled. OSS SDK for Java 2.1.2 or later automatically detects IP addresses. If you use OSS SDK for Java whose version is earlier than 2.1.2, you must specify this parameter.
conf.setSLDEnabled(true);
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
// Shut down the OSSClient instance.
ossClient.shutdown();
OSSClient インスタンスの設定
ClientConfigurationは、OSSClientインスタンスの構成クラスです。 ClientConfigurationクラスを使用して、プロキシ、接続タイムアウト期間、OSSClientインスタンスの最大接続数などのパラメーターを設定できます。
次のサンプルコードは、ClientConfigurationクラスを使用してOSSClientインスタンスのパラメーターを指定する方法の例を示しています。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class Demo {
public static void main(String[] args) throws Exception {
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create a ClientBuilderConfiguration instance.
// ClientBuilderConfiguration is a configuration class of an OSSClient instance. You can use the ClientBuilderConfiguration class to configure parameters, such as proxies, connection timeout period, and the maximum number of connections.
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// Specify the maximum number of HTTP connections allowed by an OSSClient instance. Default value: 1024.
conf.setMaxConnections(200);
// Specify User-Agent in the HTTP header. Default value: aliyun-sdk-java.
conf.setUserAgent("aliyun-sdk-java");
// Specify the IP address of the proxy server. Replace <yourProxyHost> with the IP address of the proxy server. Example: 196. xxx.xxx.
conf.setProxyHost("<yourProxyHost>");
// Specify the username verified by the proxy server. Replace <yourProxyUserName> with the username of the proxy server. Example: root.
conf.setProxyUsername("<yourProxyUserName>");
// Specify the password verified by the proxy server. Replace <yourProxyPassword> with the password of the user.
conf.setProxyPassword("<yourProxyPassword>");
// Create an OSSClient instance.
conf.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(conf)
.region(region)
.build();
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
次の表に、ClientConfigurationクラスの一般的なメソッドを示します。
移動方法 | 説明 |
ClientConfiguration.setMaxConnections | 許可されるHTTP接続の最大数。 デフォルト値: 1024。 |
ClientConfiguration.setSocketTimeout | ソケット層でのデータ送信のタイムアウト期間。 単位:ミリ秒。 デフォルト値: 50000 |
ClientConfiguration.setConnectionTimeout | 接続を確立するためのタイムアウト期間。 単位:ミリ秒。 デフォルト値: 50000 |
ClientConfiguration.setConnectionRequestTimeout | 接続プールから接続を取得するためのタイムアウト時間。 単位:ミリ秒。 デフォルトでは、タイムアウト期間は指定されていません。 |
ClientConfiguration.setIdleConnectionTime | アイドル接続のタイムアウト期間。 タイムアウト期間が終了すると、接続は閉じられます。 単位:ミリ秒。 デフォルト値: 60000 説明 |
ClientConfiguration.setSupportCname | CNAME をエンドポイントとして使用できるかどうかを指定します。 デフォルトでは、CNAMEをエンドポイントとして使用できます。 |
ClientConfiguration.setSLDEnabled | 第2レベルドメインからのアクセスを有効にするかどうかを指定します。 デフォルトでは、第2レベルドメインからのアクセスは無効になっています。 |
ClientConfiguration.setProtocol | OSSへの接続に使用されるプロトコル。 デフォルト値: HTTP。 有効な値: HTTPおよびHTTPS。 |
ClientConfiguration.setUserAgent | ユーザーエージェント (HTTPヘッダーのuser-agentフィールド) 。 デフォルト値: |
ClientConfiguration.setProxyHost | プロキシサーバーへのアクセスに使用されるホストのIPアドレス。 |
ClientConfiguration.setProxyPort | プロキシサーバーへの接続に使用されるポート。 |
ClientConfiguration.setProxyUsername | プロキシサーバーへのログオンに使用されるユーザー名。 |
ClientConfiguration.setProxyPassword | プロキシサーバーへのログインに使用されるパスワード。 |
ClientConfiguration.setRedirectEnable | HTTPリダイレクトを有効にするかどうかを指定します。 説明 OSS SDK for Java 3.10.1以降のHTTPリダイレクトを有効にするかどうかを指定できます。 デフォルトでは、OSS SDK for Java 3.10.1以降でHTTPリダイレクトが有効になっています。 |
ClientConfiguration.setVerifySSLEnable | SSLベースの認証を有効にするかどうかを指定します。 説明 OSS SDK for Java 3.10.1以降のSSLベースの認証を有効にするかどうかを指定できます。 OSS SDK for Java 3.10.1以降では、デフォルトでSSLベースの認証が有効になっています。 |
ClientConfiguration.setMaxErrorRetry | リクエストエラー発生時の最大リトライ回数。 デフォルト値:3 説明 エラーが発生すると、OSSはリクエストタイプごとに異なる再試行ポリシーを使用します。
|
ClientConfiguration.setRetryStrategy() | // カスタム再試行ポリシー。 通常、カスタム再試行ポリシーを指定しないことを推奨します。 |