Google Cloud Pub/Sub 拡張機能

バージョン: 1.3.0

Google Cloud Pub/Sub サービスのトピックにメッセージを公開します。

ここでは、この拡張機能を構成して使用する方法についてのリファレンスを提供します。

前提条件

ExtensionCallout ポリシーで API プロキシ経由で拡張機能を使用する前に、次のことを行う必要があります。

  1. クイックスタート: コンソールの使用の説明に従って、Cloud Pub/Sub トピックを作成します。

  2. トピックを作成したら、Cloud Pub/Sub トピックの公開権限を付与します。たとえば、トピックの公開に roles/pubsub.publisher 役割を使用します。Cloud Pub/Sub 役割の詳細については、アクセス制御をご覧ください。

  3. GCP Console でサービス アカウントキーを作成します

  4. 拡張機能の追加と構成を行うときに、構成リファレンスを使用して、生成されたキーの JSON ファイルのコンテンツを使用します。

Cloud Pub/Sub について

Cloud Pub/Sub は、送信者と受信者を切り離し、多対多の非同期メッセージングを行います。Cloud Pub/Sub は、Google Cloud Platform や外部にホストされているシステムをデベロッパーがすばやく統合するのに役立つ、低レイテンシで耐久性のあるメッセージングを提供します。

Cloud Pub/Sub を初めて使用する場合は、Cloud Pub/Sub ドキュメントのスタートガイドをご覧ください。

サンプル

次の例では、ExtensionCallout ポリシーを使用して、Cloud Pub/Sub 拡張機能のアクションをサポートする方法を説明します。

テキスト メッセージ

この例では、publish アクションを使用して、拡張機能の構成に指定されたトピックに簡単な文字列としてメッセージを公開しています。publish アクションは、公開先のトピックで公開されたメッセージの ID を返し、<Output> タブで指定された変数に書き込みます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
        <DisplayName>Publish Message</DisplayName>
        <Connector>cloud-pub-sub-extension-example</Connector>
        <Action>publish</Action>
        <Input><![CDATA[
          {
              "message" : "My test message."
          }
        ]]></Input>
        <Output>topic.message</Output>
    </ConnectorCallout>
    

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
        <DisplayName>Get Topic Message ID</DisplayName>
        <AssignTo type="response" createNew="false"/>
        <Set>
            <Payload contentType="application/json">{topic.message.messageId}</Payload>
        </Set>
    </AssignMessage>
    

レスポンス データが JSON として返されます。

{"messageId":"165918654986954"}
    

そのため topic.message.messageId の値は 165918654986954 となります。

JSON メッセージ

この例では、publish アクションを使用して、拡張機能の構成に指定されたトピックに JSON としてメッセージを公開しています。publish アクションは、公開先のトピックで公開されたメッセージの ID を返し、<Output> タブで指定された変数に書き込みます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
        <DisplayName>Publish Message</DisplayName>
        <Connector>cloud-pub-sub-extension-example</Connector>
        <Action>publish</Action>
        <Input><![CDATA[
          {
              "message" : { "info" : "My test message" }
          }
        ]]></Input>
        <Output>topic.message</Output>
    </ConnectorCallout>
    

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
        <DisplayName>Get Topic Message ID</DisplayName>
        <AssignTo type="response" createNew="false"/>
        <Set>
            <Payload contentType="application/json">{topic.message.messageId}</Payload>
        </Set>
    </AssignMessage>
    

レスポンス データが JSON として返されます。

{"messageId":"165918654986954"}

    

そのため topic.message.messageId の値は 165918654986954 となります。

アクション

publish

この拡張機能の構成で指定されたトピックにメッセージを公開します。

構文

<Action>publish</Action>
    <Input><![CDATA[{
      "message" : "message-to-publish" | JSON-structured-data,
      "customAttributes": JSON-array
    }]]></Input>
    

文字列の例

<Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    

JSON 構造化データの例

<Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    

カスタム属性の例

<Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" },
          "customAttributes": {"attr1": "foo", "attr2": "bar"}
      }
    ]]></Input>
    

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
message 公開するメッセージ。単純な文字列を使用するか、独自の設計の JSON でメッセージを構成できます。 文字列または JSON なし
customAttributes

次の形式でメッセージに追加するカスタム属性。

"customAttributes": {"attr1": "foo", "attr2": "bar"}
JSON 配列 なし ×

レスポンス

トピックに公開されたメッセージの ID を含む JSON。例:

{"messageId":"165918654986954"}
    

構成リファレンス

この拡張機能を API プロキシで使用するように構成してデプロイする場合は、以下のプロパティを使用します。

拡張機能の共通プロパティ

以下のプロパティはすべての拡張機能に存在します。

プロパティ 説明 デフォルト 必須
name この拡張機能の構成に指定する名前。 なし
packageName Apigee Edge によって指定された、拡張機能パッケージの名前。 なし
version 構成する拡張機能が含まれる拡張機能パッケージのバージョン番号。 なし
configuration 追加する拡張機能に固有の構成値。こちらの拡張機能パッケージのプロパティをご覧ください。 なし

この拡張機能パッケージに固有のプロパティ

プロパティ 説明 デフォルト 必須
topic 公開先のトピック。この値は、Pub/Sub サービス(サービスの GCP Console など)から取得します。たとえば、トピック名は projects/GCP-PROJECT-ID/topics/TOPIC-NAME のようになります。 なし