Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Amazon S3
Code

Programando Con Yii2: Usando Amazon S3

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Google Authentication
Programming With Yii2: Routing and URL Creation

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Final product image
What You'll Be Creating

Si te estás preguntando, "¿Qué es Yii?" revisa mi tutorial previo Introducción al Framework Yii, el cuál revisa los beneficios de Yii e incluye un vistazo a qué hay de nuevo en Yii 2.0, liberado en Octubre de 2014.

En esta serie de Programando Con Yii2, estoy guiando a los lectores en el uso del Framework Yii2 para PHP. En el tutorial de hoy, te guiaré a través de los básicos de navegar, subir y descargar archivos a y desde el servicio de almacenamiento basado en la nube Amazon S3. Esencialmente, he creado un modelo de almacenamiento simple y ejemplos de controlador que puedes extender para tus necesidades.

Solo un recordatorio, participo en la sección de comentarios de abajo. Estoy especialmente interesado si tienes diferentes aproximacimaciones, ideas adicionales o quieres sugerir temas para futuros tutoriales. Si tienes una pregunta o sugerencia de tema, por favor publícala abajo. También puedes contactarme directamente en Twitter @reifman.

¿Qué es Amazon S3?

Amazon S3 proporciona almacenamiento basado en la nube fácil de utilizar para objetos y archivos. Ofrece el 99.99% de disponibilidad y 99.999999999% de durabilidad de objetos.

Ofrece una variedad de características para uso simple y avanzado. Es comunmente usado como el componente de almacenamiento para el servicio CDN de Amazon CloudFront, pero estos son distintos y pueden ser usados de independientemente uno de otro.

También puedes usar S3 para migrar archivos a través del tiempo para archivar en Amazon Glacier, para ahorros adicionales de costos.

Como la mayoría de los AWS, operas S3 vía APIs, y hoy, voy a guiarte a través de navegar, subir y descargar archivos desde S3 con Yii.

Comenzando

Para ejecutar el código de demostración, necesitarás tu propia cuenta AWS y llaves de acceso. Puedes navegar tu árbol S3 desde la consola AWS mostrada abajo:

Yii AWS S3 - AWS Console Menu

S3 consiste de cubetas que contienen numerosos directorios y archivos dentro de ellas. Desde que usé AWS como un CDNm mi árbol WordPress permanece en mi vieja cubeta. También puedes navegar tu cubeta:

Yii AWS S3 - Buckets

Mientras atravieso el árbol de objetos, aquí hay una vista más profunda de los contenidos de mi cubeta:

Yii AWS S3 - Objects Folders and Files

Programando con S3

De nuevo, construiré en el árbol hello desde GitHub para nuestro código de demostración (mira el enlace en esta página) Está derivado de Yii2 basic.

Obteniedo Tus Llaves de Acceso

Necesitarás llaves de acceso para la API AWS S3 si no es que ya las tienes. Si no, puedes obtenerlas navegando a Credenciales de Seguridad y creando un nuevo par:

Yii AWS S3 - Security Credentials and Access Keys

Para el código de nuestra demostración, necesitarás colocarlas en tu archivo hello.ini con otras llaves y códigos seguros:

Instalando la extensión Yii para AWS

Para este tutorial, usaremos la extensión AWS de Federico Motta para Yii2. El es definitivamente el programador Yii más jóven del cuál he usado código para un tutorial Envato Tuts+:

Yii AWS S3 - AWS SDK Extension for Yii2 on Github

¿No es asombroso lo rápido que los chicos están entrando a la programación estos días?

Aquí está el proceso de instalación usando composer:

Posteriormente, también instalé las dos librerías que sugiere, pero no instalé todas las sugerencias de siguiente nivel para mi máquina de desarrollo local:

También registré el componente awssdk dentro de hello/config/web.php:

Navegando Mis Directorios S3

Para la demostración de hoy, creé un hello/controllers/StorageController.php con métodos de acción para ejecutar cada muestra, tal como http://localhost:8888/hello/storage/browse para navegar directorios.

Estos métodos llaman en turno al modelo Storage.php que creé con sus propios métodos.

Aquí está el código del controlador:

Este requiere que el modelo Storage alcance las nubes en el "S3ky" y navegar el directorio manual.

Cada vez que el modelo Storage.php es instanciado, este carga la extensión AWS SDK y crea una instancia S3:

En mi ejemplo de navegación, solo estoy haciendo echo de directorios y archivos, pero siéntete libre de personalizar este código como necesites:

Aquí están los resultados cuando navego a http://localhost:8888/hello/storage/browse:

Yii AWS S3 - Browse S3 Objects a listing of directories and files

Subiendo Archivos

Para subir un archivo, necesitas especificar la ruta local y la llave de destino remoto. Aquí está el código del controlador para la carga:

Y aquí está el método del modelo Storage:

Navegando a http://localhost:8888/hello/storage/upload muestra la URL de regreso desde la cuál puedo ver el archivo subido, porque especifiqué public-read en mi código de arriba:

Yii AWS S3 - Results of Upload method - a URL to the new file

En turno, navegar a la dirección S3 de arriba muestra los contenidos del archivo subido:

Descargando Archivos

Aquí está el código del controlador para descargar un archivo:

Ya que el navegador responde al content-type, debería mostrar la imagen apropiada, la cuál estoy pidiendo aquí.

Nota: Estoy descargando una imagen de portada de mi experiencia casándose con una corporación llamada Corporate Person a una mujer (sí, en realidad pasó). El matrimonio no funcionó a largo plazo.

Aquí está el código del modelo Storage para descargar:

Aquí esá lo que ves cuando el archivo es transmitido al navegador--esa es la novia celebrando el matrimonio con Corporate Person (estoy sonriendo en el fondo, misión cumplida).

Yii AWS S3 - Marriage Scene with Woman and Marriage License

Ciertamente, podrías solo almacenar los resultados en tu servidor en un archivo. Depende de ti. Te aliento a que juegues con el código y lo personalizes según necesites.

¿Qué Sigue?

Espero que esto te ayude con los básicos de usar AWS S3 desde tu aplicación Yii.

Si te gusta el concepto de objeto y almacenamiento basado en la nube pero quieres encontrar otros proveedores , revisa Alternativas a Amazon AWS. Me he estado alejando gradualmente de AWS por un número de razones mencionadas en el artículo. Una de mis siguientes tareas es migrar mis objetos S3 que aún están parcialmente en uso en mi propio servidor, el cuál puedo espejear con KeyCDN.

Espera tutoriales por venir en nuestra serie Programando Con Yii2 mientras continuamos sumergiéndonos en diferentes aspectos del framework. También querrás revisar nuestra serie Construyendo Tu Startup Con PHP el cuál está usando la plantilla avanzada de Yii2 mientras construimos una aplicación del mundo real. La aplicación Planificador de Reuniones en la serie startup está ahora lista para usar, y está toda construida en Yii.

Si te gustaría saber cuando llega el siguiente tutorial Yii2, sígueme en @reifman en Twitter o revisa mi página de instructor.

Enlaces Relacionados

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.