Introdução ao amazon-s3

Instalação da AWS CLI para acessar o S3

Instalando aws cli na instância Ubuntu/Debian

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

Instalando aws cli usando python

Usando pip você pode instalar o aws cli no Windows, OS X e Linux

sudo pip install awscli

Configuração da interface de linha de comando da AWS

Esta seção explica como definir as configurações que a AWS Command Line Interface usa ao interagir com a AWS, como suas credenciais de segurança e a região padrão.

$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json

Obtenha a chave de acesso e a chave secreta na página da conta na AWS

Criando Baldes

Use o comando aws s3 mb para criar um novo bucket. Os nomes dos buckets devem ser exclusivos e compatíveis com DNS. Os nomes dos buckets podem conter letras minúsculas, números, hífens e pontos

aws s3 mb s3://bucket-name

Removendo Baldes

Para remover um bucket, use o comando aws s3 rb. Por padrão, o bucket deve estar vazio.

aws s3 rb s3://bucket-name

Para remover um bucket não vazio, você precisa incluir a opção –force.

aws s3 rb s3://bucket-name --force

Listagem de buckets

Para listar todos os buckets ou seus conteúdos, use o comando aws s3 ls

aws s3 ls
aws s3 ls s3://bucket-name

O comando a seguir lista os objetos em bucket-name/path

aws s3 ls s3://bucket-name/path

Sincronize arquivos entre o sistema de arquivos local e o S3

aws s3 sync . s3://my-bucket/path 

Ele fará upload de todos os arquivos no diretório atual para o S3. Para baixar os arquivos do S3 para o diretório atual, execute

aws s3 sync s3://my-bucket/path .

Exemplo Hello World usando Java

Este exemplo tenta criar um bucket chamado ‘hello-world’ e, como o bucket hello-world já foi criado por outra pessoa no namespace global do S3, lança a seguinte exceção. Altere ‘hello-world’ para outra coisa para evitar a exceção criando um bucket com nome exclusivo. O novo bucket criado pode ser excluído usando o console da AWS

Exceção no encadeamento “main” com.amazonaws.services.s3.model.AmazonS3Exception: o nome do bucket solicitado não está disponível. O namespace do bucket é compartilhado por todos os usuários do sistema. Selecione um nome diferente e tente novamente. (Serviço: Amazon S3; Código de status: 409; Código de erro: BucketAlreadyExists; ID da solicitação: …

           import com.amazonaws.services.s3.AmazonS3;
           import com.amazonaws.services.s3.AmazonS3ClientBuilder;
           import com.amazonaws.services.s3.model.CreateBucketRequest;
           import com.amazonaws.services.s3.model.Bucket;

            /** S3 "hello world" example. */
            public class S3Hello {

                    /** Name of hello-world bucket -- must be globally unique.  The
                     *  bucket namespace is shared by all users of the system.
                     */
                    static final String BUCKET_NAME = "hello-world";

                    /** Creates bucket
                     *  @param args Command line arguments
                     */
                    public static void main(final String[] args) {

                            AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

                            CreateBucketRequest request
                                 = new CreateBucketRequest(BUCKET_NAME);

                            Bucket bucket = s3.createBucket(request);
                            System.out.println("S3 Hello World completed.");
                    }
            }

Este exemplo requer as seguintes dependências:

  • Java instalado com console funcionando.
  • AWS Java SDK instalado. https://aws.amazon.com/sdk-for-java/
  • Arquivo de credenciais credentials configurado em .aws em seu diretório pessoal. https://aws.amazon.com/developers/getting-started/java/
  • Credencial para ter direitos de administrador ou ‘criar bucket’ no S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets

Olá Mundo Usando PowerShell

Este exemplo espera um erro, pois o bucket hello-world já existe e o S3 usa um namespace global.

    New-S3Bucket -BucketName "hello-world"

New-S3Bucket : o nome do bucket solicitado não está disponível. O namespace do bucket é compartilhado por todos os usuários do sistema. Selecione um nome diferente e tente novamente.

Se você substituir o hello-world por outra coisa única, o bucket será criado sem erros e você obterá o seguinte resultado:

Data de Criação BucketName


30/03/2017 23:43:03 olá mundo-832jklsdJF

Este exemplo requer as seguintes dependências:

  • PowerShell. Consulte http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html

  • Credenciais. Eles podem ser criados usando o console da AWS. Existem várias opções para gerenciá-los usando o PowerShell. Abaixo está um exemplo simples para configuração. Consulte http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html

      PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A 
             -SecretKey  "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default
    

Lista de comandos do AWS CLI S3

Lista de comandos da AWS CLI do S3 mais usados

Criar bucket

aws s3 mb s3://bucket-name

Remover balde

aws s3 rb s3://bucket-name

Lista de buckets

aws s3 ls

Listar o conteúdo dentro do bucket

aws s3 ls s3://bucket-name

Listar bucket com um caminho

aws s3 ls s3://bucket-name/path

Copiar arquivo

aws s3 cp file.txt s3://my-bucket/ 

Sincronizar arquivos

aws s3 sync . s3://my-bucket/path

Excluir arquivo local

rm ./MyFile1.txt

Tente sincronizar sem a opção –delete - nada acontece

aws s3 sync . s3://my-bucket/path

Sincronizar com exclusão - o objeto é excluído do bucket

aws s3 sync . s3://my-bucket/path --delete

Excluir objeto do bucket

aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt

Sincronizar com exclusão - o arquivo local é excluído

aws s3 sync s3://my-bucket/path . --delete

Sincronizar com a classe de armazenamento Acesso Infrequente

aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA

Copie MyFile.txt no diretório atual para s3://my-bucket/path

aws s3 cp MyFile.txt s3://my-bucket/path/

Mova todos os arquivos .jpg em s3://my-bucket/path para ./MyDirectory

aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive

Liste o conteúdo de my-bucket

aws s3 ls s3://my-bucket

Liste o conteúdo do caminho em my-bucket

aws s3 ls s3://my-bucket/path

Excluir s3://my-bucket/path/MyFile.txt

aws s3 rm s3://my-bucket/path/MyFile.txt

Excluir s3://my-bucket/path e todo o seu conteúdo

aws s3 rm s3://my-bucket/path --recursive