Extensão do Google Cloud Storage

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Versão: 1.4.1

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

Este conteúdo oferece 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 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 ser usado, consulte os papéis do Cloud Storage. Para saber mais 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 da chave resultante ao adicionar e configurar a extensão com a referência de configuração.

Sobre o Cloud Storage

O Cloud Storage é um serviço para armazenamento de arquivos seguro, durável e escalonável. Se você estiver 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.

Exemplos

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

Listar arquivos

No exemplo abaixo, a ação listFiles da extensão recupera uma lista dos arquivos e os retorna 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 Attribution Message a seguir recupera o valor da 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 ExtensionHeadline a seguir usa a extensão do Google Cloud Storage para fazer o download de um arquivo de texto simples com conteúdo apenas 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 de atribuição de mensagens 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 ExtensionFrase a seguir usa essa extensão para gerar um URL de download do arquivo especificado no bucket do Cloud Storage. Ele transmite o nome do arquivo, junto com a data após a qual o URL deve expirar e não funcionar mais.

<?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 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 para 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 um 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 deve 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 código a seguir ao configurar e implantar a extensão para uso em proxies de API. Para saber como 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ão

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