Google Cloud Pub/Sub 拡張機能

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

バージョン: 1.5.1

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 コンソールなど)から取得します。たとえば、トピック名は projects/GCP-PROJECT-ID/topics/TOPIC-NAME の形式を取ります。 なし。 はい、できます。
credentials これは、Apigee Edge コンソールで入力する場合、サービス アカウント キー ファイルの内容です。Management API 経由で送信される場合は、サービス アカウント キー ファイルから生成された、Base64 エンコードの値です。 なし。 はい、できます。