GCSList - Google Cloud Storageからオブジェクト一覧を取得

Google Cloud Storageからオブジェクトの一覧を取得します。
Google Cloud Storageへの認証にはサービスアカウントを使用します。サービスアカウントの使用方法は下記トピック「認証に必要な準備」を参照してください。

■ストリーム情報

入力フォーマットすべて
接続数無制限
説明 入力ストリームは使用せず、すべて無視します。
出力フォーマットRecord
説明 次のようなフィールド定義のレコードが出力されます。
メタデータを取得したい場合、フィールド名は取得したい情報を「Meta_キー」の形式で指定します。取得できなかった場合nullが出力されます。
フィールド名データ型説明
kindString取得したオブジェクトの種類を出力します。
idString取得したオブジェクトのIDを出力します。
selfLinkString取得したオブジェクトのURLを出力します。
nameString取得したオブジェクトの名前を出力します。
bucketString取得したオブジェクトのバケットを出力します。
generationString取得したオブジェクトのGenerationを出力します。
metagenerationString取得したオブジェクトのMetaGenerationを出力します。
contentTypeString取得したオブジェクトのコンテンツタイプを出力します。
timeCreatedDateTime取得したオブジェクトの作成日時を出力します。
updatedDateTime取得したオブジェクトの更新日時を出力します。
storageClassString取得したオブジェクトのストレージクラスを出力します。
sizeInteger取得したオブジェクトのサイズを出力します。
md5HashString取得したオブジェクトのMD5ハッシュ値を出力します。
mediaLinkString取得したオブジェクトのメディアリンクを出力します。
owner_entityString取得したオブジェクトのオーナーのエンティティを出力します。
owner_entityIdString取得したオブジェクトのオーナーのエンティティIDを出力します。
crc32cString取得したオブジェクトのCRC32Cを出力します。
etagString取得したオブジェクトのETagを出力します。
Meta_[キー]取得したオブジェクトのメタデータを出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
コネクションを使用boolean- 接続先に以下のコネクション名を使用するかどうか選択します。
はい [true] - 以下のコネクション名で指定された接続情報を使用します。
いいえ [false] - コネクション情報以下のプロパティを使って接続を行います。
コネクション名connection-コネクションを使用が「はい」の場合に、GCPコネクションを指定します。 コネクションペインまたは管理コンソールにて作成されたGCPコネクションを選択します。
各コネクションの詳細については、「はじめに」-「詳細なトピック」-「フローの構成要素」-「コネクションプロパティ」を参照してください。
コネクション情報group-コネクションを使用プロパティが「いいえ」の場合に使用されるプロパティ群です。
メールアドレスstring入力&出力 Google Developer Consoleから取得したサービスアカウントのメールアドレスを設定します。 コネクションを使用が「いいえ」の場合にこの設定が参照されます。
証明書のエイリアスstring入力&出力 サービスアカウント認証用の証明書のエイリアスを設定します。
コネクションを使用が「いいえ」の場合にこの設定が参照されます。
アプリケーション名string入力&出力 Google Cloud Storageのアプリケーション名を設定します。
Google Cloud Platformのプロジェクト名ではなく、アプリケーションを区別するための名前です。
コネクションを使用が「いいえ」の場合にこの設定が参照されます。
タイムアウト(秒)int入力&出力 リクエスト時およびコネクション接続時のタイムアウトまでの時間を秒単位で指定します。
コネクションを使用が「いいえ」の場合にこの設定が参照されます。
プロキシ設定を使用boolean- 管理コンソールで設定したプロキシ設定を使用するかどうかを指定します。
プロキシの認証には対応していません。
コネクションを使用が「いいえ」の場合にこの設定が参照されます。
はい [true] - プロキシ設定を使用します。
いいえ [false] - プロキシ設定を使用しません。
バケット名string入力&出力 オブジェクト一覧を取得するバケットの名前を指定します。
フォルダー名string入力&出力 フォルダーパスを指定します。
指定しない場合はルートフォルダーが起点になります。
サブフォルダーを含めるboolean入力&出力フォルダー名で指定されたフォルダーより深い階層にあるオブジェクトを処理に含めるかどうかを選択します。
はい [true] - 指定されたフォルダーより深い階層のオブジェクトをすべて処理の対象に含めます。
いいえ [false] - 指定されたフォルダーにあるオブジェクトのみを処理の対象に含めます。
ループを開始loopProcess入力&出力 結果をまとめて出力するか、ループして出力するかを選択します。
はい [true] - ループの起点となって1レコードずつストリームに出力します。
いいえ [false] - すべてのレコードをストリームに出力します。
オブジェクトがない場合エラーboolean入力&出力 結果のレコード件数が0件だった場合にエラーを発生するかどうかを選択します。
はい [true] - エラーを発生します。
いいえ [false] - 空のストリームを出力します。

■ループ処理

結果のオブジェクトが複数あり、ループを開始が「はい」の場合、 このコンポーネントがループの起点となってレコードを1つずつ出力します。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム2通信に失敗した場合
3オブジェクトへのアクセス権がなかった場合
4証明書の取得に失敗した場合
5プロパティが不正だった場合
7出力ストリームのフィールドのデータ型の定義が不正だった場合
オブジェクトが無い なし コンポーネントの入力ストリーム6オブジェクトが存在しない場合

■認証に必要な準備

Google Cloud Storage系コンポーネントを使用するには、Google Cloud(GCP)でサービスアカウントとその鍵を作成し、鍵に含まれる秘密鍵を管理コンソールでユーザーの証明書としてインポートする必要があります。

フローサービスにインポートできる鍵の形式はPKCS#12(P12)またはJava KeyStoreです。Google CloudコンソールのサービスアカウントのキーではJSON形式の鍵しか作成できないため、次の「方法A」または「方法B」でPKCS#12形式の鍵を用意します。

1. サービスアカウントを作成する

  1. Google Cloudコンソールで「IAMと管理」-「サービス アカウント」を開き、サービスアカウントを作成します。
  2. 作成したサービスアカウントに、対象のバケットにアクセスできる権限(「Storage 管理者」または「Storage オブジェクト管理者」など)を付与します。
  3. 「APIとサービス」で「Cloud Storage JSON API」を有効にします。
  4. サービスアカウントのメールアドレス([サービスアカウント名]@[プロジェクトID].iam.gserviceaccount.com)を控えておきます。コネクションの「メールアドレス」に指定します。

2. PKCS#12形式の鍵を用意する

方法A:gcloud CLIでPKCS#12形式の鍵を作成する

Google Cloud CLI(gcloud)が使用できる場合は、PKCS#12形式の鍵を直接作成できます。

gcloud iam service-accounts keys create key.p12 --iam-account=[サービスアカウントのメールアドレス] --key-file-type=p12

作成されたファイルのパスワードは「notasecret」です。

方法B:JSON形式の鍵をPKCS#12形式に変換する

gcloud CLIが使用できない場合は、Google CloudコンソールでJSON形式の鍵をダウンロードし、OpenSSLでPKCS#12形式に変換します。

  1. 「IAMと管理」-「サービス アカウント」でサービスアカウントを選択し、「キー」タブの「鍵を追加」-「新しい鍵を作成」で「JSON」を選択してダウンロードします。
  2. ダウンロードしたJSONファイルのprivate_keyの値(-----BEGIN PRIVATE KEY-----から-----END PRIVATE KEY-----まで)を取り出し、privatekey.pemとして保存します。JSON中の\nは改行に置き換えます。
    Windows PowerShellでは次のコマンドで取り出せます。
    (Get-Content key.json -Raw | ConvertFrom-Json).private_key | Set-Content privatekey.pem -NoNewline -Encoding ascii
    
  3. 秘密鍵から自己署名証明書を作成し、秘密鍵とあわせてPKCS#12形式のファイルにします。
    openssl req -new -x509 -key privatekey.pem -out cert.pem -days 3650 -subj "/CN=[サービスアカウントのメールアドレス]"
    openssl pkcs12 -export -inkey privatekey.pem -in cert.pem -name privatekey -out key.p12 -passout pass:[任意のパスワード]
    
    証明書はフローサービスが秘密鍵を格納するために必要なもので、認証には使用されません。-subj-daysの値は任意です。

秘密鍵はサービスアカウントの認証情報そのものです。取り扱いには注意し、不要になったJSONファイルや中間ファイルは削除してください。

3. 管理コンソールで証明書をインポートする

  1. 管理コンソールの「ツール」-「アカウント」画面でフローの実行ユーザーを選択し、「ユーザーの証明書設定・情報」の「証明書」で「証明書のインポート」を実行します。
  2. 「インポートするファイル」に手順2で用意したPKCS#12ファイルを指定し、「ファイルのパスワード」にそのファイルのパスワード(方法Aの場合は「notasecret」)を入力します。
  3. 「格納エイリアス名」に任意のエイリアス名を入力します。コネクションの「証明書のエイリアス」に指定します。
  4. 「格納用パスワード」と「格納用秘密鍵パスワード」に、フローサービスで証明書を格納するための任意のパスワード(6文字以上)を入力します。

4. コネクションを設定する

  1. 「メールアドレス」に手順1で控えたサービスアカウントのメールアドレスを入力します。
  2. 「証明書のエイリアス」に手順3で指定した格納エイリアス名を入力します。

注意

組織のポリシー(iam.disableServiceAccountKeyCreation)によってサービスアカウントの鍵の作成が禁止されている場合は、鍵を作成できません。組織の管理者に確認してください。

■動作に必要な設定

Google Cloud Storage系コンポーネントを使用するには、外部ライブラリが必要となります。

  1. 以下のjarファイルをダウンロードして、[DATA_DIR]/system/lib/userlibフォルダーにコピーしてください。
  2. フローサービスを再起動してください。

■バケットとオブジェクトの設定画面

コンポーネントをダブルクリックするか、右クリックメニューの「Google Cloud Storage Browser」を実行することで、コンポーネントに設定されている接続情報を使用して設定画面が開きます。
この画面ではバケット名ObjectNameの設定とバケットの新規作成、そしてバケットとオブジェクトの削除を行うことができます。
まず最初に「プロジェクト」にプロジェクトIDかプロジェクトのナンバーを入力してから「バケットリスト」ボタンをクリックしてください。


「バケット」ツリーリスト

バケットとオブジェクトのツリーリストが表示されます。
このリストの中からコンポーネント設定するバケットとオブジェクトを選択します。

「プロジェクト」

バケットのプロジェクトを指定します。
プロジェクトのIDかナンバーを指定してください。プロジェクト名には対応していません。
コンポーネントのバケット名が指定されている場合、そのバケットが所属するプロジェクトのナンバーが表示されます。

「バケットリスト」ボタン

指定したプロジェクトのバケットリストを表示します。

バケット名

選択したバケットの値が表示されます。

ObjectName

選択したオブジェクトの値が表示されます。

「バケットを作成」ボタン

バケットを作成するためのダイアログが表示されます。

「バケットを削除」ボタン

「バケット」ツリーリストで選択されているバケットをサーバーから削除します。

「オブジェクトを削除」ボタン

「バケット」ツリーリストで選択されているオブジェクトをサーバーから削除します。

属性情報

選択されているバケットまたはオブジェクトの属性情報が表示されます。
ファイル内容はUTF-8で表示します。それ以外のエンコーディングではうまく表示できない場合があります。

「OK」ボタン

リストで選択されたバケットとオブジェクトの情報をコンポーネントのバケット名ObjectNameプロパティに設定します。

「キャンセル」ボタン

このダイアログを閉じます。
コンポーネントのバケット名ObjectNameプロパティに変更はありません。