Fazer upload de dados
Depois de organizar seu armazenamento em buckets, é hora de adicionar alguns objetos fazendo upload de dados.
Dependendo de como você deseja usar seu armazenamento, há maneiras diferentes de obter dados no sistema. Um cientista de dados tem alguns arquivos grandes que são usados para análise de dados, um administrador de sistemas precisa manter os backups de banco de dados sincronizados com os arquivos locais e um desenvolvedor está gravando software que precisa ler e gravar milhões de arquivos. Cada um desses cenários é mais bem atendido por métodos diferentes de ingestão de dados.
Algumas aplicações podem querer restringir um usuário ou um ID de serviço apenas ao envio de dados, sem qualquer acesso à leitura de dados em um bucket. Isso é possível por meio do Object Writer função do IAM.
Usando o console
Geralmente, usar o console baseado na web não é a maneira mais comum de usar o Object Storage. Os objetos são limitados a 200 MB e o nome do arquivo e a chave são idênticos. Múltiplos objetos podem ser transferidos por upload ao mesmo tempo e, se o navegador permitir múltiplos encadeamentos, cada objeto será transferido por upload usando múltiplas partes em paralelo. O suporte para tamanhos de objetos maiores e desempenho melhorado (dependendo de fatores de rede) é fornecido pelo Aspera high-speed transfer.
Usando uma ferramenta compatível
Alguns usuários desejam usar um utilitário independente para interagir com seu armazenamento. Como a API do Cloud Object Storage suporta o conjunto mais comum de operações da API S3, muitas ferramentas compatíveis com S3 também podem se conectar ao Object Storage usando as credenciais HMAC.
Alguns exemplos incluem exploradores de arquivos como Cyberduck ou Transmit, utilitários de backup como Cloudberry e Duplicati, utilitários de linha de comandos como s3cmd ou Minio Client e muitos outros. Você também pode pesquisar no Catálogo IBM Cloud os serviços de terceiros que permitem que você mova dados para Cloud Object Storage, por exemplo, o Lyve Data Transfer Services.
Usando a API
A maioria dos aplicativos programáticos do Object Storage usa um SDK (como Java, node.js ou Python) ou a API do Cloud Object Storage. Geralmente, os objetos são transferidos por upload em múltiplas partes, com o tamanho da parte e o número de partes configurados por uma classe do Transfer Manager.
Solicitações condicionais
Ao fazer uma solicitação para ler ou gravar dados, é possível configurar condições nessa solicitação para evitar operações desnecessárias.. Isso é feito por meio do uso dos seguintes cabeçalhos pré-condicionais do tipo “ HTTP ”: If-Match,
If-None-Match, If-Modified-Since e If-Unmodified-Since.
Em geral, é preferível usar If-Match , pois a granularidade do valor Last-Modified é apenas em segundos e pode não ser suficiente para evitar condições de corrida em algumas aplicações.
Usando o If-Match
Em uma solicitação PUT, HEAD ou GET de um objeto, o cabeçalho If-Match verifica se um Etag fornecido (o hash MD5
do conteúdo do objeto) corresponde ao valor Etag fornecido. Se esse valor corresponder, a operação prossegue. Se a correspondência falhar, o sistema retorna um erro “ 412 Precondition Failed ”.
If-Match é mais frequentemente usado com métodos de mudança de estado (por exemplo, POST, PUT, DELETE) para evitar sobrescrições acidentais quando vários agentes do usuário podem estar agindo em paralelo no mesmo recurso (ou seja, para evitar o problema de "atualização perdida").
Usando o If-None-Match
Em uma solicitação PUT, HEAD ou GET de um objeto, o cabeçalho If-None-Match verifica se um Etag fornecido (o hash
MD5 do conteúdo do objeto) corresponde ao valor Etag fornecido. Se esse valor não corresponder, a operação prossegue. Se a correspondência for bem-sucedida, o sistema retorna um erro “ 412 Precondition Failed ” em uma solicitação PUT e um erro “ 304 Not Modified ” em uma solicitação GET ou HEAD.
If-None-Match é usado principalmente em solicitações GET condicionais para ativar atualizações eficientes de informações armazenadas em cache com uma quantia mínima de sobrecarga de transação Quando um cliente deseja atualizar uma ou mais respostas armazenadas que possuem tags de entidade, o cliente DEVE gerar um campo de cabeçalho If-None-Match contendo uma lista dessas tags de entidade ao fazer uma solicitação GET; isso permite que os servidores destinatários enviem uma resposta 304 (Não Modificado) para indicar quando uma dessas respostas armazenadas corresponde à representação selecionada..
Usando o If-Modified-Since
Em uma solicitação HEAD ou GET de um objeto, o cabeçalho If-Modified-Since verifica se o valor de Last-Modified do objeto (por exemplo, Sat, 14 March 2020 19:43:31 GMT)
é mais recente do que um valor fornecido. Se o objeto tiver sido modificado, a operação prossegue. Se o objeto não tiver sido modificado, o sistema retorna um 304 Not Modified``.
If-Modified-Since é geralmente usado para dois propósitos distintos: 1) para permitir atualizações eficientes de uma representação em cache que não tem uma entidade-tag e 2) para limitar o escopo de uma passagem da web para recursos que foram alterados recentemente.
Usando o If-Unmodified-Since
Em uma solicitação PUT, HEAD ou GET de um objeto, o cabeçalho If-Unmodified-Since verifica se o valor Last-Modified do objeto (por exemplo, Sat, 14 March 2020 19:43:31 GMT) é igual ou anterior a um valor fornecido. Se o objeto não tiver sido modificado, a operação prossegue. Se o valor de Last-Modified for mais
recente, o sistema retorna um erro 412 Precondition Failed em uma solicitação PUT e um erro 304 Not Modified em uma solicitação GET ou HEAD.
If-Unmodified-Since é mais frequentemente usado com métodos de mudança de estado (por exemplo, POST, PUT, DELETE) para evitar sobrescrições acidentais quando vários agentes do usuário podem estar agindo em paralelo em um recurso que não fornece tags de entidade com suas representações (ou seja, para evitar o problema de "atualização perdida"). Ele também pode ser usado com métodos seguros para interromper uma solicitação se a representação selecionada não corresponder a uma já armazenada (ou parcialmente armazenada) de uma solicitação anterior.
Pesquisar e filtrar objetos
Use o console do Object Storage para pesquisar e filtrar objetos por nome, tamanho, data ou extensão. Para obter mais detalhes, consulte “Pesquisar e filtrar objetos na interface do usuário ”.