Расширение Google Cloud Storage

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

Версия: 2.0.2

Просматривать, скачивать и создавать подписанные URL для файлов в сегменте Cloud Storage.

В нем приведена информация о том, как настроить и использовать это расширение. Прежде чем использовать это расширение в прокси-сервере API, необходимо:

  1. Создайте сегмент Cloud Storage.

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

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

  4. Создайте ключ для сервисного аккаунта в консоли Google Cloud.

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

О Cloud Storage

Cloud Storage – это сервис для безопасного, надежного и масштабируемого хранения файлов. Если вы только начинаете работать с 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"]

Следующее правило Assign Message извлекает значение ответа из правила 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."}

Следующая политика Assign Message извлекает значение, возвращенное расширением, и копирует его в полезную нагрузку ответа.

<?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>

Действия

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 Название объекта Cloud Storage, для которого нужно создать подписанный URL. Строка Нет. Да.
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>

Ответ

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, с которой должно взаимодействовать это расширение. Нет. Да.