Edge Storage

O Edge Storage da Azion é um serviço de armazenamento escalável e seguro projetado para integrar o armazenamento de objetos com a Plataforma de Edge da Azion usando o padrão S3 para operações de objetos.

O Edge Storage permite que você crie buckets, que podem ser usados como origens para edge applications ou como diretórios para upload de objetos em tempo real. Além da criação de buckets, você possui controle total sobre a alocação de armazenamento, gerenciamento de acesso a buckets e objetos, e a capacidade de fazer upload, alterar e deletar objetos.

Implementação


Buckets

Os buckets são o sistema utilizado para organizar objetos, ou arquivos, armazenados. Semelhantes a pastas, os buckets são contêineres de nível superior para armazenar objetos. Buckets podem ser criados usando a API da Azion.

Todos os buckets criados com o Edge Storage da Azion são armazenados no servidor de nuvem us-east.

Nomes de buckets são exclusivos dentre todas as contas Azion. Os nomes devem ter entre 6 e 63 caracteres e não podem começar com azion. São aceitos caracteres alfanuméricos e hífen (-).

As melhores práticas para nomear buckets incluem especificar que tipos de objetos são armazenados e o tipo de permissões para os objetos. Por exemplo, um bucket para uma edge application Banking App em modo somente leitura (read-only) poderia ser nomeado banking-app-ro.


Objetos

Objetos, ou arquivos, podem ser enviados, modificados, baixados e removidos dos buckets por meio da Azion REST API, do Azion Runtime e do protocolo S3.

Object key

Uma object key é uma string de caracteres que compõe identificador de objetos armazenados em buckets do Edge Storage. Por meio das ferramentas disponíveis, os usuários podem recuperar um arquivo armazenado em um bucket usando sua chave de objeto.

Não é obrigatório que a object key corresponda ao caminho do arquivo original ou nome do armazenamento local de onde ele foi retirado, nem que contenha a extensão original do arquivo. No entanto, ao fazer o upload de um arquivo local para um bucket, é recomendado que o nome do arquivo corresponda à object key para que ele se encaixe às convenções do armazenamento local. Por exemplo, para o arquivo local pasta/arquivo.png, a object key deve ser a mesma.

A object key não pode ser alterada. Fazer o upload de um objeto diferente ou modificar o conteúdo de um objeto usando uma chave existente substitui o objeto. Uma vez que um objeto é substituído, versões anteriores não podem ser recuperadas.

Prefix

Um prefixo é uma combinação de caminhos que simulam uma hierarquia de pastas. Como os buckets não podem ser organizados em pastas, você pode usar a barra (/) ao criar chaves para categorizar objetos do seu bucket em um prefixo.

Por exemplo, a lista de keys abaixo mostra a hierarquia simulada de uma aplicação armazenada em um bucket com prefixes:

Terminal window
README.md
src/index.js
src/index.html
src/assets/styles.css
src/assets/images/image.png

O objeto README.md está localizado na raiz do bucket. O prefix src corresponde a uma pasta e contém os objetos index.js e index.html. Além disso, o prefix src/assets contém um objeto styles.css e o prefix src/assets/images, por sua vez, contém o objeto image.png.

O upload de um objeto diferente ou a modificação do conteúdo do objeto usando uma key existente substitui o objeto. Depois que um objeto é substituído, as versões anteriores não podem ser recuperadas.

Origem

Com Edge Storage, você pode usar buckets como uma origin na Edge Application da Azion para retirar o conteúdo de uma edge application.

Você pode determinar se o conteúdo é retirado da raiz do bucket ou de um prefix dentro do bucket.


Operações

Uma operação refere-se a qualquer troca de dados entre um cliente e o Edge Storage. Todas as ações relacionadas a buckets e objetos, como criar, excluir, listar e atualizar, são consideradas uma operação. Cada vez que um desses métodos é usado, uma operação é registrada através da API ou do protocolo S3.

A versão atual do Edge Storage oferece operações listadas abaixo, dependendo de se a Azion API ou o protocolo S3 é usado.

Operações da API da Azion

ClasseNome da operaçãoMétodo HTTP
AListObjectsGET
ACreateBucketPOST
AListBucketsGET
AUpdateBucketPATCH
BGetObjectGET
CPostObjectPOST
CPutObjectPUT
CDeleteObjectDELETE
CDeleteBucketDELETE

ListObjects

Recupera uma lista de objetos carregados em um bucket.

Esta operação retorna detalhes de todos os objetos no bucket, incluindo o tamanho em bytes e o timestamp da última modificação.

CreateBucket

Cria um novo bucket para uma conta.

ListBuckets

Recupera uma lista de buckets associados a uma conta.

UpdateBucket

Modifica as informações do bucket.

Use esta operação para alterar as permissões de acesso aos objetos no bucket. Buckets não podem ser renomeados com esta operação.

GetObject

Recupera um objeto de um bucket.

PostObject

Faz o upload de um objeto para um bucket. Os objetos são limitados a um tamanho máximo de 20 MB.

Para a API da Azion, você pode especificar o tipo MIME do objeto sendo enviado no corpo usando o cabeçalho Content-Type. Por exemplo, objetos com a extensão .txt devem conter o cabeçalho Content-Type: text/plain. Se o tipo MIME não for especificado, Edge Storage tentará interpretar o tipo de arquivo com base na extensão do arquivo. Alternativamente, use o tipo MIME application/octet-stream para indicar que os dados são um fluxo binário e o servidor deve tratá-los como dados binários brutos.

Enviar um novo objeto com uma chave de objeto já existente no bucket substituirá o objeto anterior.

PutObject

Faz o upload de um objeto para um bucket.

Enviar um novo objeto com uma chave de objeto que já existia no bucket substituirá o objeto anterior.

DeleteObject

Remove um objeto de um bucket.

Quando você exclui um objeto que está sendo servido no edge, ele deixará de ser servido imediatamente e não será mais listado no bucket.

DeleteBucket

Remove um bucket de uma conta.

Buckets que contêm objetos não podem ser excluídos. Após remover o último objeto de um bucket, há um período de 24 horas antes que o bucket possa ser excluído.

Operações do protocolo S3

Se listBuckets estiver habilitado, ao tentar recuperar arquivos que não estão no bucket usando uma credencial S3, a resposta de status 404 Not Found correta é retornada em vez de um status 403 Forbidden. Descubra mais sobre as capacidades do S3 em compatibilidade com o protocolo S3.

ListBuckets

Recupera uma lista de buckets associados a uma conta.

Comando S3cmd: s3cmd ls

HeadBucket

Verifica a existência e permissões do bucket, retornando 200 OK se existir ou 404 Not Found se não existir.

Comando S3cmd: s3cmd info s3://BUCKET

ListMultipartUploads

Lista uploads multipart em andamento em um bucket. Refere-se a um upload multipart que o S3 iniciou uma requisição de Create Multipart Upload, mas que ainda não foi concluído ou abortado.

Comando S3cmd: s3cmd multipart s3://BUCKET

ListObjects

Retorna uma lista de até 1.000 objetos no bucket, ordenados alfabeticamente por chave. Você pode usar os parâmetros de consulta para filtrar a pesquisa.

Comando S3cmd: s3cmd ls s3://BUCKET

Para mais de 1.000 resultados, é recomendável usar ListObjectsV2

ListObjectsV2

Retorna uma lista de até 1.000 objetos no bucket, ordenados alfabeticamente por chave. Você pode usar os parâmetros de consulta para filtrar a pesquisa.

Este limite é uma configuração padrão. No entanto, se os resultados da pesquisa excederem o tamanho máximo do conjunto de resultados, o primeiro conjunto é retornado na resposta inicial, o elemento de resposta <IsTruncated> contém o valor verdadeiro e o elemento <NextContinuationToken> contém um token para recuperar o próximo conjunto de resultados.

Use este token como o parâmetro de consulta continuation-token em outra requisição para recuperar o próximo conjunto de resultados.

Comando S3cmd: s3cmd ls s3://BUCKET

CopyObject

Cria uma cópia de um objeto que já está armazenado.

Comando S3cmd: s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2/OBJECT2

GetObject

Recupera um objeto de um bucket.

Comando S3cmd: s3cmd get s3://BUCKET/OBJECT LOCAL_FILE

HeadObject

Recupera metadados de um objeto sem retornar o próprio objeto.

Comando S3cmd: s3cmd info s3://BUCKET/OBJECT

DeleteObject

Remove um objeto de um bucket completamente.

Comando S3cmd: s3cmd del s3://BUCKET/OBJECT

DeleteObjects

Exclui vários objetos de um bucket em uma única requisição. No corpo XML, forneça as chaves dos objetos e, opcionalmente, os IDs das versões se você quiser excluir uma versão específica do objeto.

Comando S3cmd: s3cmd del s3://BUCKET/PREFIX --recursive

AbortMultipartUpload

Aborta um upload multipart.

Comando S3cmd: s3cmd abortmp s3://BUCKET/OBJECT Id

CompleteMultipartUpload

Completa um upload multipart montando partes previamente carregadas.

Esta operação é parte do processo de upload multipart do S3, sendo tratada automaticamente como parte do processo de upload ao carregar arquivos grandes, uma vez que todas as partes sejam carregadas com sucesso.

CreateMultipartUpload

Inicia um upload multipart e retorna um uploadId. Este uploadId é usado para associar todas as partes em um upload multipart específico.

Esta operação é parte do processo de upload multipart do S3, sendo tratada automaticamente como parte do processo de upload ao carregar arquivos grandes quando você usa o comando put com um arquivo grande. Não há necessidade de chamar explicitamente esta operação.

ListParts

Lista partes que foram carregadas para um determinado upload multipart.

Este limite é uma configuração padrão. No entanto, se o número de resultados da pesquisa for maior do que o tamanho máximo do conjunto de resultados, o primeiro conjunto é retornado na resposta inicial, o elemento de resposta contém o valor verdadeiro e o elemento contém um token para recuperar o próximo conjunto de resultados. Use este token como o parâmetro de consulta part-number-marker em outra requisição para recuperar o próximo conjunto de resultados.

Comando S3cmd: s3cmd listmp s3://BUCKET/OBJECT Id

PutObject

Faz o upload de um objeto para um bucket.

Comando S3cmd: s3cmd put FILE s3://BUCKET/OBJECT

UploadPart

Faz o upload de uma parte do arquivo em um upload multipart. O s3cmd divide automaticamente arquivos grandes em partes e as carrega. Você não precisa gerenciar as partes ou chamar esta operação diretamente manualmente.


Autenticação e permissões

Você pode gerenciar as seguintes permissões para o Edge Storage:

  • Teams Permissions na Azion: operações envolvendo buckets, como upload, listagem e exclusão de objetos, sempre requerem autenticação através da conta Azion. Vá para Teams Permissions para saber mais sobre as permissões disponíveis no Edge Storage.
  • Permissões de bucket: gerencie o acesso do edge e de outros usuários a buckets e objetos dentro dos buckets; relacionado ao atributo edge_access.
  • Credenciais S3: gerencie o acesso para usuários da conta Azion através de capacidades e atribua permissões de operação exclusivas para acesso ao protocolo S3.

Permissões de bucket

Além da autenticação necessária e das permissões necessárias, algumas operações da API podem ser restritas por permissões de bucket. As permissões disponíveis são:

  • Read-only: objetos no bucket podem ser lidos, mas não modificados pela Plataforma de Edge da Azion.
  • Read-write: objetos no bucket podem ser modificados pela Plataforma de Edge da Azion.
  • Restricted: objetos no bucket podem ser modificados e lidos, mas não podem ser acessados pela Plataforma de Edge da Azion. Buckets restritos não podem ser modificados usando o Azion Runtime e não podem ser usados como origem para edge applications.

Essas permissões estão relacionadas à forma como o edge pode acessar o bucket:

  • Se o bucket estiver configurado como read-only, a Plataforma de Edge da Azion pode recuperar objetos do bucket, mas não pode fazer upload ou modificá-los. No entanto, usuários autorizados podem continuar escrevendo no Edge Storage através da API ou do protocolo S3.
  • Se o bucket estiver configurado como read-write, a Plataforma de Edge da Azion e outros usuários podem tanto recuperar quanto modificar objetos dentro do bucket.
  • Se o bucket estiver configurado como restricted, a Plataforma de Edge da Azion não pode acessar o conteúdo do bucket. Nesse caso, apenas usuários autorizados podem continuar escrevendo no Edge Storage através da API ou do protocolo S3.

Por exemplo, quando um usuário externo tenta enviar uma requisição POST ou PUT para uma edge application usando um bucket configurado com permissões read-only ou restricted como sua origem, o edge negará o acesso e retornará uma mensagem de erro.

Credenciais S3

Edge Storage oferece compatibilidade com o protocolo S3 por meio de credenciais.

Credenciais podem ser criadas para qualquer bucket que você possua ou para sua conta como um todo para gerenciar todos seus buckets. Com elas, você pode controlar permissões para operações associadas a essa credencial. As permissões para a credencial são exclusivas para acesso através do protocolo S3.

Para criar uma credencial S3, você deve usar um personal token da Azion e executar uma requisição POST via API. No entanto, após a credencial ser criada, ela funciona independentemente do seu token Azion. Dessa forma, mesmo que o token expire, a credencial permanece válida.

Uma vez que uma credencial é criada, uma access key e uma secret key são geradas, as quais podem ser usadas para configurar o acesso ao bucket através do protocolo S3. Por razões de segurança, a secret key não estará disponível após a criação da credencial. Credenciais existentes não podem ser modificadas.

Uma vez que o acesso de um usuário é verificado, ele estará autorizado a realizar operações dependendo das capabilities e permissões definidas para a credencial.

Capabilities

Você pode atribuir as seguintes capabilities às credenciais S3:

  • listFiles: equivalente a ListObjects, retorna uma lista de objetos dentro do bucket.
  • readFiles: equivalente a GetObject, retorna um objeto do bucket através da object key.
  • writeFiles: equivalente a PutObject, permite modificar arquivos no bucket através da object key.
  • deleteFiles: equivalente a DeleteObject, permite a exclusão de objetos através da object key.
  • listAllBucketNames: equivalente a ListBuckets, permite que você liste todos os buckets associados à conta.
  • listBuckets: se habilitado, retorna a resposta de status 404 Not Found correta ao tentar recuperar arquivos que não estão no bucket usando a credencial.

Compatibilidade com protocolo S3

Após a criação de uma credencial S3 para um bucket, você pode usar o protocolo S3 (s3://) para executar operações de acordo com a lista de capabilities.

O protocolo S3 permite acessar buckets e objetos usando a URL de Edge Storage. Esta configuração facilita operações de objetos através de ferramentas de interface de linha de comando (CLI), como s3cmd, serviços de banco de dados ou funções.

Você pode usar a access key e secret key fornecidas pela API de credenciais S3 para configurar uma conexão usando o protocolo S3.

Saiba Como acessar o Edge Storage usando o protocolo S3

Para fazer isso, você precisará das seguintes informações:

DadoDescrição
Access keyA access key da credencial gerada ao criar a credencial S3 com a API da Azion
Secret keyA secret key da credencial gerada ao criar a credencial S3 com a API da Azion. Esta informação é confidencial e só estará disponível no momento da criação
RegiãoA região do servidor atribuída, que é us-east-005
Endpoint S3O endereço S3 padrão para todas as operações, que é s3.us-east-005.azionstorage.net
Template de estilo DNSO modelo de host name para acessar o bucket e os objetos. Pode ser bucket+hostname:port/object-key ou hostname:port/bucket.

Por exemplo, para um objeto file.txt no bucket my-bucket, os host names seriam:
    • my-bucket.s3.us-east-005.azionstorage.net/file.txt
      s3.us-east-005.azionstorage.net/my-bucket/file.txt

  • Limites

    Estes são os limites default:

    EscopoLimite
    Buckets100 por conta
    Regiãous-east
    Access keys para credenciais S3100.000 por conta


    Contribuidores