すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSSClientインスタンスの初期化

最終更新日:Dec 17, 2024

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フィールド) 。 デフォルト値: aliyun-sdk-java

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はリクエストタイプごとに異なる再試行ポリシーを使用します。

  • リクエストがPOSTリクエストの場合、OSSはデフォルトでリクエストを再試行しません。

  • 非POSTリクエストが次のいずれかのシナリオに一致する場合、OSSはデフォルトの再試行ポリシーに基づいてリクエストを最大3回まで再試行します。

    • ClientException例外が報告されると、ConnectionTimeout、SocketTimeout、ConnectionRefused、UnknownHost、またはSocketExceptionのいずれかのエラーコードが返されます。

    • OSSException例外が報告されると、InvalidResponse以外のエラーコードが返されます。

    • 返されたHTTPステータスコードが500、502、または503の場合。

ClientConfiguration.setRetryStrategy()

// カスタム再試行ポリシー。 通常、カスタム再試行ポリシーを指定しないことを推奨します。