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

Object Storage Service:RAM ユーザーの AccessKey ペアを使用した OSS へのアクセス

最終更新日:Nov 15, 2025

Resource Access Management (RAM) ユーザーに特定の権限を付与できます。これにより、RAM ユーザーは AccessKey ペアを使用して、Object Storage Service (OSS) リソースに長期間アクセスできます。この方法は、Alibaba Cloud アカウントの AccessKey ペアを使用するよりも安全です。

ステップ 1: RAM ユーザーの作成

  1. Alibaba Cloud アカウントまたは RAM 管理者として RAM コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[ID] > [ユーザー] を選択します。

  3. [ユーザー] ページで、[ユーザーの作成] をクリックします。image

  4. [ユーザーの作成] ページの [ユーザーアカウント情報] セクションで、次のパラメーターを設定します。

    • [ログイン名]: ログイン名は最大 64 文字で、文字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) を使用できます。

    • [表示名]: 表示名は最大 128 文字です。

    • [タグ]: edit アイコンをクリックして、タグキーとタグ値を入力します。タグを追加すると、RAM ユーザーの分類と管理に役立ちます。

    説明

    [ユーザーの追加] をクリックすると、一度に複数の RAM ユーザーを作成できます。

  5. [アクセス方法] セクションで [永続的な AccessKey を使用してアクセス] を選択し、[OK] をクリックします。

  6. [コピー] をクリックして、AccessKey ペア (AccessKey ID と AccessKey Secret) を保存します。

ステップ 2: RAM ユーザーにファイルのアップロード権限を付与する

  1. カスタムポリシーを作成して、ファイルのアップロード権限を付与します。

    1. 左側のナビゲーションウィンドウで、[権限管理] > ポリシー を選択します。

    2. ポリシーの作成 をクリックします。

    3. ポリシーの作成 ページで、スクリプトの編集 タブをクリックします。ポリシードキュメントエディターで、`examplebucket` バケットの `exampledir` ディレクトリにファイルをアップロードするロール権限を付与します。次の設定例は参考用です。

      警告

      次の例は参考用です。過剰な権限によるセキュリティリスクを防ぐために、必要に応じてより詳細な権限付与ポリシーを設定してください。詳細な権限付与ポリシーの設定方法の詳細については、「RAM または STS を使用して他のユーザーに権限を付与する」をご参照ください。

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "oss:PutObject",
            "Resource": "acs:oss:*:*:examplebucket/exampledir/*"
          }
        ]
      }
    4. ポリシーを設定した後、[基本情報の編集を続行] をクリックします。

    5. [基本情報] セクションで、ポリシーの [名前]RamTestPolicy に設定し、[OK] をクリックします。

  2. カスタムポリシーを RAM ユーザーに関連付けます。

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ユーザー を選択します。

    2. ユーザー ページで、対象の RAM ユーザーを見つけます。

    3. RAM ユーザーの行で、権限の追加 をクリックします。

    4. 権限の追加 ページで、カスタムポリシー タブをクリックし、カスタムポリシー RamTestPolicy を選択します。

    5. [OK] をクリックします。

ステップ 3: RAM ユーザーの AccessKey ペアを使用して OSS にファイルをアップロードする

次の Java サンプルコードは、ローカルファイル examplefile.txt を exampleobject.txt という名前のオブジェクトとして examplebucket バケットの exampledir ディレクトリにアップロードする方法を示しています。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されています。実際の エンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。例: examplebucket。
        String bucketName = "examplebucket";
        // オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";
        // アップロードするローカルファイルの完全なパスを指定します。例: D:\\localpath\\examplefile.txt。
        // デフォルトでは、ローカルファイルのパスが指定されていない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
        String filePath= "D:\\localpath\\examplefile.txt";
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 {
            // PutObjectRequest オブジェクトを作成します。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // 次のサンプルコードは、オブジェクトをアップロードするときにオブジェクトのストレージクラスと ACL を指定する方法の例を示しています。
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // ローカルファイルをアップロードします。
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } 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();
            }
        }
    }
}

他の言語のソフトウェア開発キット (SDK) の例については、以下をご参照ください。

よくある質問

RAM ユーザーの AccessKey 情報を表示するにはどうすればよいですか? 以前の AccessKey Secret を表示できますか?

  1. RAM ユーザーの AccessKey 情報を表示するには、「RAM ユーザーの AccessKey 情報を表示する」をご参照ください。

  2. RAM ユーザーの AccessKey Secret は、AccessKey ペアが作成されたときにのみ表示されます。AccessKey Secret は後で取得できません。AccessKey Secret を忘れた場合は、RAM コンソール に移動し、ユーザーを選択して、ローテーション用に新しい AccessKey ペアを作成します。詳細については、「AccessKey ペアの作成」をご参照ください。

RAM ユーザーの AccessKey ペアを使用してファイルをアップロードするときに「AccessDenied」エラーが報告された場合はどうすればよいですか?

ファイルアップロード中に AccessDenied エラーが発生するのは、誤った AccessKey 情報が使用された場合、または RAM ユーザーにファイルのアップロード権限がない場合です。次の点を確認してください。

  1. RAM ユーザーの AccessKey 情報が正しいかどうかを確認します。詳細については、「RAM ユーザーの AccessKey 情報を表示する」をご参照ください。

  2. RAM ユーザーの AccessKey Secret は、AccessKey ペアが作成されたときにのみ表示されます。AccessKey Secret は後で取得できません。AccessKey Secret を忘れた場合は、RAM コンソール に移動し、ユーザーを選択して、ローテーション用に新しい AccessKey ペアを作成します。詳細については、「AccessKey ペアの作成」をご参照ください。

  3. RAM コンソール にログインし、ユーザーを選択して、RAM ユーザーに OSS のファイルアップロード権限を付与します。

エラーが報告された場合、特定のエラータイプを照会するにはどうすればよいですか?

OSS は、エラーの原因を特定するために使用できる エラーコード のリストを提供しています。たとえば、一般的な認証エラーに関する情報については、「02-AUTH」をご参照ください。

NoSuchBucket エラーを処理するにはどうすればよいですか?

このエラーは、指定されたバケットが存在しないことを示します。バケット名が正しいことを確認してください。

The bucket you are attempting to access must be addressed using the specified endpoint. エラーを処理するにはどうすればよいですか?

このエラーは、Endpoint パラメーターが正しくないために発生します。バケットが配置されているリージョンに対応する Endpoint を指定する必要があります。リージョンと Endpoint の間のマッピングの詳細については、「リージョンとエンドポイント」をご参照ください。

リファレンス