Extensão do Google Cloud Storage

Você está visualizando a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Versão: 2.0.0

Listar, fazer o download e gerar URLs assinados para arquivos em um bucket do Cloud Storage.

Este conteúdo oferece uma referência para configurar e usar essa extensão. Antes de usar essa extensão em um proxy de API, você precisa:

  1. Crie um bucket do Cloud Storage.

  2. Faça upload de objetos no bucket.

  3. Conceda permissão para acessar o bucket à conta de serviço do GCP que representa sua extensão do Google Cloud Storage. Para saber mais sobre o papel a usar, consulte Papéis do Cloud Storage. Para mais informações sobre permissões no Cloud Storage, consulte Como usar as permissões do Identity and Access Management (IAM).

  4. Use o Console do GCP para gerar uma chave para a conta de serviço.

  5. Use o conteúdo do arquivo JSON de chave resultante ao adicionar e configurar a extensão usando a referência de configuração.

Sobre o Cloud Storage

O Cloud Storage é um serviço de armazenamento de arquivos seguro, durável e escalonável. Se você está começando a usar o Cloud Storage, o guia de início rápido na documentação do Cloud Storage é um bom lugar para começar.

Amostras

Os exemplos a seguir ilustram como configurar o suporte a ações de extensão do Cloud Storage usando a política ExtensionCallout.

Listar arquivos

No exemplo a seguir, a ação listFiles da extensão recupera uma lista dos arquivos, retornando-os em uma matriz. A ação listFiles não usa parâmetros de entrada.

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

O valor da resposta é semelhante a este:

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

A política "Atribuir mensagem" a seguir recupera o valor da resposta da política ExtensionCallout acima e o copia no payload de resposta.

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

Fazer o download de um arquivo

A política ExtensionCallout a seguir usa a extensão do Google Cloud Storage para fazer o download de um arquivo de texto simples com o conteúdo 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>

O valor da resposta é semelhante a este:

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

A política "Atribuir mensagem" a seguir recupera o valor retornado pela extensão e o copia para o payload de resposta.

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

Gerar um URL assinado

A política ExtensionCallout a seguir usa essa extensão para gerar um URL para fazer o download do arquivo especificado do bucket do Cloud Storage. Ele transmite o nome do arquivo e a data em que o URL vai expirar e não vai mais funcionar.

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

O valor de retorno da extensão é semelhante ao seguinte.

{"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"}

A política "Atribuir mensagem" a seguir recupera o valor retornado pela extensão e o copia para o corpo da resposta.

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

Ações

downloadFile

Faz o download do arquivo especificado.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
fileName O arquivo a ser transferido por download. String Nenhum. Sim.

Sintaxe

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

Exemplo

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

Resposta

JSON que representa um objeto com o conteúdo do arquivo transferido por download. Exemplo:

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

listFiles

Lista os arquivos disponíveis para download.

Parâmetros de solicitação

Nenhum.

Resposta

Uma matriz de nomes de arquivos. Exemplo:

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

generateSignedURL

Cria um URL assinado para o arquivo especificado no bucket. Esse URL pode ser usado para fazer o download do arquivo.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
fileName Nome do objeto do Cloud Storage para gerar um URL assinado. String Nenhum. Sim.
expiresOn Data em que o URL assinado vai expirar. String Nenhum. Não.

Sintaxe

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

Exemplo

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

Resposta

JSON que representa um objeto com o URL assinado. Exemplo:

{"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"}

Referência de configuração

Use as informações a seguir ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console da Apigee, consulte Adicionar e configurar uma extensão.

Propriedades de extensão comuns

As propriedades a seguir estão presentes para cada extensão.

Propriedade Descrição Padrão Obrigatório
name Nome que será dado a esta configuração da extensão. Nenhum Sim
packageName Nome do pacote de extensão fornecido pelo Apigee Edge. Nenhum Sim
version Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. Nenhum Sim
configuration Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. Nenhum Sim

Propriedades deste pacote de extensão

Propriedade Descrição Padrão Obrigatório
bucketName O bucket do GCS com que essa extensão precisa interagir. Nenhum. Sim.