Os buckets tem o intuito de armazenar arquivos físicos (ex.: imagens, pdf, arquivos compactados) do nosso sistema em um espaço apropriado. O uso desse recurso é muito recomendado nos sistemas atuais.

Nesse tutorial criaremos um bucket S3 da Amazon e configuraremos uma política de segurança para que apenas quem possua a chave secreta possa fazer upload do conteúdo, porém, o download será público.


Esta documentação tem como objetivo informar sobre o procedimento básico de criação da chave do Bucket S3 na Amazon, para informações mais detalhadas, consulte a documentação oficial.

O Cronapp possui um sistema de bucket que integra esse recurso de forma mais simples aos seus projetos, para mais detalhes, acesse o tópico Armazenamento da documentação serviços de cloud.

Pré-requisitos

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

  1. Projeto do tipo web ou mobile criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link Criar projeto;

  2. Possuir uma conta Amazon Web Services (AWS), podendo ser criada clicando em criar uma nova conta AWS.

Passos

Criar o bucket

Faça login no Console de Gerenciamento da AWS, em seguida, clique em Services e depois em S3 (destaque 1 da figura 1). 


Figura 1 - Acesso ao serviço S3 da Amazon


Após acessar a página do Amazon S3, clique em Criar bucket (Figura 2).


Figura 1.1 - Botão para criar o bucket


Na janela de criação do bucket há vários cards com configurações, para esse exemplo, faremos a configuração mais básica.

Na primeira etapa, informe o Nome do bucket (destaque 1 da figura 1.2) e a Região da AWS (2).


Figura 1.2 - Etapa 1 da configuração do bucket


Descendo a barra de rolagem da página, configure como na imagem abaixo,


Figura 1.3 - Etapa 2 da configuração do bucket


Passos da figura 1.3:

  1. No card Propriedade do objeto, marque a opção ACLs desabilitadas (recomendado).

    Para mais detalhes sobre as configurações de bloqueios clique aqui.

  2. No card Configurações de bloqueio do acesso público deste bucket, desmarque a opção Bloquear todo o acesso público.
  3. No card Configurações de bloqueio do acesso público deste bucket, marque a opção Reconheço que as configurações atuais podem fazer com que este bucket e os objetos dentro dele se tornem públicos.


Não é necessário alterar mais nenhuma configuração dessa página. Assim, clique no botão final Criar bucket, como mostrado na figura 1.4.


Figura 1.4 - Finalizando a criação do bucket

Política do bucket

Criado o bucket, vamos definir uma política em que o download do conteúdo enviado será público.

De volta a tela inicial com seus buckets, utilize o campo de busca (destaque 1 da figura 1.5) para filtrar pelo bucket que acabamos de criar e clique para acessar suas configurações (Figura 1.5).


Figura 1.5 - Lista dos buckets


Nas configurações do bucket, clique na aba Permissões (destaque 1 da figura 1.6), acesse o quadro Política do bucket e clique no botão Editar (destaque 2 da figura 1.6).


Figura 1.6 - Acesso as configurações de Política do bucket


Com o campo em modo de edição, informe o JSON abaixo para permitir que os dados fiquem públicos (Figura 1.7).


Política do bucket
{
    "Version": "2012-10-17",
    "Id": "Policy1500505611610",
    "Statement": [
        {
            "Sid": "Stmt1500505609346",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<NOME-DO-SEU-BUCKET>/*"
        }
    ]
}


Será necessário incluir o nome do bucket que acabamos de criar na área com o destaque 1 da figura 1.7. Fique atento para retirar caracteres de espaços (" ") antes do caractere de abertura da chave "{" na primeira linha e depois do caractere de fechadura da chave "}" na última linha.


Figura 1.7 - Incluindo a política do bucket


Ao final, clique em Salvar alterações (figura 1.7) para exibir o termo Publicamente acessível abaixo do nome do bucket (destaque 1 da figura 1.8).


Figura 1.8 - Incluindo a política do bucket

Usuário, política e grupo

Agora será necessário criar um usuário que liberará uma "chave de acesso" e a "senha de acesso" para inserir no Cronapp. O usuário será usado para ter acesso ao bucket desejado, ou, dependendo da configuração, a todos os buckets criados por você na Amazon S3.

Criação do Usuário - parte 1

Assim como fizemos para acessar o S3, clique em Services e depois em IAM (destaque 2 da figura 1). Após abrir a página, clique em Usuários (destaque 1 da figura 2) no menu lateral e depois no botão Adicionar usuários (figura 2).


Figura 2 - Gerenciamento de acesso do Usuários


Na primeira etapa da página de configuração de usuário, em Definir detalhes do usuário, informe o nome do usuário que será criado. Em Selecione o tipo de acesso à AWS marque a opção Chave de acesso: acesso programático, permitindo o acesso externo e não só pelo console de gerenciamento da AWS. Após isso, clique em Próximo: Permissões (Figura 2.1).


Figura 2.1 - Etapa 1 da criação de usuário


Na segunda etapa de configuração, clique na aba Anexar políticas existentes de forma direta (destaque 1 da figura 2.2) e depois em Criar políticas (destaque 2). Será aberta uma nova página em outra guia do seu navegador para configurar a política, após esse processo, retornaremos a essa etapa das configurações do usuário.


Figura 2.2 - Definindo permissões

Definição da política do S3

Na nova guia do navegador, referente a página de criação das políticas, pesquise e selecione pelo serviço "S3" no campo Selecione um serviço abaixo (Figura 2.3).


Figura 2.3 - Criando política


Em seguida, configure as Ações, selecione a primeira opção Todas as ações S3 (s3:*) (destaque 1 da figura 2.4).


Figura 2.4 - Configurando Ações


Clique em Recursos e deixe a opção Específico (destaque 1 da figura 2.5) habilitada para exibir todos os recursos. Em bucket, clique em Adicionar ARN (destaque 2 da figura 2.5) para abrir o modal Adicionar ARN(s), informe o nome do bucket (destaque 3) criado na figura 1.2 e clique no botão Adicionar para fechar o modal. Por fim, clique no botão Próximo: Tags (4).


Figura 2.5 - Configurando Recursos


A etapa 2 se refere a inclusão de tags e não será necessário nesse tutorial, por isso, clique no botão Próximo: Revisar para pular para última etapa (não exibido em imagens).

Na última etapa, Revisar política, informe um Nome e defina uma Descrição para a política e clique em Criar política para ser direcionado a lista de políticas (Figura 2.6).  


Figura 2.6 - Inclusão de nome e descrição da política

Criação do Usuário - parte 2

Quando solicitamos a criação da política (figura 2.2), foi aberta uma nova guia do navegador para essa configuração, retorne a guia anterior para continuarmos a configuração do usuário.

Clique no botão recarregar (destaque 1 da figura 2.7), informe o nome da política que criamos no filtro (destaque 2) e selecione a caixa de seleção da política na lista (3). Clique no botão Próximo: Tags.


Será necessário a inclusão do usuário atual em um grupo que iremos criar. Poderíamos usar essa etapa para criar o grupo, porém faremos esse passo mais a frente, apenas por questão de didática.


Figura 2.7 - Selecionando a política que acabamos de criar


Assim como ocorre na criação da política, a próxima etapa (2) da criação do usuário também se refere a inclusão de tags e não será necessário nesse tutorial, por isso, clique no botão Próximo: Revisar para pular para etapa 4 (não exibido em imagens).

Nessa etapa, será exibido os detalhes do usuário e a política que criamos, clique no botão Criar usuário.


Figura 2.8 - Resumo do usuário


A etapa final exibirá o ID da chave de acesso e a Chave de acesso secreta. Por segurança, o AWS só exibirá esses dados agora, por isso, faça o download do .csv ou copie esses dados, caso contrário, será necessário gerar uma nova chave de acesso nas configurações do usuário.

Clique no botão Fechar.


Figura 2.9 - Informações de acesso do usuário

Criação do grupo de usuários

Ainda na área do IAM (destaque 2 da figura 1), acesse o menu lateral e clique em Grupos de usuários (destaque 1 da figura 2.10). Clique no botão Criar grupo (figura 2.10)


Figura 2.10 - Gerenciamento dos grupos de Usuários


Para criar o grupo, siga os passos apresentado na figura abaixo.


Figura 2.11 - Criação do grupo


  1. Nome do grupo de usuários: informe um nome para o grupo a ser criado.
  2. Adicionar usuário ao grupo (filtro): pesquise pelo nome do usuário que criamos.
  3. Adicionar usuário ao grupo (usuário): marque a caixa de seleção do usuário na lista.
  4. Associar políticas de permissões (filtro): pesquise pela política "AdministratorAccess".
  5. Associar políticas de permissões (política): marque a caixa de seleção da política "AdministratorAccess".
  6. Clique no botão Criar grupo.

Configuração do projeto Cronapp

Agora iremos vincular os dados obtidos do bucket S3 a um atributo de classe.

No Cronapp, abra uma classe do Diagrama de dados e selecione o botão de edição do atributo que será vinculado ao S3 (destaque 1 da figura 3). 


Figura 3 - Janela de edição da classe


Configure o atributo como na figura abaixo.


Figura 3 - Janela de edição da classe


  1. Tipo: selecione as opções "Imagem no Cloud" ou "Arquivo no Cloud".
  2. Tipo de Armazenamento: selecione a opção "S3".
  3. Id do Armazenamento: informe o nome do bucket (configurado no destaque 1 da figura 1.2).
  4. Chave do Armazenamento: informe o "ID da chave de acesso" (figura 2.9).
  5. Segredo do Armazenamento: informe a "Chave de acesso secreta" (figura 2.9).
  6. Região da AWS: selecione a região escolhida no bucket (configurado no destaque 2 da figura 1.2).


Salve as alterações do diagrama de dados e, em seguida, gere a camada de persistência e a página CRUD da classe.

Recomendamos Recompilar e Reabrir o Projeto antes de gerar a página CRUD e rodar a aplicação.


Após abrir a página CRUD e cadastrar alguns registros a partir da aplicação, será possível visualizar o endereço público dos arquivos (destaque 1 da figura 3.1).


Figura 3.1 - Enviando arquivos para o S3 a partir da página CRUD da classe configurada


É possível renderizar a imagem na Grade a partir do seu endereço, acesse o tópico "Colunas Abas" da documentação do componente visual Grade para mais detalhes.

Nesta página

  • Sem rótulos