Primeros pasos con amazon-s3

Instalación de AWS CLI para acceder a S3

Instalando aws cli en Instancia de Ubuntu/Debian

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

Instalación de aws cli usando python

Usando pip puede instalar aws cli en Windows, OS X y Linux

sudo pip install awscli

Configuración de la interfaz de línea de comandos de AWS

Esta sección explica cómo configurar los ajustes que utiliza la interfaz de línea de comandos de AWS cuando interactúa con AWS, como sus credenciales de seguridad y la región predeterminada.

$ 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

Obtenga la clave de acceso y la clave secreta de la página de la cuenta en AWS

Creación de cubos

Utilice el comando aws s3 mb para crear un depósito nuevo. Los nombres de depósito deben ser únicos y deben ser compatibles con DNS. Los nombres de los cubos pueden contener letras minúsculas, números, guiones y puntos

aws s3 mb s3://bucket-name

Eliminación de baldes

Para eliminar un depósito, use el comando aws s3 rb. De forma predeterminada, el depósito debe estar vacío.

aws s3 rb s3://bucket-name

Para eliminar un cubo no vacío, debe incluir la opción –force.

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

Contenedores de listado

Para enumerar todos los depósitos o su contenido, use el comando aws s3 ls

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

El siguiente comando enumera los objetos en bucket-name/path

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

Sincronizar archivos entre el sistema de archivos local y S3

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

Cargará todos los archivos en el directorio actual a S3. Para descargar los archivos de S3 al directorio actual, ejecute

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

Ejemplo de Hola Mundo usando Java

Este ejemplo intenta crear un depósito llamado ‘hello-world’ y, como el depósito hello-world ya lo ha creado otra persona en el espacio de nombres global de S3, arroja la siguiente excepción. Cambie ‘hello-world’ a otra cosa para evitar la excepción creando un depósito con un nombre único. El nuevo depósito así creado se puede eliminar mediante la consola de AWS

Excepción en el subproceso “main” com.amazonaws.services.s3.model.AmazonS3Exception: el nombre del depósito solicitado no está disponible. El espacio de nombres del depósito lo comparten todos los usuarios del sistema. Seleccione un nombre diferente y vuelva a intentarlo. (Servicio: Amazon S3; Código de estado: 409; Código de error: BucketYaExists; ID de solicitud: …

           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 ejemplo requiere las siguientes dependencias:

  • Java instalado con la consola funcionando.
  • AWS Java SDK instalado. https://aws.amazon.com/sdk-for-java/
  • Archivo de credenciales credentials configurado en .aws en su directorio de inicio. https://aws.amazon.com/developers/getting-started/java/
  • Credencial para tener derechos de administrador o ‘crear depósito’ en S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets

Hola mundo usando PowerShell

Este ejemplo espera un error, ya que el depósito hello-world ya existe y S3 usa un espacio de nombres global.

    New-S3Bucket -BucketName "hello-world"

New-S3Bucket: el nombre del depósito solicitado no está disponible. El espacio de nombres del depósito lo comparten todos los usuarios del sistema. Seleccione un nombre diferente y vuelva a intentarlo.

Si reemplaza hello-world con algo más que sea único, el depósito se creará sin errores y obtendrá el siguiente resultado:

Fecha de creación Nombre del depósito


30/03/2017 23:43:03 hola-mundo-832jklsdJF

Este ejemplo requiere las siguientes dependencias:

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

  • Cartas credenciales. Estos se pueden crear utilizando la consola de AWS. Hay varias opciones para administrarlos mediante PowerShell. A continuación se muestra un ejemplo sencillo de configuración. 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 de AWS CLI S3

Lista de comandos de la CLI de AWS de S3 de uso común

Crear depósito

aws s3 mb s3://bucket-name

Quitar cubo

aws s3 rb s3://bucket-name

Lista de cubos

aws s3 ls

Lista de contenido dentro del balde

aws s3 ls s3://bucket-name

Cubo de lista con una ruta

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

Copiar archivo

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

Sincronizar archivos

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

Eliminar archivo local

rm ./MyFile1.txt

Intentar sincronizar sin la opción –delete - no pasa nada

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

Sincronización con eliminación: el objeto se elimina del depósito

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

Eliminar objeto del cubo

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

Sincronización con eliminación: el archivo local se elimina

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

Sincronizar con clase de almacenamiento de acceso poco frecuente

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

Copie MyFile.txt en el directorio actual a s3://my-bucket/path

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

Mueva todos los archivos .jpg en s3://my-bucket/path a ./MyDirectory

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

Enumere el contenido de my-bucket

aws s3 ls s3://my-bucket

Enumere el contenido de la ruta en my-bucket

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

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

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

Eliminar s3://my-bucket/path y todo su contenido

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