amazon-s3 Tutorial
Empezando con amazon-s3
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:
- Java instalado con la consola funcionando.
- AWS Java SDK instalado. https://aws.amazon.com/sdk-for-java/
- Las credenciales del archivo de
credentials
se configuran en .aws en su directorio principal. https://aws.amazon.com/developers/getting-started/java/ - Credencial para tener derechos de administrador o 'crear cazo' 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 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:
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 administrar esto usando PowerShell. A continuación se muestra un ejemplo simple para la 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