Google Cloud Storage 扩展程序

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

版本:1.4.1

列出、下载 Cloud Storage 存储分区中的文件并为其生成签名网址。

本文内容提供了有关配置和使用此扩展程序的参考信息。通过 API 代理使用此扩展程序之前,您必须完成以下操作:

  1. 创建 Cloud Storage 存储桶

  2. 将对象上传到您的存储分区。

  3. 向代表您的 Google Cloud Storage 扩展程序的 GCP 服务账号授予访问该存储分区的权限。如需详细了解要使用的角色,请参阅 Cloud Storage 角色。如需详细了解 Cloud Storage 中的权限,请参阅使用 Identity and Access Management (IAM) 权限

  4. 使用 GCP Console 为服务帐号生成密钥

  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="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>

生成签名网址

以下 ExtensionCallout 政策使用此扩展程序生成网址,用于从 Cloud Storage 存储分区下载指定文件。它会传递文件名称,以及网址过期和失效的日期。

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

Action

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

为存储分区中的指定文件创建签名网址。此网址可用于下载文件。

请求参数

参数 说明 类型 默认 必需
fileName 要为其生成签名网址的 Cloud Storage 对象的名称。 字符串 无。 有。
expiresOn 签名网址应过期的日期。 字符串 无。 没有。

语法

<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":"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 存储分区。 无。 有。