Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

【AWS Data Pipeline】データパイプラインのIDと名前のリストを取得する

JavaでデータパイプラインのIDと名前のリストを取得するサンプルです。

検証環境

Java 8

DataPipelineClientProvider.java

package net.jhashimoto.aws.datapipeline;

import com.amazonaws.auth.EnvironmentVariableCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.datapipeline.DataPipeline;
import com.amazonaws.services.datapipeline.DataPipelineClientBuilder;

/**
 * データパイプラインにアクセスするためのインスタンスを取得する機能を提供します。
 *
 * @author j-hashimoto
 *
 */
public class DataPipelineClientProvider {

    /**
    * データパイプラインにアクセスするためのインスタンスを取得します。
    *
    * @return データパイプラインにアクセスするためのインスタンス。
    */
    public DataPipeline get() {
        DataPipelineClientBuilder builder = DataPipelineClientBuilder.standard();
        DataPipeline client = builder
            .withRegion(Regions.AP_NORTHEAST_1)
            .withCredentials(new EnvironmentVariableCredentialsProvider())    // 環境変数から認証情報を取得
            .build();

        return client;
    }
}

DataPipelineInfoProvider.java

package net.jhashimoto.aws.datapipeline;

import java.util.ArrayList;
import java.util.List;

import com.amazonaws.services.datapipeline.DataPipeline;
import com.amazonaws.services.datapipeline.model.ListPipelinesRequest;
import com.amazonaws.services.datapipeline.model.ListPipelinesResult;
import com.amazonaws.services.datapipeline.model.PipelineIdName;

/**
 * データパイプラインの情報を取得する機能を提供します。
 *
 * @author j-hashimoto
 *
 */
public class DataPipelineInfoProvider {
    /**
    * データパイプラインにアクセスするためのインスタンス。
    */
    private DataPipeline client;

    /**
    * コンストラクタ。
    *
    * @param client データパイプラインにアクセスするためのインスタンス。
    */
    public DataPipelineInfoProvider(DataPipeline client) {
        this.client = client;
    }

    /**
    * パイプラインのIDと名前のリストを取得します。
    *
    * @return パイプラインのIDと名前のリスト。
    */
    public List<PipelineIdName> getIdNameList() {
        List<PipelineIdName> pipelineIdNameList = new ArrayList<PipelineIdName>();

        ListPipelinesRequest request = new ListPipelinesRequest();
        request.setMarker(null);

        ListPipelinesResult result;
        do {
            result = this.client.listPipelines(request);

            pipelineIdNameList.addAll(result.getPipelineIdList());

            request.setMarker(result.getMarker());
        } while (result.isHasMoreResults());

        return pipelineIdNameList;
    }
}

使い方

DataPipeline client = new DataPipelineClientProvider().get();
DataPipelineInfoProvider provider = new DataPipelineInfoProvider(client);
List<PipelineIdName> idNamelist = provider.getIdNameList();