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 a função IAM roles/connectors.admin ao usuário que está 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 conferir 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 ter mais de 49 caracteres.
    4. Como opção, insira uma Descrição para a instância de conexão.
    5. Como opção, ative o Cloud Logging e selecione um nível de registro. Por padrão, o nível de registro é definido como Error.
    6. Conta de serviço: selecione uma conta de serviço que tenha os papéis necessários.
    7. 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.

    8. ID do projeto: insira o ID do projeto do Google Cloud em que os dados estão armazenados.
    9. Outra opção é clicar em + ADICIONAR MARCADOR para adicionar um rótulo à conexão na forma de um par de chave-valor.
    10. 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 oferecer suporte a nenhuma das operações de entidade, essas operações sem suporte não serão listadas na lista 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 um 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, por , e limita as transações além 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 Não 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 de logfile.txt presente em folderA de bucket_01, o caminho do objeto precisa ser folderA/logfile.txt.

HasBytes Não 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 Não 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 Não 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 Não String O caminho para a pasta em que o objeto será enviado.
ContentBytes Não String Conteúdo para upload na forma de bytes (string codificada em Base64).
HasBytes Não 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 Não 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 Não 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 Não 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 Não 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 Não 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 Não 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 Não Dobro Deixa a operação de exclusão condicional se a metageração atual do objeto corresponder ao valor especificado.
IfMetagenerationNotMatch Não 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 Não String O método que a solicitação assinada usará. O valor padrão é GET.
Local Não String Local do bucket especificado. O valor padrão é auto.
ActiveDateTime Não String O dateTime em que o SignedURL ficará ativo. Se ele não for especificado, será usado o dateTime atual.
Consulta Não 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 Não 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 Não String A chave de acesso HMAC. Para mais informações, consulte Chaves HMAC.
HmacSecret Não 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 para 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 Connectors, 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"
}

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

Se o arquivo tiver caracteres especiais, como ä, Ø, Thành, faça o seguinte:

  1. Codificar em UTF-8:codifique o arquivo em UTF-8 para lidar com os caracteres especiais.
  2. Converter para Base64: converta o arquivo para Base64 para garantir que o texto original permaneça intacto.
  3. Decodificar a string Base64: decodifique o arquivo para uma string Base64 para recuperar o valor original com os caracteres especiais.
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 Connectors, clique em connectorInputPayload e insira 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 atual 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 Connectors, clique em connectorInputPayload e insira 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 Connectors, clique em connectorInputPayload e insira 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 Connectors, clique em connectorInputPayload e insira 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 Connectors, clique em connectorInputPayload e insira 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 a folderB/logfile.txt pol 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 Connectors, clique em connectorInputPayload e insira o seguinte no campo Default Value:
    {
    "BucketSource": "bucket_01",
    "ObjectSource": "logfile.txt"
    }
  4. Este exemplo exclui o arquivo logfile.txt da 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 Connectors, clique em connectorInputPayload e insira 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 Terraform recurso 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 criação de conexão, 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 de criar a conexão, ela fica disponível na integração da Apigee e na integração do aplicativo. Você pode usar a conexão em uma integração pela 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" na integração de aplicativos, 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