Apigee Integration での MySQL 接続を使ってみる

このチュートリアルでは、サンプル統合から MySQL データベース インスタンスに接続し、MySQL データベース テーブルに対して一覧表示、取得、作成、更新、削除オペレーションを行う方法について説明します。

始める前に

  • Application Integration にアクセスできることを確認します。
  • Google Cloud プロジェクトを選択し、次のタスクを行います。

    • 接続の作成に使用するサービス アカウントに次のロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 次のサービスを有効にします。
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

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

  • データベースの作成に使用できる MySQL サーバーにアクセスできることを確認します。サポートされているすべてのコネクタとサポート対象バージョンのリストについては、コネクタ リファレンスをご覧ください。

MySQL でデータベースとテーブルを作成する

MySQL クライアントがインストールされているシステムから次のコマンドを実行します。
  1. MySQL サーバーに接続します。
    mysql --host=MYSQL_HOSTNAME_OR_IP_ADDRESS --port=PORT_NUMBER -uUSERNAME -pPASSWORD
    次のように置き換えます。
    • MYSQL_HOSTNAME_OR_IP_ADDRESS: MySQL サーバーの名前または IP アドレス。
    • PORT_NUMBER: MySQL サーバーのポート番号。
    • USERNAME: MySQL サーバーのユーザー名。
    • PASSWORD: MySQL サーバーのユーザーのパスワード。
  2. MySQL データベースを作成します。
    CREATE DATABASE tutorialDB;
  3. テーブルを作成します。
    CREATE TABLE EMPLOYEE
      (
      employee_id int auto_increment primary key,
      employee_first_name varchar(500) NOT null,
      employee_last_name varchar(500) NOT null,
      employee_emailID varchar(500)
      ); 
  4. 作成した EMPLOYEE テーブルに行を追加します。
    INSERT INTO EMPLOYEE (employee_first_name,employee_last_name,employee_emailID) values ("Peter","Dilliard","test-01@test.com");
    INSERT INTO EMPLOYEE (employee_first_name,employee_last_name,employee_emailID) values ("Meaghan","Webb","test-02@test.com");
    
  5. テーブルが作成され、行が追加されていることを確認します。
    SELECT * FROM EMPLOYEE;
    次のテーブル行が表示されます。
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
    

MySQL 接続を作成する

統合で MySQL データベースに接続できるようにするには、MySQL データベースへの新しい接続を作成します。

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

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

    2. [次へ] をクリックします。
  3. [接続の詳細] セクションに、次の詳細を入力します。
    1. [コネクタ] リストから [MySQL(プレビュー)] を選択します。
    2. [Connector version] リストから、コネクタのバージョンを選択します。
    3. [接続名] フィールドに、接続インスタンスの名前を入力します。

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

      • 英字、数字、ハイフンを使用してください。
      • 英字は小文字のみを使用できます。
      • 名前の先頭は英字、末尾は英字または数字にします。
      • 名前は 63 文字以下で指定してください。
    4. 省略可: [説明] フィールドに、接続インスタンスの説明を追加します。
    5. 省略可: Cloud Logging を有効にします。
    6. [サービス アカウント] リストから、必要なロールを持つサービス アカウントを選択します。
    7. [データベース名] フィールドに、MySQL データベースの名前を入力します。
    8. 必要に応じて、接続ノードの設定を構成します(プレビュー)。

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

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

    9. Use proxy: このチェックボックスを選択して、接続用のプロキシ サーバーを構成し、次の値を構成します。
      • Proxy Auth Scheme: プロキシ サーバーで認証する認証タイプを選択します。次の認証タイプがサポートされています。
        • 基本: 基本的な HTTP 認証。
        • ダイジェスト: ダイジェスト HTTP 認証。
      • Proxy User: プロキシ サーバーでの認証に使用されるユーザー名。
      • Proxy Password: ユーザーのパスワードの Secret Manager シークレット。
      • Proxy SSL Type: プロキシ サーバーへの接続時に使用する SSL タイプ。次の認証タイプがサポートされています。
        • 自動: デフォルトの設定。URL が HTTPS URL の場合は、[トンネル] オプションが使用されます。URL が HTTP URL の場合、[なし] オプションが使用されます。
        • 常に: 接続は常に SSL 対応です。
        • なし: 接続は SSL に対応していません。
        • トンネル: 接続はトンネリング プロキシ経由で行われます。プロキシ サーバーがリモートホストへの接続を開き、トラフィックはプロキシを経由するようになります。
      • [Proxy Server] セクションで、プロキシ サーバーの詳細を入力します。
        1. [+ 宛先を追加] をクリックします。
        2. [宛先の種類] を選択します。
          • Host address: 宛先のホスト名または IP アドレスを指定します。

            バックエンドへのプライベート接続を確立する場合は、次のようにします。

    10. 省略可: 接続にラベルを追加するには、[+ラベルを追加] をクリックします。
    11. [次へ] をクリックします。
    12. [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
      • [宛先の種類] リストからホストアドレスを選択します。
        1. [Host address] フィールドに、宛先のホスト名または IP アドレスを指定します。
          1. バックエンド システムへのプライベート接続を確立する場合は、次のようにします。
            1. PSC サービス アタッチメントを作成します。
            2. エンドポイント アタッチメントを作成し、続いて [Host address] フィールドにあるエンドポイント アタッチメントの詳細を入力します。
          2. セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。

        他の宛先を入力するには、[+ 宛先を追加] をクリックします。

      • [次へ] をクリックします。
    13. [認証] セクションで、認証情報を指定できます。
      • [ユーザー名] フィールドに、接続に使用する MySQL ユーザー名を入力します。
      • [パスワード] フィールドに、MySQL ユーザー名に関連付けられたパスワードを含む Secret Manager シークレットを入力します。
        • 以前に作成したシークレットがリストにない場合は、[シークレットを手動で入力] を選択します。[リソース ID による Secret の追加] ダイアログで、Secret Manager からリソース ID をコピーして貼り付けます。
          • 最新バージョンを使用するには、親シークレットからリソース ID をコピーして "projects/project-number/secrets/secret-name" の形式で貼り付けます。
          • 特定のバージョンを選択するには、特定バージョンのリソース ID をコピーして "projects/project-number/secrets/secret-name/versions/1" の形式で貼り付けます。

          シークレットを追加するには、[シークレットの追加] をクリックします。

        • MySQL で使用するためのシークレットを作成していない場合は、[新しいシークレットを作成] をクリックします。[シークレットの作成] ダイアログで、次の詳細を入力します。
          • [名前] フィールドに、シークレットの名前を入力します。
          • [シークレットの値] フィールドに、シークレットの内容を入力するか、シークレットを含むファイルをアップロードします。
          • [シークレットの作成] をクリックします。
      • [シークレット バージョン] プルダウンの使用可能なバージョンのリストからパスワード シークレットのバージョンを選択します。
      • [次へ] をクリックします。
  4. [確認] セクションで、接続と認証の詳細を確認します。
  5. [作成] をクリックします。

認証を構成する

使用する認証に基づいて詳細を入力します。

  • ユーザー名とパスワード
    • ユーザー名: 接続に使用する Mysql ユーザー名。
    • パスワード: Mysql ユーザー名に関連付けられたパスワードを含む Secret Manager のシークレット。

MySQL 接続を使用するように統合を構成する

統合で作成した MySQL 接続を使用するには、次のタスクを行う必要があります。

  1. 新しい統合を作成する
  2. API トリガーを追加して構成する
  3. コネクタタスクを追加して構成する
  4. API トリガー要素をコネクタタスク要素に接続する

新しい統合を作成する

  1. Apigee UI で、Apigee 組織を選択します。
  2. [Develop] > [Integrations] の順にクリックします。
  3. [Create integration] をクリックします。
  4. [Integration name] フィールドに、統合の名前を入力します。
  5. 省略可: [Description] フィールドに説明を入力します。
  6. [Region] リストから、統合のリージョンを選択します。[Regions] リストには、Google Cloud プロジェクトでプロビジョニングされたリージョンのみが表示されます。新しいリージョンをプロビジョニングするには、[Enable Region] をクリックします。新しいリージョンをプロビジョニングする方法については、新しいリージョンを有効にするをご覧ください。
  7. 統合エディタを開くには、[Create] をクリックします。

API トリガーを追加して構成する

新しい統合を作成したら、統合に API トリガーを追加して構成できます。方法は次のとおりです。

  1. 統合エディタのツールバーで [Triggers] をクリックし、使用可能なトリガーのリストを表示します。
  2. [API] 要素を統合エディタにドラッグします。

コネクタタスクを追加して構成する

employee テーブル内のすべてのエンティティを一覧表示するように Connectors タスクを構成する手順は、次のとおりです。

  1. 統合エディタのツールバーで [Tasks] をクリックして、利用可能なタスクのリストを表示します。
  2. Connectors 要素を統合エディタにドラッグします。
  3. デザイナーの [Connectors] タスク要素をクリックして、[Connectors] パネルを開きます。
  4. [Connectors] パネルで、[Configure Connector] をクリックします。

    表示された [Connector Task Editor] ダイアログで、次の操作を行います。

    1. [Region] リストで、MySQL 接続を作成した接続リージョンを選択します。
    2. まず、[Connection] リストで作成した MySQL 接続を選択して [Next] をクリックします。
    3. [Type] セクションで [Entities] を選択し、[Next] をクリックします。
    4. [Entity] リストから [employee] を選択します。
    5. [Operation] リストから [List] を選択し、[Next] をクリックします。
    6. 接続の構成を完了してダイアログを閉じるには、[Done] をクリックします。

API トリガー要素をコネクタタスク要素に接続する

次に、エッジ接続を追加して、API トリガーをコネクタタスクに接続します。エッジ接続は、統合の 2 つの要素間の接続です。エッジとエッジ条件の詳細については、エッジをご覧ください。

エッジ接続を追加する手順は次のとおりです。

  1. API トリガー要素の下部にある [Fork] コントロール ポイントをクリックします。
  2. Connectors タスク要素の上部にある [Join] コントロール ポイントでエッジ接続をドラッグ&ドロップします。

統合をテストする

統合をテストする手順は次のとおりです。

  1. 統合エディタのツールバーで [Test] をクリックします。
  2. 省略可: [Execution Deadline (in minutes)] の値を変更して、[Test Integration] をクリックします。
  3. 統合が正常に完了すると、[Test Integration] ダイアログに「Integration execution succeeded」というメッセージが表示されます。ログを表示するには、[View logs] をクリックします。
  4. [Response Parameters] セクションを開きます。[Connector output payload] には、次の出力が表示されます。
    [ {
        "employee_id": 1.0,
        "employee_first_name": "Peter",
        "employee_last_name": "Dilliard",
        "employee_emailID": "test-01@test.com"
      },
      {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]

MySQL データベース テーブルにその他のオペレーションを実行する

統合でコネクタタスクを構成するときに、次のいずれかのオペレーションを選択できます。

  • List
  • Get
  • Create
  • 更新
  • Delete

List オペレーションを使用して employee テーブルのすべての行を表示しました。このチュートリアルの以降のセクションでは、Get、Create、Update、Delete の各オペレーションを使用して、employee テーブルの行を追加、変更、削除します。

テーブルから行を取得する

フェッチする行のエンティティ ID(または主キー)がわかっている場合は、その値を統合の Get オペレーションの入力として指定します。Get オペレーションによって返される詳細は、List オペレーションによって返される詳細と類似しています。List オペレーションは指定されたクエリに一致するすべてのテーブル行の詳細を取得しますが、Get オペレーションは指定されたエンティティ ID に一致するテーブル行の詳細のみを取得します。

List オペレーションではテーブル内のすべての行がデフォルトで返されますが、Get オペレーションでは検索パラメータとしてエンティティ ID が必要です。したがって、Get オペレーションを使用するには、取得する行のエンティティ ID を確認するか、エンティティ ID のデフォルト値を指定する必要があります。

指定した行の詳細を取得するには、前の手順で作成したコネクタタスクを構成します。

  1. 統合エディタで、Connectors タスク要素をクリックして、[Connectors] 構成ペインを表示します。
  2. [Connectors] 構成ペインで、[Configure Connector] をクリックします。表示された [Connector Task Editor] ダイアログで、次の操作を行います。
    1. [Set entities/action] セクションの [Operations] リストから [Get] を選択します。
    2. [Done] をクリックします。
  3. [Connectors] 構成ペインで、[Task Input] セクションを開きます。次に、以下の操作を行います。
    1. エンティティ ID をクリックします。
    2. 表示された [Edit variable] ダイアログで、[Use as an input to integration] を選択します。
    3. [保存] をクリックします。
  4. 統合エディタのツールバーで [Test] をクリックします。
  5. 省略可: [Execution Deadline (in minutes)] の値を変更します。
  6. 詳細を取得するエンティティのエンティティ ID を入力します。たとえば、2 のようにします。
  7. [Test Integration] をクリックします。
  8. 統合が正常に完了すると、[Test Integration] ダイアログに「Integration execution succeeded」というメッセージが表示されます。ログを表示するには、[View logs] をクリックします。
  9. [Response Parameters] セクションを開きます。[Connector output payload] には、次の出力が表示されます。
    [ {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]
  10. ここに表示される情報が、MySQL テーブルの対応する行の情報と一致していることを確認します。MySQL テーブルでこの情報を表示するには、MySQL クライアントから次のコマンドを実行します。
    SELECT * FROM employee WHERE employee_id=2;
    次のテーブル行が表示されます。
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
        

テーブルに行を追加する

Create オペレーションを使用すると、テーブルに行を追加できます。Create オペレーションを使用する場合は、コネクタ入力ペイロードでエンティティのすべての値を指定する必要があります。

Create オペレーションを使用して行を追加するには、前の手順で作成したコネクタタスクを構成します。

  1. 統合エディタで、Connectors タスク要素をクリックして、[Connectors] 構成ペインを表示します。
  2. [Connectors] 構成ペインで、[Configure Connector] をクリックします。表示された [Connector Task Editor] ダイアログで、次の操作を行います。
    1. [Set entities/action] セクションの [Operations] リストから [Create] を選択します。
    2. [Done] をクリックします。
  3. [Connectors] 構成ペインで、[Task Input] セクションを開きます。次に、以下の操作を行います。
    1. エンティティ ID をクリックします。
    2. 表示された [Edit variable] ダイアログで、[Use as an input to integration] を選択します。
    3. [保存] をクリックします。
  4. 統合エディタのツールバーで [Test] をクリックします。
  5. 省略可: [Execution Deadline (in minutes)] の値を変更します。
  6. 作成するエンティティの詳細を入力します。たとえば、employee テーブルに新しい従業員を追加するには、次の JSON を入力します。
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
  7. [Test Integration] をクリックします。
  8. 統合が正常に完了すると、[Test Integration] ダイアログに「Integration execution succeeded」というメッセージが表示されます。ログを表示するには、[View logs] をクリックします。
  9. [Response Parameters] セクションを開きます。[Connector output payload] には、次の出力が表示されます。
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
    [Connector output payload] で、エンティティ ID が出力として表示されます。
    {
      "employee_id": 3.0
    }
  10. MySQL テーブルで行が追加されたことを確認できます。MySQL テーブルでこの情報を表示するには、MySQL クライアントから次のコマンドを実行します。
    SELECT * FROM employee;
    次のテーブル行が表示されます。
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | test-03@test.com |
    +-------------+---------------------+--------------------+------------------+
        

テーブル内の行を更新する

Update オペレーションを使用して、テーブル行の値を変更します。たとえば、このオペレーションを使用して、employee テーブル内の従業員のメール ID を更新できます。更新するエンティティを指定するには、Get オペレーションの場合と同様にエンティティ ID を指定します。また、フィルタ句パラメータを使用して、テーブル行のフィルタ値を渡すことができます。これは、特定の検索条件に基づいて複数の行で同じ変更を行う場合に便利です。

テーブル行を更新するには、次の手順を行い、前に作成したコネクタタスクを構成します。

  1. 統合エディタで、Connectors タスク要素をクリックして、[Connectors] 構成ペインを表示します。
  2. [Connectors] 構成ペインで、[Configure Connector] をクリックします。表示された [Connector Task Editor] ダイアログで、次の操作を行います。
    1. [Set entities/action] セクションの [Operations] リストから [Update] を選択します。
    2. [Done] をクリックします。
  3. [Connectors] 構成ペインで、[Task Input] セクションを開きます。次に、以下の操作を行います。
    1. [Filter clause] をクリックします。
    2. 表示された [Edit variable] ダイアログで、[Use as an input to integration] を選択します。
    3. [保存] をクリックします。
  4. 統合エディタのツールバーで [Test] をクリックします。
  5. 省略可: [Execution Deadline (in minutes)] の値を変更します。
  6. フィルタ条件を入力します。たとえば、メールアドレス ID が test-03@test.com である従業員を検索するには、次のように入力します。
    employee_emailID="test-03@test.com"
  7. 更新する値だけを入力します。たとえば、employee テーブル内のすべての従業員のうち、現在のメール ID がフィルタ句 test-03@test.com と一致する従業員のメール ID を更新するには、次の JSON を入力します。
    {
      "employee_emailID": "msmith@test.com"
    }
  8. [Test Integration] をクリックします。
  9. 統合が正常に完了すると、[Test Integration] ダイアログに「Integration execution succeeded」というメッセージが表示されます。

    エンティティが更新されたことを確認するには、Get オペレーションを使用して、指定したエンティティの詳細を取得します。

  10. MySQL テーブルで行が更新されたことを確認します。MySQL テーブルでこの情報を表示するには、MySQL クライアントから次のコマンドを実行します。
    SELECT * FROM employee;
    次のテーブル行が表示されます。
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | msmith@test.com  |
    +-------------+---------------------+--------------------+------------------+
          

テーブルの行を削除する

Delete オペレーションを使用すると、テーブルの 1 つ以上の行を削除できます。エンティティ ID を指定するか、フィルタ句を使用して、削除する行を指定します。フィルタ句を使用して削除する行の条件を指定すると、そのフィルタに一致する複数の行を削除できます。特定の行のみを削除する場合は、エンティティ ID を使用します。

エンティティ ID を使用してテーブル行を削除するには、前の手順で作成したコネクタタスクを構成します。

  1. 統合エディタで、Connectors タスク要素をクリックして、[Connectors] 構成ペインを表示します。
  2. [Connectors] 構成ペインで、[Configure Connector] をクリックします。表示された [Connector Task Editor] ダイアログで、次の操作を行います。
    1. [Set entities/action] セクションの [Operations] リストから [Get] を選択します。
    2. [Done] をクリックします。
  3. [Connectors] 構成ペインで、[Task Input] セクションを開きます。次に、以下の操作を行います。
    1. エンティティ ID をクリックします。
    2. 表示された [Edit variable] ダイアログで、[Use as an input to integration] を選択します。
    3. [保存] をクリックします。
  4. 統合エディタのツールバーで [Test] をクリックします。
  5. 省略可: [Execution Deadline (in minutes)] の値を変更します。
  6. 詳細を取得するエンティティのエンティティ ID を入力します。たとえば、2 のようにします。
  7. [Test Integration] をクリックします。
  8. 統合が正常に完了すると、[Test Integration] ダイアログに「Integration execution succeeded」というメッセージが表示されます。

    テーブルの行が削除されたことを確認するには、Get オペレーションを使用して、削除した行の詳細を取得します。指定したエンティティ ID に対してエラーが返されます。

    また、List オペレーションを使用して、削除したテーブル行(複数可)をフィルタ句に指定します。残りの行のリストが返されます(リストが空の場合もあります)。

    たとえば、エンティティ ID が 3 のテーブル行を削除した場合、フィルタ句 employee_emailID="msmith@test.com" またはエンティティ ID 3 を List オペレーションに指定すると、ログのレスポンス パラメータは [] を表示します。

  9. MySQL テーブルで行が削除されたことを確認します。MySQL テーブルでこれを確認するには、MySQL クライアントから次のコマンドを実行します。
    SELECT * FROM employee;
    次のテーブル行が表示されます。
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
            

次のステップ

他のコネクタとのインテグレーションを構築してみる。サポートされているすべてのコネクタのリストについては、コネクタ リファレンスをご覧ください。