Google Cloud Storage 拡張機能

Cloud Storage バケット内のファイルの一覧表示とダウンロード、および署名付き URL の生成が可能です。

ここでは、この拡張機能の構成および使用方法に関するリファレンスを提供します。API プロキシからこの拡張機能を使用する前に、次の操作を行う必要があります。

  1. Cloud Storage バケットを作成します。

  2. バケットにオブジェクトをアップロードします。

  3. Google Cloud Storage 拡張機能を表す GCP サービス アカウントに、バケットにアクセスする権限を付与します。使用する役割の詳細については、Cloud Storage の役割をご覧ください。Cloud Storage の権限の詳細については、Identity and Access Management(IAM)の権限の使用をご覧ください。

  4. サービス アカウントのキーを生成します。

  5. 構成リファレンスを使用して拡張機能を追加および構成する場合は、生成されるキーの JSON ファイルの内容を使用します。

Cloud Storage について

Cloud Storage は、安全で耐久性がありスケーラブルなファイル ストレージ用のサービスです。Cloud Storage をこれからお使いになるという方には、Cloud Storage ドキュメントのクイックスタートを最初にご覧になることをおすすめします。

サンプル

次の例は、ExtensionCallout ポリシーを使用して Cloud Storage 拡張機能アクションのサポートを構成する方法を示しています。

ファイルの一覧表示

次の例では、拡張機能の listFiles アクションによってファイルの一覧が取得され、配列に返されます。listFiles アクションには、入力パラメータはありません。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-Storage-File-List">
        <DisplayName>Get Storage File List</DisplayName>
        <Connector>cloud-storage-extension-example</Connector>
        <Action>listFiles</Action>
        <Input><![CDATA[{}]]></Input>
        <Output>storage.filelist.retrieved</Output>
    </ConnectorCallout>
    

レスポンス値は次のようになります。

["example-text.txt","example-image.png"]
    

次のメッセージ割り当てポリシーは、上記の ExtensionCallout ポリシーからレスポンス値を取得してレスポンス ペイロードにコピーします。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-List">
        <DisplayName>Assign Storage File List</DisplayName>
        <AssignTo type="response" createNew="false"/>
        <Set>
            <Payload contentType="application/json">{storage.filelist.retrieved}</Payload>
        </Set>
    </AssignMessage>
    

ファイルのダウンロード

次の ExtensionCallout ポリシーは、Google Cloud Storage 拡張機能を使用して、その内容が単に「Some example text.」である単純なテキスト ファイルをダウンロードします。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Download-File">
        <DisplayName>Download File</DisplayName>
        <Connector>cloud-storage-extension-example</Connector>
        <Action>downloadFile</Action>
        <Input><![CDATA[{"fileName": "example-text.txt"}]]></Input>
        <Output>storage.file.retrieved</Output>
    </ConnectorCallout>
    

レスポンス値は次のようになります。

{"content":"Some example text."}
    

次のメッセージ割り当てポリシーは、拡張機能によって返された値を取得してレスポンス ペイロードにコピーします。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-List">
        <DisplayName>Assign Storage File List</DisplayName>
        <AssignTo type="response" createNew="false"/>
        <Set>
            <Payload contentType="application/json">{storage.file.retrieved}</Payload>
        </Set>
    </AssignMessage>
    

署名付き URL の生成

次の ExtensionCallout ポリシーは、この拡張機能を使用して、指定されたファイルを Cloud Storage バケットからダウンロードするための URL を生成します。URL の有効期限が切れて機能しなくなる日付とともに、ファイルの名前を渡します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-Signed-URL">
        <DisplayName>Get Signed URL</DisplayName>
        <Connector>cloud-storage-extension-example</Connector>
        <Action>generateSignedURL</Action>
        <Input><![CDATA[{
            "fileName" : "example-text.txt",
            "expiresOn" : "2018-08-05"
        }]]></Input>
        <Output>storage.url.retrieved</Output>
    </ConnectorCallout>
    

拡張機能の戻り値は次のようになります。

{"url":"https://storage.googleapis.com/storage-extension-example/example-text.txt?GoogleAccessId=extension-test%40my-test-33333.iam.gserviceaccount.com&Expires=1533427200&Signature=Y1cE1DCHesWeIZILRhdIuDR%2FhzZXZ%2BPeY3J1PUkRiosFYj41itHBWh2%2BTQgH9kI6E8s2mWrVDFU43YR7s8Tm9W5VgWRwh0nXSactQ0xKbkKbGZmCcWxgIscOezc1zc%2Bp7lnXSx1qd4wIlIKVH4KCd9WLx4qB1dLxGNxMKB32tA3dio5IiMXaHEA%2FR2fYc0Pjh45t8L5rilk5pekv7jfd3sfsgdfgfdglkj%2F7E%2FlJ%2B60RnetqV2IDqrc0sVEgSLTpgTbDGU%2Ft3EcitRUFOSdOb5czt7CiIwKAYSmDEFMSNHHiNTWjvLzq4IU%2BCa4Z5aKyvww%3D%3D"}
    

次のメッセージ割り当てポリシーは、拡張機能によって返された値を取得してレスポンス本文にコピーします。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Storage-File-URL">
        <DisplayName>Assign Storage File URL</DisplayName>
        <AssignTo type="response" createNew="false"/>
        <Set>
            <Payload contentType="application/json">{storage.url.retrieved}</Payload>
        </Set>
    </AssignMessage>
    

アクション

downloadFile

指定されたファイルをダウンロードします。

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
fileName ダウンロードするファイル。 文字列 なし。

構文

<Input><![CDATA[{"fileName" : "the-file-to-download"}]]></Input>
    

<Input><![CDATA[{"fileName" : "example-text.txt"}]]></Input>
    

レスポンス

ダウンロードしたファイルの内容を保持するオブジェクトを表す JSON 形式の値。次に例を示します。

{"content":"Some example text."}
    

listFiles

ダウンロード可能なファイルを一覧表示します。

リクエスト パラメータ

なし。

レスポンス

ファイル名の配列。次に例を示します。

["example-text.txt","example-image.png"]
    

generateSignedURL

バケット内の指定されたファイルの署名付き URL を作成します。この URL を使用してファイルをダウンロードできます。

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
fileName 署名付き URL を生成する Cloud Storage オブジェクトの名前。 文字列 なし。
expiresOn 署名付き URL が期限切れになる日付。 文字列 なし。 ×

構文

<Input><![CDATA[{
      "fileName" : "file-for-which-to-generate-url",
      "expiresOn" : "date-to-expire-url"
    }]]></Input>
    

<Input><![CDATA[{
      "fileName" : "example-text.txt",
      "expiresOn" : "2018-08-05"
    }]]></Input>
    

レスポンス

署名付き URL を生成したオブジェクトを表す JSON 形式の値。例:

{"url":"https://storage.googleapis.com/storage-extension-example/example-text.txt?GoogleAccessId=extension-test%40my-test-33333.iam.gserviceaccount.com&Expires=1533427200&Signature=Y1cE1DCHesWeIZILRhdIuDR%2FhzZXZ%2BPeY3J1PUkRiosFYj41itHBWh2%2BTQgH9kI6E8s2mWrVDFU43YR7s8Tm9W5VgWRwh0nXSactQ0xKbkKbGZmCcWxgIscOezc1zc%2Bp7lnXSx1qd4wIlIKVH4KCd9WLx4qB1dLxGNxMKB32tA3dio5IiMXaHEA%2FR2fYc0Pjh45t8L5rilk5pekv7jfd3sfsgdfgfdglkj%2F7E%2FlJ%2B60RnetqV2IDqrc0sVEgSLTpgTbDGU%2Ft3EcitRUFOSdOb5czt7CiIwKAYSmDEFMSNHHiNTWjvLzq4IU%2BCa4Z5aKyvww%3D%3D"}
    

構成リファレンス

API プロキシで使用するためにこの拡張機能を構成およびデプロイする場合は、次の項目を参照してください。Apigee コンソールで拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

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

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

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

プロパティ 説明 デフォルト 必須
bucketName この拡張機能で操作する GCS バケット。 なし。