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:
Faça upload de objetos no bucket.
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).
Use o Console do GCP para gerar uma chave para a conta de serviço.
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. |