Cloud Storage

O conector do Google Cloud Storage permite que você se conecte a um Google Cloud Storage e realize operações de transferência de arquivos.

Antes de começar

Antes de usar o conector do Cloud Storage, realize estas tarefas:

  • No seu projeto do Google Cloud, faça o seguinte:
    • Conceda o papel do IAM roles/connectors.admin ao usuário que estiver configurando o conector.
    • Conceda os seguintes papéis de IAM à conta de serviço que você quer usar para o conector:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
      • roles/storage.admin

      Uma conta de serviço é um tipo especial de Conta do Google destinada a representar um usuário não humano que precisa ser autenticado e autorizado a acessar dados nas APIs do Google. Se você não tiver uma conta de serviço, será necessário criar uma. Para mais informações, consulte Como criar uma conta de serviço.

    • Ative os seguintes serviços:
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Para entender como ativar os serviços, consulte Como ativar serviços.

    Se esses serviços ou permissões não tiverem sido ativados no seu projeto, você precisará ativá-los ao configurar o conector.

Configurar o conector

Para configurar o conector, crie uma conexão com a fonte de dados (sistema de back-end). Uma conexão é específica a uma fonte de dados. Isso significa que, se você tiver muitas fontes de dados, precisará criar uma conexão separada para cada uma. Para criar uma conexão, siga estas etapas:

  1. No console do Cloud, acesse a página Integration Connectors > Conexões e selecione ou crie um projeto do Google Cloud.

    Acessar a página "Conexões"

  2. Clique em + CRIAR NOVO para abrir a página Criar conexão.
  3. Na seção Local, escolha o local da conexão.
    1. Região: selecione um local na lista suspensa.

      Para acessar a lista de todas as regiões com suporte, consulte Locais.

    2. Clique em PRÓXIMA.
  4. Na seção Detalhes da conexão, faça o seguinte:
    1. Conector: selecione Cloud Storage na lista suspensa de conectores disponíveis.
    2. Versão do conector: selecione a versão do conector na lista suspensa de versões disponíveis.
    3. No campo Nome da conexão, insira um nome para a instância de conexão

      Os nomes de conexão precisam atender aos seguintes critérios:

      • Os nomes de conexões podem usar letras, números ou hifens.
      • As letras precisam ser minúsculas.
      • Os nomes das conexões precisam começar com uma letra e terminar com uma letra ou um número.
      • Os nomes das conexões não podem exceder 63 caracteres.
    4. Como opção, insira uma Descrição para a instância de conexão.
    5. Conta de serviço: selecione uma conta de serviço que tenha os papéis necessários.
    6. Opcionalmente, defina as Configurações do nó de conexão:

      • Número mínimo de nós: digite o número mínimo de nós de conexão.
      • Número máximo de nós: digite o número máximo de nós de conexão.

      Um nó é uma unidade (ou réplica) de uma conexão que processa transações. Mais nós são necessários para processar mais transações para uma conexão e, por outro lado, menos nós são necessários para processar menos transações. Para entender como os nós afetam os preços do conector, consulte Preços dos nós de conexão. Se você não inserir qualquer valor, por padrão, os nós mínimos serão definidos como 2 (para melhor disponibilidade) e os nós máximos serão definidos como 50.

    7. ID do projeto: insira o ID do projeto do Google Cloud em que os dados estão armazenados.
    8. Outra opção é clicar em + ADICIONAR MARCADOR para adicionar um rótulo à conexão na forma de um par de chave-valor.
    9. Clique em PRÓXIMA.
  5. Revisão: revise sua conexão.
  6. Clique em Criar.

Entidades, operações e ações

Todos os Integration Connectors fornecem uma camada de abstração para os objetos do aplicativo conectado. Só é possível acessar os objetos de um aplicativo por esta abstração. A abstração é exposta a você como entidades, operações e ações.

  • Entidade: uma entidade pode ser considerada um objeto ou um conjunto de propriedades no aplicativo ou serviço conectado. A definição de uma entidade difere de um conector para outro. Por exemplo, em um conector de banco de dados, as tabelas são as entidades, em um conector de servidor de arquivos, as pastas são as entidades e, em um conector de sistema de mensagens, as filas são as entidades.

    No entanto, é possível que um conector não aceite ou não tenha entidades. Nesse caso, a lista Entities estará vazia.

  • Operação: uma operação é a atividade que pode ser realizada em uma entidade. É possível executar qualquer uma das seguintes operações em uma entidade:

    Selecionar uma entidade na lista disponível gera uma lista de operações disponíveis para ela. Para uma descrição detalhada das operações, consulte as operações de entidades da tarefa "Conectores". No entanto, se um conector não for compatível com nenhuma das operações da entidade, essas operações sem suporte não serão incluídas na lista de Operations.

  • Ação: uma ação é uma função de primeira classe disponibilizada para a integração por meio da interface do conector. Uma ação permite fazer alterações em uma ou mais entidades e varia de um conector para outro. Normalmente, uma ação tem alguns parâmetros de entrada e de saída. No entanto, é possível que o conector não ofereça suporte a nenhuma ação. Nesse caso, a lista Actions estará vazia.

Limitações do sistema

O conector do Google Cloud Storage pode processar no máximo 10 transações por segundo e por e limita as transações acima desse limite. Por padrão, o Integration Connectors aloca dois nós para melhor disponibilidade para uma conexão.

Para informações sobre os limites aplicáveis aos Integration Connectors, consulte Limites.

Ações

A conexão do Google Cloud Storage é compatível com as seguintes ações:

Ação DownloadObject

A tabela a seguir descreve os parâmetros de entrada da ação DownloadObject.

Nome do parâmetro Obrigatório Tipo de dados Descrição
Bucket Sim String Nome do bucket em que o objeto para download está presente.
ObjectFilePath No String Nome do objeto que deve ser transferido por download. Se não for especificado, será feito o download de todos os objetos do bucket especificado.

Se o objeto para download estiver presente em uma pasta filha de um bucket, será necessário fornecer o caminho completo desse objeto. Por exemplo, para fazer o download do logfile.txt que está presente no folderA do bucket_01, o caminho do objeto precisa ser folderA/logfile.txt.

HasBytes No Booleano Define se o download do conteúdo será feito em bytes. Os valores válidos são true ou false. Se definido como true, o conteúdo será transferido por download como uma string codificada em Base64.

Por padrão, o campo HasBytes está definido como false.

UpdatedEndDate No Data O período final para fazer o download de objetos. Se não for especificado, o download de objetos no UpdatedStartDate especificado será feito até o dia atual.
UpdatedStartDate No Data O início do período para fazer o download de objetos. Se não for especificado, o download dos objetos será feito desde o início até UpdatedEndDate.

Veja como configurar a ação DownloadObject em Exemplos.

Ação UploadObject

A tabela a seguir descreve os parâmetros de entrada da ação UploadObject.

Nome do parâmetro Obrigatório Tipo de dados Descrição
Bucket Sim String Nome do bucket em que o objeto será enviado por upload.
FolderPath No String O caminho para a pasta em que o objeto será enviado.
ContentBytes No String Conteúdo para upload na forma de bytes (string codificada em Base64).
HasBytes No Booleano Define se o upload de conteúdo será feito como bytes. Valores válidos, true ou false. Se definido como true, o conteúdo que você quer enviar precisa ser uma string codificada em Base64.

Por padrão, o campo HasBytes está definido como false.

Conteúdo Sim String O conteúdo a ser enviado.
ObjectName No String Nome do objeto que será enviado.

Veja como configurar a ação UploadObject em Exemplos.

Ação CopyObject

A tabela a seguir descreve os parâmetros de entrada da ação CopyObject.

Nome do parâmetro Obrigatório Tipo de dados Descrição
BucketSource Sim String Nome do bucket do qual você quer copiar o objeto.
ObjectSource Sim String O caminho completo da pasta em que você quer copiar o objeto.
BucketDestination Sim String Nome do bucket para o qual você quer copiar o objeto.
ObjectDestination No String Caminho completo do destino, incluindo o nome do objeto. Se você não especificar um nome de objeto, o nome do objeto de origem será mantido.

Veja como configurar a ação CopyObject em Exemplos.

Ação MoveObject

A tabela a seguir descreve os parâmetros de entrada da ação MoveObject.

Nome do parâmetro Obrigatório Tipo de dados Descrição
BucketSource Sim String Nome do bucket do qual você quer mover o objeto.
ObjectSource Sim String Caminho completo da pasta em que você quer mover o objeto.
BucketDestination Sim String Nome do bucket para o qual você quer mover o objeto.
ObjectDestination No String Caminho completo do destino, incluindo o nome do objeto. Se você não especificar um nome de objeto, o nome do objeto de origem será mantido.

Ação DeleteObject

A tabela a seguir descreve os parâmetros de entrada da ação DeleteObject.

Nome do parâmetro Obrigatório Tipo de dados Descrição
BucketSource Sim String Nome do bucket em que o objeto a ser excluído está presente.
ObjectSource Sim String Nome do objeto que você quer excluir.
Geração No Dobro Versão do objeto a ser excluído. Se estiver presente, vai excluir permanentemente a revisão especificada do objeto e não a versão mais recente, que é o comportamento padrão.
IfGenerationMatch No Dobro Deixa a operação de exclusão condicional se a geração atual do objeto corresponder ao valor fornecido. Definir esse valor como 0 faz com que a operação seja bem-sucedida somente se não houver versões ativas do objeto.
IfGenerationNotMatch No Dobro Deixa a operação de exclusão condicional se a geração atual do objeto não corresponder ao valor fornecido. Se não houver um objeto ativo, a pré-condição vai falhar. Definir esse valor como 0 só tornará a operação bem-sucedida se houver uma versão ativa do objeto.
IfMetagenerationMatch No Dobro Deixa a operação de exclusão condicional se a metageração atual do objeto corresponder ao valor especificado.
IfMetagenerationNotMatch No Dobro Torna a operação de exclusão condicional se a metageração atual do objeto não corresponder ao valor especificado.

Ação SignURL

A tabela a seguir descreve os parâmetros de entrada da ação SignURL, que cria um URL assinado para o objeto especificado.

Nome do parâmetro Obrigatório Tipo de dados Descrição
Bucket Sim String O nome do bucket onde o objeto reside.
Objeto Sim String O nome do objeto para o qual gerar o SignedURL.
RequestMethod No String O método que a solicitação assinada usará. O valor padrão é GET.
Local No String Local do bucket especificado. O valor padrão é auto.
ActiveDateTime No String O dateTime em que o SignedURL ficará ativo. Se ele não for especificado, será usado o dateTime atual.
Consulta No String A string de consulta que deve ser incluída ao usar o SignedURL. Se não for especificado, nenhuma string de consulta será usada.
CustomHeaders No String Uma lista separada por vírgulas de name=value dos cabeçalhos a serem usados com o SignedURL, se não especificado, cabeçalhos não personalizados serão usados.
ExpiresIn Sim String O prazo de validade do SignedURL deve estar no formato: 1d2h3m4s. O valor máximo é 7d0h0m0s.
HmacAccessKey No String A chave de acesso HMAC. Para mais informações, consulte Chaves HMAC.
HmacSecret No String O secret HMAC.

Examples

Os exemplos nesta seção descrevem as seguintes operações:

  • Listar todos os objetos
  • Listar todos os objetos de um bucket
  • Listar todos os buckets
  • Fazer o download de um objeto
  • Fazer o download de um objeto binário
  • Fazer upload de um objeto binário em um bucket
  • fazer upload de um objeto em um bucket;
  • Fazer upload de um objeto em uma pasta
  • Copiar um objeto
  • Mover um objeto
  • Excluir um objeto
  • Criar um URL assinado para um objeto

A tabela a seguir lista os cenários de exemplo e a configuração correspondente na tarefa Connectors:

Tarefa Configuração
Listar todos os objetos
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Selecione a entidade Objects e, em seguida, a operação List.
  3. Clique em Concluído.

Isso lista todos os objetos em todos os buckets. Os objetos são listados no parâmetro de resposta connectorOutputPayload da tarefa Connectors.

Listar todos os objetos de um bucket
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Selecione a entidade Objects e, em seguida, a operação List.
  3. Clique em Concluído.
  4. Defina filterClause como o nome do bucket do qual você quer listar os objetos. Para definir a cláusula, na seção Task Input da tarefa Connectors, clique em filterClause e insira Bucket = 'BUCKET_NAME' no campoValor padrão. Exemplo: Bucket = 'bucket_01'.
Listar todos os buckets
  1. Na caixa de diálogo Configure connector task, clique em Entities.
  2. Selecione a entidade Buckets e, em seguida, a operação List.
  3. Clique em Concluído.
Fazer o download de um objeto
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação DownloadObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e insira um valor semelhante ao seguinte no campo Default Value:
    {
      "Bucket": "bucket-test-01",
      "ObjectFilePath": "logfile.txt"
    }
  4. Este exemplo faz o download do arquivo logfile.txt. O conteúdo do arquivo salvo está disponível no formato JSON no parâmetro de resposta connectorOutputPayload da tarefa Connectors.

Fazer o download de um objeto binário

As etapas para fazer o download de um objeto binário são as mesmas do download de um objeto regular conforme descrito anteriormente. Além disso, é necessário especificar HasBytes como true no campo connectorInputPayload. Isso fará o download do objeto como uma string codificada em Base64. Exemplo de valor para o campo connectorInputPayload:

{
"Bucket": "bucket-test-01",
"ObjectFilePath": "image01.png",
"HasBytes" : true
}

Se o download for bem-sucedido, a saída no campo connectorOutputPayload será semelhante a esta:

{
"Success": "true",
"ContentBytes": "SGVsbG8gdGVzdCE\u003d"
}
Fazer upload de um objeto binário em um bucket
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação UploadObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "ContentBytes": "SGVsbG8gVGVzdCE=",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01",
    "HasBytes": true
    }
  4. Este exemplo cria o arquivo test-file-01 no bucket bucket-test-01. Se houver um arquivo com o nome test-file-01, ele será substituído.

fazer upload de um objeto em um bucket;
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação UploadObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. Este exemplo cria o arquivo test-file-01.txt com o conteúdo Hello test! no bucket bucket-test-01. Se houver um arquivo com o nome test-file-01.txt, ele será substituído.

Fazer upload de um objeto em uma pasta
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação UploadObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "Content": "Hello test!",
    "Bucket": "bucket-test-01",
    "FolderPath": "folderA",
    "ObjectName": "test-file-01.txt"
    }
  4. Este exemplo cria o arquivo test-file-01.txt com o conteúdo Hello test! na pasta folderA do bucket-test-01. Se a pasta tiver um arquivo atual com o nome test-file-01.txt, ele será substituído.

Copiar um objeto
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação CopyObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. Este exemplo copia o arquivo folderA/logfile.txt de bucket_01 para folderB/logfile.txt em bucket_02.

Se a cópia for bem-sucedida, a saída no campo connectorOutputPayload será semelhante a esta:

{
"Success": "true"
}
Mover um objeto
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação MoveObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "folderA/logfile.txt",
    "BucketDestination": "bucket_02",
    "ObjectDestination": "folderB/logfile.txt"
    }
  4. Este exemplo move o arquivo folderA/logfile.txt de bucket_01 para folderB/logfile.txt em bucket_02.

Se a cópia for bem-sucedida, a saída no campo connectorOutputPayload será semelhante a esta:

{
"Success": "true"
}
Excluir um objeto
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação DeleteObject e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "logfile.txt"
    }
  4. Este exemplo exclui o arquivo logfile.txt de bucket_01.

Se a cópia for bem-sucedida, a saída no campo connectorOutputPayload será semelhante a esta:

{
"Success": "true"
}
Criar um URL assinado para um objeto
  1. Na caixa de diálogo Configure connector task, clique em Actions.
  2. Selecione a ação SignURL e clique em Concluído.
  3. Na seção Entrada da tarefa da tarefa Conectores, clique em connectorInputPayload e digite o seguinte no campo Default Value:
    {
    "Bucket": "bucket-test-01",
    "ObjectName" : "test-file-01.txt"
    }
  4. Este exemplo cria um URL assinado para o arquivo test-file-01.txt, que está no bucket bucket-test-01. Se a ação for bem-sucedida, você receberá o URL assinado na resposta semelhante a este:

    {
    "Success": "true",
    "SignURL": "https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
    GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount
    .com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
    1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
    9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
    6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
    c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
    0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
    66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
    a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
    2ea7abedc098d2eb14a7"
    }

Considerações

  • Um objeto para download pode ter um tamanho máximo de 10 MB.
  • Não é possível fazer upload de vários arquivos usando a ação UploadObject. Só é possível fazer upload de um arquivo.

Usar o Terraform para criar conexões

É possível usar o recurso do Terraform para criar uma nova conexão.

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Para conferir um exemplo de modelo do Terraform para a criação de conexões, consulte Exemplo de modelo.

Ao criar essa conexão usando o Terraform, você precisa definir as seguintes variáveis no arquivo de configuração do Terraform:

Nome do parâmetro Tipo de dados Obrigatório Descrição
project_id STRING Verdadeiro O ID do projeto do Google Cloud em que os dados residem.

Usar a conexão do Cloud Storage em uma integração

Depois que você cria a conexão, ela fica disponível na Apigee Integration e no Application Integration. É possível usar a conexão em uma integração por meio da tarefa "Conectores".

  • Para entender como criar e usar a tarefa "Conectores" na integração da Apigee, consulte a Tarefa "Conectores".
  • Para entender como criar e usar a tarefa Conectores no Application Integration, consulte Tarefa Conectores.

Receber ajuda da comunidade do Google Cloud

Poste suas dúvidas e converse sobre esse conector na comunidade do Google Cloud em Fóruns do Cloud.

A seguir