Buscar..


Observaciones

Resumen de la Documentación

De http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html

Amazon Simple Storage Service es almacenamiento para Internet. Está diseñado para facilitar la computación a escala web para los desarrolladores.

Amazon S3 tiene una interfaz de servicios web simple que puede utilizar para almacenar y recuperar cualquier cantidad de datos, en cualquier momento, desde cualquier lugar de la web. Le da a cualquier desarrollador acceso a la misma infraestructura de almacenamiento de datos altamente escalable, confiable, rápida y económica que Amazon usa para ejecutar su propia red global de sitios web. El servicio apunta a maximizar los beneficios de la escala y pasar esos beneficios a los desarrolladores.

Soporte de lenguaje y scripting

S3 no es un lenguaje de desarrollo como tal, sino una plataforma en la nube que admite solicitudes de servicios web. Hay una variedad de herramientas y SDK que están publicados por Amazon. Los SDK de idiomas proporcionan acceso transparente a S3 mediante el manejo de tareas tales como solicitudes de servicios web, autenticación, gestión de sesiones, renovación de token, etc. También hay interfaces de línea de comandos para bash / windows / ios y powershell .

La API de S3

La API de servicios web de S3 ha sido respaldada por proveedores competidores . Actualmente, este tema no cubre la API directamente, por lo que los ejemplos aquí no serían útiles para crear aplicaciones que se conecten a sistemas de la competencia que aprovechan la API de S3.

Versiones

A partir del 28 de marzo de 2017, la CLI de AWS tiene 174 versiones, que están claramente documentadas en las Notas de versión de la CLI . Amazon S3 tiene 66 versiones, de las cuales algunas son para anunciar la adición de una nueva región, y otras son para agregar funcionalidad. Estos están documentados en las Notas de la versión S3 .

Los ejemplos

Con respecto a los ejemplos mostrados hasta ahora en esta sección de "Introducción", Amazon S3 es útil para los desarrolladores para los siguientes casos de uso:

  • Almacene o realice copias de seguridad de archivos en un sistema duradero y de alto rendimiento, descargando así esta tarea de arquitecturas que no son de la nube: sistemas de archivos de Linux y Windows. Es costoso recrear la durabilidad y los niveles de rendimiento de S3 utilizando servidores locales o instancias de EC2.
  • Cuando el ancho de banda de la red es un problema, por ejemplo, en los casos en que varios usuarios simultáneos deben descargar archivos grandes, la transferencia de datos a S3 se puede usar como una forma para que una aplicación mitigue la escasez de ancho de banda en un centro de datos o servidor local . Esta es una manera de distribuir un repositorio de código grande, imágenes de máquinas virtuales, video o instaladores de software. Los tiempos de carga del usuario y los tiempos de descarga del usuario pueden mejorarse. [Para un rendimiento adicional en escenarios de base de usuarios muy grandes, se puede usar un sistema de entrega de contenido como cloudfront para almacenar en caché los archivos más cerca de los usuarios.]
  • Su aplicación necesita crear o consumir un archivo grande y necesita una forma de permitir que los usuarios accedan o lo depositen.
  • Su distribución de aplicaciones es muy grande y necesita compartirla con los usuarios.
  • Está organizando una entrega continua y, por ejemplo, alojando partes de su sitio web en Amazon S3.

En este punto, los ejemplos no muestran cómo hacer lo siguiente:

  • Los ejemplos, aunque más rápidos y claros que escribir la aws s3 help, do not mention some of the commands covered in help, such as web de aws s3.
  • Cómo compartir o restringir el acceso de los usuarios. Sin restricción explícita, los ejemplos solo funcionan para usuarios que comparten la misma cuenta de AWS.
  • Cómo proteger los datos a través del cifrado. Tenga en cuenta que AWS posiciona a S3 con un nivel de seguridad más alto que los datos almacenados en EC2. Mejores prácticas de seguridad de AWS, agosto de 2016, p. 27

Seguridad

AWS recomienda ver S3 como una plataforma segura:

A menos que tenga requisitos comerciales o de cumplimiento más estrictos, no necesita introducir capas de protección adicionales más allá de las que proporciona la infraestructura global segura de AWS. ibídem. p.2

En su guía de seguridad , AWS recomienda usar la autenticación AWS como adecuada para S3. ibídem. pag. 27

Además, S3 proporciona cifrado del lado del servidor o cifrado del lado del cliente. El cifrado del lado del cliente es proporcionado de manera transparente por el SDK de Java de AWS; Las claves no necesitan ser almacenadas en AWS. ibídem. pag. 28

Versiones

nombre de la versión descripción notas fecha de lanzamiento
Amazon S3 en 2016-12-13 Agrega Región de Londres notas 2016-12-13

Instalación de AWS CLI para acceder a S3

Instalando aws cli en Ubuntu / Debian Instance

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

Instalando aws cli usando python

Usando pip puedes 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 las opciones que usa 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

Creando Cucharones

Utilice el comando aws s3 mb para crear un nuevo grupo. Los nombres de los cubos 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

Quitando cubos

Para eliminar un depósito, use el comando aws s3 rb. Por defecto, el depósito debe estar vacío.

aws s3 rb s3://bucket-name

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

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

Listado de Cucharones

Para enumerar todos los grupos o sus contenidos, use el comando aws s3 ls

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

El siguiente comando enumera los objetos en nombre-cubo / ruta

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

Sincronizar archivos entre el sistema de archivos local y S3

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

Subirá 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 .

Lista de comandos de AWS CLI S3

Lista de los comandos de S3 AWS CLI utilizados comúnmente

Crear cubo

aws s3 mb s3://bucket-name

Quitar el cubo

aws s3 rb s3://bucket-name

Listar cubos

aws s3 ls

Lista de contenidos dentro del cubo.

aws s3 ls s3://bucket-name

Listar cubo 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

Intente 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 - se elimina el archivo local

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

Sincronizar con la clase de almacenamiento de acceso infrecuente

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 / ruta a ./MyDirectory

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

Listar los contenidos de my-bucket

aws s3 ls s3://my-bucket

Listar los contenidos 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 todos sus contenidos

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

Ejemplo de Hello World usando Java

Este ejemplo intenta crear un grupo llamado 'hello-world' y, como el grupo hello-world ya ha sido creado por otra persona en el espacio de nombres global de S3, lanza la siguiente excepción. Cambie 'hola mundo' a otra cosa para evitar la excepción creando un cubo con un nombre único. El nuevo grupo así creado se puede eliminar utilizando la consola de AWS

Excepción en el subproceso "main" com.amazonaws.services.s3.model.AmazonS3Exception: el nombre del grupo solicitado no está disponible. El espacio de nombres de la cubeta es compartido por todos los usuarios del sistema. Por favor, seleccione un nombre diferente y vuelva a intentarlo. (Servicio: Amazon S3; Código de estado: 409; Código de error: BucketAlreadyExists; 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:

Hola mundo usando PowerShell

Este ejemplo espera un error, ya que el cubo de 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 de la cubeta es compartido por todos los usuarios del sistema. Por favor, seleccione un nombre diferente y vuelva a intentarlo.

Si reemplaza hello-world con algo más que es único, el grupo se creará sin error y obtendrá el siguiente resultado:

    CreationDate                                      BucketName
    ------------                                      ----------
    3/30/2017 11:43:03 PM                             hello-world-832jklsdJF

Este ejemplo requiere las siguientes dependencias:



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow