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

MaxCompute:SDK for Java を使用した外部ボリュームの管理

最終更新日:Nov 09, 2025

このトピックでは、SDK for Java を使用して外部ボリュームを管理する方法について説明します。

プロジェクト依存関係

SDK を使用して外部ボリュームを管理する前に、次の依存関係を追加する必要があります。

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-sdk-core</artifactId>
  <version>${Latest Version}</version>
</dependency>
重要

上記のコードでは、Latest Version はプレースホルダーです。プロジェクトをコンパイルするには、プレースホルダーを特定の SDK バージョン番号に置き換える必要があります。odps-sdk-core のリリースバージョンは、Maven Central Repository で見つけることができます。最新バージョンを使用することをお勧めします。バージョン番号は X.X.X-public フォーマットです。

外部ボリュームを作成する

  • 作成

    /**
    * 外部ボリュームを作成します。
    * @param builder ボリュームのパラメーター構成。
    * @throws OdpsException
    */
    public void create(VolumeBuilder builder) throws OdpsException
    
        /**
    * 外部ボリュームを作成します。
    *
    * @param volumeName ボリュームの名前。
    * @param comment
    * @param type レガシーボリュームを作成するには、{@link Volume}.Type.Old を渡します。新しい VolumeFS 機能用のボリュームを作成するには、{@link Volume}
    *        .Type.New を渡します。VolumeFS 機能は、プロジェクトで有効にされた後にのみ使用できます。
    * @throws OdpsException
    */
    public void create(String volumeName, String comment, Volume.Type type)
    
    
        /**
    * 外部ボリュームを作成します。
    *
    * @param projectName 宛先外部ボリュームが属するプロジェクトの名前。
    * @param volumeName 作成するボリュームの名前。
    * @param comment
    * @param type レガシーボリュームを作成するには、{@link Volume}.Type.Old を渡します。新しい VolumeFS 機能用のボリュームを作成するには、{@link Volume}
    *        .Type.New を渡します。VolumeFS 機能は、プロジェクトで有効にされた後にのみ使用できます。
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type)
    
        /**
    * ボリュームを作成します。
    *
    * @param projectName 宛先外部ボリュームが属するプロジェクトの名前。
    * @param volumeName 作成するボリュームの名前。
    * @param comment
    * @param type レガシーボリュームを作成するには、{@link Volume}.Type.Old を渡します。新しい VolumeFS 機能用のボリュームを作成するには、{@link Volume}
    *        .Type.New を渡します。VolumeFS 機能は、プロジェクトで有効にされた後にのみ使用できます。
    * @param lifecycle ライフサイクル。
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type, Long lifecycle) throws OdpsException
    
    
    
  • /*
     外部ボリュームを作成します。
    */
    
    public void createExternalVolume() throws Exception {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
        String externalLocation = "oss://...";
        
        Long lifecycle;
        String comment;
        String roleArn;
        
        Volumes.VolumeBuilder builder = new Volumes.VolumeBuilder();
            
        builder.project(projectName).volumeName(extVolumeName).type(Volume.Type.EXTERNAL).extLocation(externalLocation);
            
        if (lifecycle != null) {
            builder.lifecycle(lifecycle);
        }
            
        if (comment != null) {
            builder.comment(comment);
        }
            
        if (roleArn != null) {
            builder.addProperty(Volumes.EXTERNAL_VOLUME_ROLEARN_KEY, roleArn);
        }
            
        getCurrentOdps().volumes().create(builder);  
    }

指定された外部ボリュームに関する情報を取得する

  • 取得

    /**
    * 指定された外部ボリュームに関する情報を取得します。
    *
    * @param volumeName ボリュームの名前。
    * @return
    */
    public Volume get(String volumeName)
    
    /**
    * 指定された外部ボリュームに関する情報を取得します。
    *
    * @param projectName プロジェクトの名前。
    * @param volumeName  外部ボリュームの名前。
    * @return
    */
    public Volume get(String projectName, String volumeName)
    
  • /*
    外部ボリュームに関する情報を取得します。
    */
    public Volume getVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        Volume volume = odps.volumes().get(projectName, extVolumeName);
        return volume;
    }

外部ボリュームイテレーターの取得

  • イテレータ

    /**
    * デフォルトプロジェクト内のすべてのボリュームのイテレーターを取得します。
    *
    * @return ボリュームイテレーター。
    */
    public Iterator<Volume> iterator() 
    
        /**
    * ボリュームイテレーターを取得します。
    *
    * @param projectName プロジェクトの名前。
    * @return ボリュームイテレーター。
    */
    public Iterator<Volume> iterator(final String projectName)
    
    
        /**
    * ボリュームイテレーターを取得します。
    *
    * @param filter フィルター条件。
    * @return ボリュームイテレーター。
    */
    public Iterator<Volume> iterator(final VolumeFilter filter)
    
        /**
    * ボリュームイテレーターを取得します。
    *
    * @param projectName プロジェクトの名前。
    * @param filter フィルター条件。
    * @return ボリュームイテレーター。
    */
    public Iterator<Volume> iterator(final String projectName, final VolumeFilter filter)
  • /*
    ボリュームイテレーターを取得します。
    */
    public Iterator<Volume> getVolumeIterator() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        VolumeFilter volumeFilter = new VolumeFilter();
        volumeFilter.setName(extVolumeName);
    
        Iterator<Volume> iterator = odps.volumes().iterator(projectName, volumeFilter);
        return iterator;
    }

外部ボリュームの削除

  • 削除

    /**
    * 外部ボリュームを削除します。
    *
    * @param volumeName 外部ボリュームの名前。
    * @throws OdpsException
    */
    public void delete(String volumeName)
    
    /**
    * 外部ボリュームを削除します。
    *
    * @param projectName 外部ボリュームが属するプロジェクト。
    * @param volumeName 外部ボリュームの名前。
    * @throws OdpsException
    */
    public void delete(String projectName, String volumeName)
  • 削除の例

    /*
    外部ボリュームを削除します。
    */
    public void deleteVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        try {
            odps.volumes().delete(projectName, extVolumeName);
        } catch (OdpsException e) {
            throw new RuntimeException(e);
        }
    }