Extensão do Google Cloud Storage

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Versão: 1.2.0

Liste, faça o download e gere URLs assinados para arquivos em um bucket do Cloud Storage.

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

  1. Crie um bucket do Cloud Storage.

  2. Faça o upload de objetos no bucket.

  3. Conceda permissão à conta de serviço do GCP que representa sua extensão do Google Cloud Storage para acessar o bucket. Para mais informações sobre o papel a ser usado, consulte Papéis do Cloud Storage. Para saber mais sobre permissões no Cloud Storage, consulte Como usar 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 da 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 ponto de partida.

Amostras

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

Listar arquivos

No exemplo a seguir, a ação listFiles da extensão recupera uma lista dos arquivos e os retorna em uma matriz. A ação listFiles não tem 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 de resposta da política Extension callout 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 Extension callout a seguir usa a extensão do Google Cloud Storage para fazer o download de um arquivo de texto simples com um conteúdo simplesmente 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 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.file.retrieved}</Payload>
    </Set>
</AssignMessage>

Gerar um URL assinado

A política ExtensionCall usa essa extensão para gerar um URL de download do arquivo especificado do bucket do Cloud Storage. Ele passa o nome do arquivo, junto com a data após a qual o URL deve expirar e deixar de 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 mostrado a seguir.

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

Baixar o Arquivo

Faz o download do arquivo especificado.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
fileName O arquivo que será transferido. 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 o qual 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 o seguinte ao configurar e implantar esta extensão para uso em proxies de API. Para ver as etapas para configurar uma extensão usando o console da Apigee, consulte Como 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ões

Propriedade Descrição Padrão Obrigatório
bucketName O bucket do GCS com o qual esta extensão deve interagir. Nenhum. Sim.