{"id":28789,"date":"2021-06-01T12:02:00","date_gmt":"2021-06-01T09:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28789"},"modified":"2021-10-17T16:32:34","modified_gmt":"2021-10-17T13:32:34","slug":"cargar-archivos-en-amazon-s3-mediante-aws-php-sdk","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/cargar-archivos-en-amazon-s3-mediante-aws-php-sdk\/","title":{"rendered":"Cargar archivos en Amazon S3 mediante AWS PHP SDK"},"content":{"rendered":"<p>\u00bfDesea cargar archivos a Amazon S3 mediante programaci\u00f3n? Amazon S3 es un servicio de almacenamiento en la nube donde se pueden almacenar archivos, im\u00e1genes, etc. Estos documentos pueden ser p\u00fablicos o privados seg\u00fan la elecci\u00f3n del propietario. En este art\u00edculo, estudiamos c\u00f3mo cargar archivos en Amazon S3 utilizando la biblioteca oficial de AWS PHP SDK.<\/p>\n<p>Amazon S3 proporciona almacenamiento de objetos de gran escalabilidad. Debido a su robustez y rendimiento, es un servicio en la nube popular entre los usuarios.<\/p>\n<h3>\u00bfPor qu\u00e9 es necesario cargar archivos en Amazon S3?<\/h3>\n<p>Bueno, hay varias razones para mantener sus archivos en Amazon S3. Como es un servicio basado en la nube, puede acceder a sus archivos desde cualquier lugar. Al utilizar este servicio, los usuarios pueden mantener la confidencialidad de sus documentos. AWS le proporciona una funci\u00f3n para mantener su documento p\u00fablico o privado. En segundo lugar, si est\u00e1 ejecutando un sitio web, mantener sus archivos en la nube le ahorrar\u00e1 mucho ancho de banda. Ahorra espacio de alojamiento y reduce las cargas en su servidor.<\/p>\n<p>Dicho esto, echemos un vistazo a c\u00f3mo cargar archivos en Amazon S3 usando PHP.<\/p>\n<h3>Obtenga sus credenciales de seguridad<\/h3>\n<p>Para comenzar con S3, debe tener una cuenta en <a href=\"https:\/\/aws.amazon.com\/s3\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS<\/a>. Despu\u00e9s de crear la cuenta de AWS, aseg\u00farese de activar el servicio S3 siguiendo su proceso de verificaci\u00f3n.<\/p>\n<p>Al activar el servicio S3, obtenga sus credenciales de seguridad que necesitaremos mientras trabajamos con las API.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20389-6081ea50ea555.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20389-6081ea50ea555.png\" alt=\"Cargar archivos en Amazon S3 mediante AWS PHP SDK\" ><\/a><\/p>\n<h3>C\u00f3digo para cargar archivos a Amazon S3<\/h3>\n<p>Estamos listos con las claves API de AWS. A continuaci\u00f3n, instale una biblioteca oficial de <a href=\"https:\/\/github.com\/aws\/aws-sdk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS PHP SDK<\/a> en su proyecto. Recomiendo usar <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> para instalar esta biblioteca. Abra la terminal en el directorio ra\u00edz de su proyecto y ejecute el siguiente comando.<\/p>\n<pre><code>composer require aws\/aws-sdk-php<\/code><\/pre>\n<p>Este comando instalar\u00e1 la biblioteca con sus dependencias en su proyecto.<\/p>\n<h4>Crear un dep\u00f3sito en AWS<\/h4>\n<p>En AWS, necesitamos crear un Bucket para almacenar nuestros archivos. El dep\u00f3sito no es m\u00e1s que una unidad l\u00f3gica de almacenamiento en AWS. Todos sus archivos se almacenar\u00e1n dentro del dep\u00f3sito.<\/p>\n<p>Puede crear un dep\u00f3sito en el panel de S3 directamente. Pero si alguien est\u00e1 buscando crearlo din\u00e1micamente, consulte el c\u00f3digo a continuaci\u00f3n.<\/p>\n<p><strong>create-bucket.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\nuse AwsS3S3Client;\n\u00a0\n$bucketName = 'YOUR_BUCKET_NAME';\n\u00a0\n$client = new S3Client([\n\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0'region' =&gt; 'YOUR_AWS_REGION',\n\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; 'ACCESS_KEY_ID',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; 'SECRET_ACCESS_KEY'\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$result = $client-&gt;createBucket([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName, \/\/ REQUIRED\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0echo \"Bucket created successfully.\";\n} catch (AwsS3ExceptionS3Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ output error message if fails\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Aseg\u00farese de reemplazar los marcadores de posici\u00f3n con los valores reales. Este c\u00f3digo crea un dep\u00f3sito en su panel de S3. Subiremos los archivos de este dep\u00f3sito a trav\u00e9s de la API.<\/p>\n<p>En el c\u00f3digo anterior pas\u00e9 el par clave =&gt; valor como <code>'ACL' =&gt; 'public-read'<\/code>. Este par establece el acceso p\u00fablico a su dep\u00f3sito o archivos. Si desea mantener su almacenamiento privado, elimine esta l\u00ednea del c\u00f3digo.<\/p>\n<p>El siguiente trabajo es escribir c\u00f3digo para cargar archivos en Amazon S3. Por el bien del tutorial, estoy creando diferentes archivos PHP y escribiendo c\u00f3digo en ellos. En su caso, no dude en implementar la l\u00f3gica en funci\u00f3n del flujo de su proyecto.<\/p>\n<h4>Cargar archivo en Amazon S3<\/h4>\n<p>Est\u00e1 listo con el dep\u00f3sito para almacenar sus archivos. Cree un archivo <code>upload-to-s3.php<\/code>y coloque el siguiente c\u00f3digo en este archivo.<\/p>\n<p><strong>upload-to-s3.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse AwsS3S3Client;\n\u00a0\n\/\/ Instantiate an Amazon S3 client.\n$s3 = new S3Client([\n\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0'region'\u00a0 =&gt; 'YOUR_AWS_REGION',\n\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; 'ACCESS_KEY_ID',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; 'SECRET_ACCESS_KEY'\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n\u00a0\n$bucketName = 'YOUR_BUCKET_NAME';\n$file_Path = __DIR__. '\/my-image.png';\n$key = basename($file_Path);\n\u00a0\n\/\/ Upload a publicly accessible file. The file size and type are determined by the SDK.\ntry {\n\u00a0\u00a0\u00a0\u00a0$result = $s3-&gt;putObject([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Key'\u00a0\u00a0\u00a0 =&gt; $key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Body'\u00a0\u00a0 =&gt; fopen($file_Path, 'r'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0echo \"Image uploaded successfully. Image path is: \". $result-&gt;get('ObjectURL');\n} catch (AwsS3ExceptionS3Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo \"There was an error uploading the file.n\";\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Aqu\u00ed, debe asignar el nombre del dep\u00f3sito para la <code>$bucketName<\/code>variable. En mi caso, estoy cargando un archivo que diga &#8216;my-image.png&#8217;, la ruta que configur\u00e9 en el c\u00f3digo. En consecuencia, debe ajustar la ruta de sus archivos. Finalmente, estoy imprimiendo la ruta de un archivo cargado usando el <code>get()<\/code>m\u00e9todo en la respuesta recibida.<\/p>\n<p>\u00a1Todo listo! Ahora ejecute el <code>upload-to-s3.php<\/code>archivo en el navegador y su archivo deber\u00eda cargarse en el dep\u00f3sito de Amazon S3.<\/p>\n<p>Espero que comprenda c\u00f3mo crear un dep\u00f3sito y cargar archivos en Amazon S3. Tambi\u00e9n puede consultar los <a href=\"https:\/\/github.com\/awsdocs\/aws-doc-sdk-examples\/tree\/master\/php\/example_code\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">c\u00f3digos de ejemplo<\/a> proporcionados por AWS en GitHub.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-un-archivo-a-s3-usando-el-sistema-de-archivos-laravel\/\" title=\"C\u00f3mo cargar un archivo a S3 usando el sistema de archivos Laravel\">C\u00f3mo cargar un archivo a S3 usando el sistema de archivos Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-subir-imagenes-a-otro-servidor-a-traves-de-ftp-en-laravel\/\" title=\"C\u00f3mo subir im\u00e1genes a otro servidor a trav\u00e9s de FTP en Laravel\">C\u00f3mo subir im\u00e1genes a otro servidor a trav\u00e9s de FTP en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-integrar-la-api-de-google-sheets-con-php\/\" title=\"C\u00f3mo integrar la API de Google Sheets con PHP\">C\u00f3mo integrar la API de Google Sheets con PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este tutorial, le mostramos c\u00f3mo cargar archivos en Amazon S3 utilizando la biblioteca oficial del SDK de AWS PHK. Almacenar archivos en la nube le ahorrar\u00e1<\/p>\n","protected":false},"author":1,"featured_media":21664,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-28789","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28789"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28789\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21664"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}