GCSPut - Google Cloud Storageへファイルをアップロード

Google Cloud Storageへファイルをアップロードします。
Google Cloud Storageへの認証にはサービスアカウントを使用します。サービスアカウントの使用方法は下記トピック「認証に必要な準備」を参照してください。

■ストリーム情報

入力フォーマットすべて
接続数無制限
説明 入力ストリームは使用せず、すべて無視します。
出力フォーマットRecord
説明 次のようなフィールド定義のレコードが出力されます。
フィールド名データ型説明
idStringアップロードしたオブジェクトのIDを出力します。
sizeIntegerアップロードしたオブジェクトのサイズを出力します。

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

名前プロパティ型マッピング説明
コネクションを使用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入力&出力 アップロードするオブジェクトの名前を指定します。
指定しなかった場合はアップロードファイルの名前になります。
アップロードファイルパスremoteFile入力&出力 アップロードするファイルのパスを指定します。
ファイルパスの詳細設定group- ファイルパスの詳細設定を行うプロパティ群です。
相対パスの起点pathResolver- 相対パス指定の場合にベースフォルダーを指定します。
プロジェクトフォルダー [Relative]
プロジェクトファイルと同じフォルダーを起点にします。
ホームフォルダー [ProjectOwner]
ユーザーのホームフォルダーを起点にします。
実行ユーザーのホームフォルダー [ExecuteUser]
実行ユーザーのホームフォルダーを起点にします。
絶対パスを許可boolean- 絶対パスを許可するかどうか選択します。
「..」を許可boolean- 上のフォルダへ移動する記述に「..」を許可するかどうか選択します。
ContentTypestring入力&出力 コンテントタイプを指定します。 指定しない場合は自動で設定されます。
上書きを許可boolean入力&出力 オブジェクトを上書きするかどうか選択します。
はい [true] - オブジェクトを上書きします。
いいえ [false] - オブジェクトが存在するのエラーを発生します。
ロールバック時の処理choice- ロールバック時にアップロードしたオブジェクトを削除するかどうかを選択します。
オブジェクトを削除 [true] - 削除します。
何もしない [false] - 何もしません。
メタデータcategory入力&出力 オブジェクトのカスタムメタデータとしてキーと値の文字列をセットします。Content-Typeなどの固定キーメタデータは設定できません。
名前
キーメタデータのキー
メタデータの値
ACLcategory入力&出力 オブジェクトのアクセス権限としてエンティティとロールをセットします。
エンティティとロールの値については公式サイトの「Access Control」を参照してください。
設定しなかった場合は、エンティティが「allusers」でロールが「READER」のアクセス権限が設定されます。
名前
エンティティACLのエンティティ
ロールACLのロール

■トランザクション処理

コミット何もしません。
ロールバックロールバック時の処理が「オブジェクトを削除」の場合、オブジェクトを削除します。

■エラー処理

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

■認証に必要な準備

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」を実行することで、コンポーネントに設定されている接続情報を使用して設定画面が開きます。
この画面ではバケット名オブジェクト名の設定とバケットの新規作成、そしてバケットとオブジェクトの削除を行うことができます。
まず最初に「プロジェクト」にプロジェクトIDかプロジェクトのナンバーを入力してから「バケットリスト」ボタンをクリックしてください。


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

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

「プロジェクト」

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

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

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

バケット名

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

オブジェクト名

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

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

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

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

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

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

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

属性情報

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

「OK」ボタン

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

「キャンセル」ボタン

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