Cloud Storage

Google Cloud Storage コネクタによって、Google Cloud Storage に接続してファイル転送オペレーションを実行できます。

始める前に

Cloud Storage コネクタを使用する前に、次のタスクを行います。

  • Google Cloud プロジェクトで次の操作を行います。
    • コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
    • コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
      • roles/storage.admin

      サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。

    • 次のサービスを有効にします。
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

      サービスを有効にする方法については、サービスを有効にするをご覧ください。

    以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。

コネクタを構成する

コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。

  1. Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。

    [接続] ページに移動

  2. [+ 新規作成] をクリックして [接続の作成] ページを開きます。
  3. [ロケーション] セクションで、接続のロケーションを選択します。
    1. リージョン: プルダウン リストからロケーションを選択します

      サポートされているすべてのリージョンのリストについては、ロケーションをご覧ください。

    2. [NEXT] をクリックします。
  4. [接続の詳細] セクションで、次の操作を行います。
    1. コネクタ: 使用可能なコネクタのプルダウン リストから [Cloud Storage] を選択します。
    2. コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
    3. [接続名] フィールドに、接続インスタンスの名前を入力します。

      接続名は次の条件を満たす必要があります。

      • 接続名には英字、数字、ハイフンを使用できます。
      • 文字は小文字のみを使用できます。
      • 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
      • 接続名は 63 文字以内で指定してください。
    4. 必要に応じて、接続インスタンスの [説明] を入力します。
    5. サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
    6. 必要に応じて、接続ノードの設定を構成します。

      • ノードの最小数: 接続ノードの最小数を入力します。
      • ノードの最大数: 接続ノードの最大数を入力します。

      ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。

    7. プロジェクト ID: データが存在する Google Cloud プロジェクトの ID。
    8. 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
    9. [NEXT] をクリックします。
  5. 確認: 接続を確認します。
  6. [作成] をクリックします。

エンティティ、オペレーション、アクション

すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。

  • エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。

    ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、Entities リストは空になります。

  • オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。

    使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがどのエンティティ オペレーションもサポートしていない場合、サポートされていないオペレーションは Operations リストに表示されません。

  • アクション: コネクタ インターフェースを介して統合で使用できる最初のクラス関数です。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、Actions リストが空になります。

システムの上限

Google Cloud Storage コネクタは、ノードごとに 1 秒あたり最大 10 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。

Integration Connectors に適用される上限の詳細については、上限をご覧ください。

アクション

Google Cloud Storage 接続では、次のアクションがサポートされています。

DownloadObject アクション

次の表では、DownloadObject アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
バケット はい String ダウンロードするオブジェクトが格納されているバケット名。
ObjectFilePath いいえ String ダウンロードするオブジェクトの名前。指定しない場合は、指定したバケットからすべてのオブジェクトがダウンロードされます。

ダウンロードするオブジェクトがバケットの子フォルダ内に存在する場合は、このようなオブジェクトのフルパスを指定する必要があります。たとえば、bucket_01folderA に存在する logfile.txt をダウンロードするには、オブジェクト パスを folderA/logfile.txt にする必要があります。

HasBytes いいえ ブール値 コンテンツをバイトとしてダウンロードするかどうか。有効な値は true または false です。true に設定すると、コンテンツは Base64 エンコード文字列としてダウンロードされます。

デフォルトで、HasBytes フィールドは false に設定されています。

UpdatedEndDate いいえ 日付 オブジェクトをダウンロードする期間の終了日。指定しない場合は、指定された UpdatedStartDate から現在の日付までのオブジェクトがダウンロードされます。
UpdatedStartDate いいえ 日付 オブジェクトをダウンロードする期間の開始日。指定しない場合は、開始時点から UpdatedEndDate までのオブジェクトがダウンロードされます。

DownloadObject アクションの構成例については、をご覧ください。

UploadObject アクション

次の表では、UploadObject アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
バケット はい String オブジェクトがアップロードされるバケット名。
FolderPath いいえ String オブジェクトをアップロードする先のフォルダへのパス。
ContentBytes いいえ String バイト形式(Base64 でエンコードされた文字列)でアップロードするコンテンツ。
HasBytes いいえ ブール値 コンテンツをバイトとしてアップロードするかどうか。有効な値は truefalse です。true に設定した場合、アップロードするコンテンツは、Base64 でエンコードされた文字列である必要があります。

デフォルトで、HasBytes フィールドは false に設定されています。

コンテンツ はい String アップロードするコンテンツ。
ObjectName いいえ String アップロードするオブジェクトの名前。

UploadObject アクションの構成例については、をご覧ください。

CopyObject アクション

次の表では、CopyObject アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
BucketSource はい String オブジェクトのコピー元のバケット名。
ObjectSource はい String オブジェクトのコピー先フォルダのフルパス。
BucketDestination はい String オブジェクトのコピー先のバケット名。
ObjectDestination いいえ String オブジェクト名を含む宛先のフルパス。オブジェクト名を指定しない場合は、ソース オブジェクトの名前が保持されます。

CopyObject アクションの構成例については、をご覧ください。

MoveObject アクション

次の表では、MoveObject アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
BucketSource はい String オブジェクトの移動元のバケット名。
ObjectSource はい String オブジェクトの移動先フォルダのフルパス。
BucketDestination はい String オブジェクトの移動先のバケット名。
ObjectDestination いいえ String オブジェクト名を含む宛先のフルパス。オブジェクト名を指定しない場合は、ソース オブジェクトの名前が保持されます。

DeleteObject アクション

次の表では、DeleteObject アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
BucketSource はい String 削除するオブジェクトが格納されているバケット名。
ObjectSource はい String 削除するオブジェクトの名前。
世代 いいえ Double 削除するオブジェクトのバージョン。対象のバージョンが存在する場合は、最新バージョンではなく、指定されたリビジョンを完全に削除します。これがデフォルトの動作です。
IfGenerationMatch いいえ Double オブジェクトの現在の世代が指定値と一致しているかどうかに応じて削除操作を実行します。この値を 0 に設定すると、オブジェクトのライブ バージョンが存在しない場合にのみオペレーションが成功します。
IfGenerationNotMatch いいえ Double オブジェクトの現在の世代が指定値に一致していないかどうかに応じて削除操作を実行します。ライブ オブジェクトが存在しない場合、前提条件は失敗します。この値を 0 に設定すると、オブジェクトのライブ バージョンが存在する場合にのみオペレーションが成功します。
IfMetagenerationMatch いいえ Double 削除オペレーションを、オブジェクトの現在のメタ世代が指定した値と一致するかどうかに基づいて行います。
IfMetagenerationNotMatch いいえ Double 削除オペレーションを、オブジェクトの現在のメタ世代が指定した値と一致しないかどうかに基づいて行います。

SignURL アクション

次の表に、指定したオブジェクトの署名付き URL を作成する SignURL アクションの入力パラメータを示します。

パラメータ名 必須 データ型 説明
バケット はい 文字列 オブジェクトが存在するバケット名。
オブジェクト はい 文字列 SignedURL を生成するオブジェクトの名前。
RequestMethod いいえ 文字列 署名付きリクエストで使用するメソッド。デフォルト値は GET です。
ロケーション いいえ 文字列 指定されたバケットのロケーション。デフォルト値は auto です。
ActiveDateTime いいえ 文字列 SignedURL がアクティブになる dateTime。指定しない場合、現在の dateTime が使用されます。
クエリ いいえ 文字列 SignedURL の使用時に含める必要があるクエリ文字列で、指定されていない場合、クエリ文字列は使用されません。
CustomHeaders いいえ 文字列 SignedURL で使用するヘッダーの name=value のカンマ区切りのリストで、指定されていない場合、カスタム ヘッダーが使用されます。
ExpiresIn はい 文字列 SignedURL の有効期限で、1d2h3m4s の形式で指定する必要があり、最大値は 7d0h0m0s です。
HmacAccessKey いいえ 文字列 HMAC アクセスキー。詳細については、HMAC キーをご覧ください。
HmacSecret いいえ 文字列 HMAC シークレット。

このセクションの例では、次のオペレーションについて説明します。

  • すべてのオブジェクトを一覧表示する
  • バケット内のすべてのオブジェクトを一覧表示する
  • すべてのバケットを一覧表示する
  • オブジェクトのダウンロード
  • バイナリ オブジェクトをダウンロードする
  • バケットにバイナリ オブジェクトをアップロードする
  • バケットにオブジェクトをアップロードする
  • フォルダにオブジェクトをアップロードする
  • オブジェクトのコピー
  • オブジェクトを移動する
  • オブジェクトを削除する
  • オブジェクトの署名付き URL を作成する

次の表では、コネクタのタスクのサンプル シナリオと対応する構成を示します。

タスク 構成
すべてのオブジェクトを一覧表示する
  1. [Configure connector task] ダイアログで [Entities] をクリックします。
  2. Objects エンティティを選択してから、List オペレーションを選択します。
  3. [完了] をクリックします。

これにより、すべてのバケット内のすべてのオブジェクトが一覧表示されます。オブジェクトは、Connectors タスクの connectorOutputPayload レスポンス パラメータに一覧表示されます。

バケット内のすべてのオブジェクトを一覧表示する
  1. [Configure connector task] ダイアログで [Entities] をクリックします。
  2. Objects エンティティを選択してから、List オペレーションを選択します。
  3. [完了] をクリックします。
  4. filterClause を、一覧表示するオブジェクトが格納されているバケット名に設定します。句を設定するには、Connectors タスクの Task Input セクションで [filterClause] をクリックし、[デフォルト値] フィールドに「Bucket = 'BUCKET_NAME'」と入力します。例: Bucket = 'bucket_01'
すべてのバケットを一覧表示する
  1. [Configure connector task] ダイアログで [Entities] をクリックします。
  2. Buckets エンティティを選択してから、List オペレーションを選択します。
  3. [完了] をクリックします。
オブジェクトのダウンロード
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [DownloadObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
      "Bucket": "bucket-test-01",
      "ObjectFilePath": "logfile.txt"
    }
  4. この例では、logfile.txt ファイルをダウンロードします。ダウンロードしたファイルのコンテンツは、Connectors タスクの connectorOutputPayload レスポンス パラメータで JSON 形式で入手できます。

バイナリ オブジェクトをダウンロードする

バイナリ オブジェクトをダウンロードする手順は、前述の通常のオブジェクトをダウンロードするものと同じです。さらに、connectorInputPayload フィールドで HasBytestrue として指定する必要があります。これにより、オブジェクトが Base64 でエンコードされた文字列としてダウンロードされます。connectorInputPayload フィールドのサンプル値:

{
"Bucket": "bucket-test-01",
"ObjectFilePath": "image01.png",
"HasBytes" : true
}

ダウンロードが成功すると、connectorOutputPayload フィールドの出力は次のようになります。

{
"Success": "true",
"ContentBytes": "SGVsbG8gdGVzdCE\u003d"
}
バケットにバイナリ オブジェクトをアップロードする
  1. [Configure connector task] ダイアログで、[Actions] をクリックします。
  2. [UploadObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "ContentBytes": "SGVsbG8gVGVzdCE=",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01",
    "HasBytes": true
    }
  4. この例では、bucket-test-01 バケットに test-file-01 ファイルを作成します。test-file-01 という名前の既存のファイルが存在する場合は、この既存のファイルが上書きされます。

バケットにオブジェクトをアップロードする
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [UploadObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. この例では、bucket-test-01 バケットに Hello test! のコンテンツを含む test-file-01.txt ファイルを作成します。test-file-01.txt という名前の既存のファイルが存在する場合は、この既存のファイルが上書きされます。

フォルダにオブジェクトをアップロードする
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [UploadObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "FolderPath": "folderA",
    "ObjectName": "test-file-01.txt"
    }
  4. この例では、bucket-test-01folderA フォルダに内容が Hello test!test-file-01.txt ファイルを作成します。フォルダに test-file-01.txt という名前の既存のファイルがある場合は、この既存のファイルが上書きされます。

オブジェクトのコピー
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [CopyObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. この例では、folderA/logfile.txt ファイルを bucket_01 から bucket_02folderB/logfile.txt にコピーします。

コピーに成功すると、connectorOutputPayload フィールドの出力は次のようになります。

{
"Success": "true"
}
オブジェクトを移動する
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [MoveObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. この例では、folderA/logfile.txt ファイルを bucket_01 から bucket_02folderB/logfile.txt に移動します。

コピーに成功すると、connectorOutputPayload フィールドの出力は次のようになります。

{
"Success": "true"
}
オブジェクトを削除する
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [DeleteObject] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "logfile.txt"
    }
  4. この例では、logfile.txt ファイルを bucket_01 から削除します。

コピーに成功すると、connectorOutputPayload フィールドの出力は次のようになります。

{
"Success": "true"
}
オブジェクトの署名付き URL を作成する
  1. [Configure connector task] ダイアログで [Actions] をクリックします。
  2. [SignURL] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のように入力します。
    {
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. この例では、bucket-test-01 バケット内にある test-file-01.txt ファイルの署名付き URL を作成します。アクションが成功すると、次のような署名付き URL がレスポンスで返されます。

    
    {
    "Success": "true",
    "SignURL": "https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
    GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount
    .com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
    1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
    9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
    6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
    c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
    0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
    66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
    a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
    2ea7abedc098d2eb14a7"
    }

考慮事項

  • ダウンロード可能なオブジェクトの最大サイズは 10 MB です。
  • UploadObject アクションを使用して複数のファイルをアップロードすることはできません。アップロードできるのは単一のファイルだけです。

Terraform を使用して接続を作成する

Terraform リソースを使用して、新しい接続を作成できます。

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。

Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。

パラメータ名 データ型 必須 説明
project_id STRING True データが存在する Google Cloud プロジェクトの ID。

統合で Cloud Storage 接続を使用する

接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。

  • Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
  • Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。

Google Cloud コミュニティの助けを借りる

Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。

次のステップ