Расширение облачного хранилища Google

Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X.
info

Версия: 2.0.1

Составляйте список, загружайте и генерируйте подписанные URL-адреса для файлов в облачном хранилище .

Этот контент предоставляет справочную информацию по настройке и использованию этого расширения. Перед использованием этого расширения из API-прокси необходимо:

  1. Создайте контейнер облачного хранилища .

  2. Загрузите объекты в свою корзину.

  3. Предоставьте разрешение на доступ к контейнеру учетной записи службы GCP, которая представляет ваше расширение Google Cloud Storage. Подробнее о роли для использования см. в разделе Роли Cloud Storage . Подробнее о разрешениях в Cloud Storage см. в разделе Использование разрешений Identity and Access Management (IAM) .

  4. Используйте консоль GCP для генерации ключа для учетной записи службы .

  5. Используйте содержимое полученного файла JSON-ключа при добавлении и настройке расширения с помощью справочника по конфигурации .

Об облачном хранилище

Cloud Storage — это сервис для безопасного, надежного и масштабируемого хранения файлов. Если вы только начинаете работу с Cloud Storage, быстрый старт в документации Cloud Storage — хорошее место для начала.

Образцы

В следующих примерах показано, как настроить поддержку действий расширения облачного хранилища с помощью политики ExtensionCallout .

Список файлов

В следующем примере действие listFiles расширения извлекает список файлов, возвращая их в массиве. Действие listFiles не принимает входных параметров.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" 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 parsed="false">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="false" 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 использует это расширение для генерации URL для загрузки указанного файла из контейнера Cloud Storage. Она передает имя файла вместе с датой, после которой URL должен истечь и перестать функционировать.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" 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>

Действия

скачатьФайл

Загружает указанный файл.

Параметры запроса

Параметр Описание Тип По умолчанию Необходимый
имя файла Файл для скачивания. Нить Никто. Да.

Синтаксис

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

Пример

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

Ответ

JSON, представляющий объект с содержимым загруженного файла. Например:

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

списокФайлы

Список файлов, доступных для загрузки.

Параметры запроса

Никто.

Ответ

Массив имен файлов. Например:

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

сгенерироватьSignedURL

Создает подписанный URL для указанного файла в контейнере. Этот URL может быть использован для загрузки файла.

Параметры запроса

Параметр Описание Тип По умолчанию Необходимый
имя файла Имя объекта облачного хранилища, для которого необходимо сгенерировать подписанный URL. Нить Никто. Да.
истекаетВкл. Дата истечения срока действия подписанного 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>

Ответ

JSON, представляющий объект с подписанным URL. Например:

{"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 см. в разделе Добавление и настройка расширения .

Общие свойства расширения

Следующие свойства присутствуют для каждого расширения.

Свойство Описание По умолчанию Необходимый
name Имя, которое вы даете этой конфигурации расширения. Никто Да
packageName Имя пакета расширения, предоставленное Apigee Edge. Никто Да
version Номер версии пакета расширения, из которого вы настраиваете расширение. Никто Да
configuration Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да

Свойства этого пакета расширения

Свойство Описание По умолчанию Необходимый
bucketName Контейнер GCS, с которым должно взаимодействовать это расширение. Никто. Да.