{"id":5174,"date":"2023-02-21T19:33:06","date_gmt":"2023-02-21T18:33:06","guid":{"rendered":"http:\/\/bounsel.com\/?p=5174"},"modified":"2024-03-12T10:31:07","modified_gmt":"2024-03-12T08:31:07","slug":"aws-s3-python","status":"publish","type":"post","link":"https:\/\/www.bounsel.com\/es\/blog\/aws-s3-python\/","title":{"rendered":"\u00bfC\u00f3mo conectar AWS S3 a Python?"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-blend:overlay;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p><span style=\"font-weight: 400;\"><\/p>\n<\/div><div class=\"awb-toc-el awb-toc-el--1\" data-awb-toc-id=\"1\" data-awb-toc-options=\"{&quot;allowed_heading_tags&quot;:{&quot;h2&quot;:0,&quot;h3&quot;:1,&quot;h4&quot;:2},&quot;ignore_headings&quot;:&quot;&quot;,&quot;ignore_headings_words&quot;:&quot;&quot;,&quot;enable_cache&quot;:&quot;yes&quot;,&quot;highlight_current_heading&quot;:&quot;yes&quot;,&quot;hide_hidden_titles&quot;:&quot;yes&quot;,&quot;limit_container&quot;:&quot;all&quot;,&quot;select_custom_headings&quot;:&quot;&quot;,&quot;icon&quot;:&quot;fa-flag fas&quot;,&quot;counter_type&quot;:&quot;decimal&quot;}\" style=\"--awb-margin-top:16px;--awb-margin-bottom:16px;--awb-item-font-size:var(--awb-typography4-font-size);--awb-item-line-height:var(--awb-typography4-line-height);--awb-item-letter-spacing:var(--awb-typography4-letter-spacing);--awb-item-text-transform:var(--awb-typography4-text-transform);--awb-counter-color:var(--awb-color5);--awb-list-indent:16px;--awb-item-padding-top:4px;--awb-item-padding-right:12px;--awb-item-padding-bottom:4px;--awb-item-padding-left:12px;--awb-item-radius-top-left:6px;--awb-item-radius-top-right:6px;--awb-item-radius-bottom-right:6px;--awb-item-radius-bottom-left:6px;--awb-item-font-family:var(--awb-typography4-font-family);--awb-item-font-weight:var(--awb-typography4-font-weight);--awb-item-font-style:var(--awb-typography4-font-style);--awb-counter-type:counters(awb-toc, &quot;.&quot;, decimal) &quot;. &quot;;--awb-item-overflow:hidden;--awb-item-white-space:nowrap;--awb-item-text-overflow:ellipsis;\"><div class=\"awb-toc-el__content\"><ul class=\"awb-toc-el__list awb-toc-el__list--0\"><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Que_es_AWS\">\u00bfQu\u00e9 es AWS?<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Instalacion\">Instalaci\u00f3n<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Configuracion\">Configuraci\u00f3n<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Cliente_vs_Recurso\">Cliente vs Recurso<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Operaciones_comunes\">Operaciones comunes<\/a><ul class=\"awb-toc-el__list awb-toc-el__list--1\"><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Crear_un_bucket\">Crear un bucket:<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Eliminar_un_bucket_con_ficheros\">Eliminar un bucket con ficheros:<\/a><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Subir_archivos\">Subir archivos:<\/a><\/li><\/ul><\/li><li class=\"awb-toc-el__list-item\"><a class=\"awb-toc-el__item-anchor\" href=\"#toc_Conclusion\">Conclusi\u00f3n<\/a><\/li><\/ul><\/div><\/div><div class=\"fusion-text fusion-text-2\"><p><\/span><\/p>\n<h2>\u00bfQu\u00e9 es AWS?<\/h2>\n<p>AWS es un proveedor de servicios en la nube cuyo objetivo es proporcionar almacenamiento, recursos de computaci\u00f3n, aplicaciones m\u00f3viles, bases de datos y m\u00e1s funcionalidades relacionadas con la computaci\u00f3n en la nube. Pero, \u00bfqu\u00e9 es la computaci\u00f3n en nube?\u00a0<strong>La computaci\u00f3n en la nube permite acceder a un gran volumen de informaci\u00f3n relacionada con la actividad de una empresa sin invertir en una infraestructura para acceder y disponer de ella.\u00a0<\/strong>El ahorro en hardware, software, seguridad, soporte, mantenimiento, etc. es realmente significativo.<\/p>\n<p>Uno de sus componentes b\u00e1sicos es AWS S3, el servicio de almacenamiento de objetos que ofrece AWS. Su impresionante accesibilidad y durabilidad lo han convertido en una referencia para almacenar v\u00eddeos, im\u00e1genes y datos. Puedes combinar S3 con otros servicios para crear aplicaciones infinitamente escalables.<\/p>\n<p><a href=\"https:\/\/bounsel.app\/signup?utm_source=google&amp;utm_medium=organic&amp;utm_campaign=%C2%BFC%C3%B3mo+conectar+AWS+S3+a+Python%3F&amp;utm_term=boton+1\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"lazyload alignnone wp-image-12829 size-full\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%272184%27%20height%3D%27547%27%20viewBox%3D%270%200%202184%20547%27%3E%3Crect%20width%3D%272184%27%20height%3D%27547%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/bounsel.com\/wp-content\/uploads\/2023\/03\/Bounsel-Flow-2-ESP.jpg\" alt=\"AWS\" width=\"2184\" height=\"547\" \/><\/a><\/p>\n<p>En concreto, Boto3 permite interactuar con Amazon Web Services, pero \u00bfqu\u00e9 es Boto3? Aqu\u00ed, la referencia oficial de Amazon sobre su SDK (Software development kit):<\/p>\n<p><strong>El SDK de AWS para Python (Boto3) proporciona una API de Python para los servicios de infraestructura de AWS.<\/strong>\u00a0<strong>Al usar el SDK para Python, puedes construir aplicaciones sobre Amazon S3, Amazon EC2, Amazon DynamoDB, y m\u00e1s.<\/strong><\/p>\n<p>Esto es solo un breve resumen de AWS y su SDK en Python para crear, actualizar y eliminar directamente los recursos de AWS desde tus scripts de Python. Hoy voy a explicar los conceptos b\u00e1sicos sobre AWS SDK centr\u00e1ndome en la gesti\u00f3n del bucket de S3:<\/p>\n<ul role=\"list\">\n<li>Instalaci\u00f3n.<\/li>\n<li>Configuraci\u00f3n.<\/li>\n<li>Cliente vs Recurso (Tipo de conexi\u00f3n).<\/li>\n<li>Operaciones comunes.<\/li>\n<li>Gesti\u00f3n de archivos.<\/li>\n<\/ul>\n<h2>Instalaci\u00f3n<\/h2>\n<p>Instala la \u00faltima versi\u00f3n de Boto3 empleando pip:<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef61f55792e171e1d86063_aws-s3-python-1.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27964%27%20height%3D%27120%27%20viewBox%3D%270%200%20964%20120%27%3E%3Crect%20width%3D%27964%27%20height%3D%27120%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef61f55792e171e1d86063_aws-s3-python-1.png\" alt=\"\" width=\"964\" height=\"120\" \/><\/a><\/div>\n<\/figure>\n<p>\u200d<\/p>\n<h2>Configuraci\u00f3n<\/h2>\n<p>Antes de empezar a utilizar Boto3, debes configurar las credenciales de autenticaci\u00f3n. Si ya tienes un usuario IAM que tiene acceso completo a S3, puedes utilizar esas credenciales de usuario (tu clave de acceso y tu clave de acceso secreta) sin necesidad de crear un nuevo usuario. Si no, puedes crear un nuevo usuario s\u00f3lo con la pol\u00edtica AmazonS3FullAccess y luego almacenar las nuevas credenciales.<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef6206859961c0d67ad7a4_aws-s3-python-2-min.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27962%27%20height%3D%27518%27%20viewBox%3D%270%200%20962%20518%27%3E%3Crect%20width%3D%27962%27%20height%3D%27518%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef6206859961c0d67ad7a4_aws-s3-python-2-min.png\" alt=\"\" width=\"962\" height=\"518\" \/><\/a><\/div>\n<\/figure>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef627e85996146eb7b37ef_aws-s3-python-3-min.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271002%27%20height%3D%27614%27%20viewBox%3D%270%200%201002%20614%27%3E%3Crect%20width%3D%271002%27%20height%3D%27614%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef627e85996146eb7b37ef_aws-s3-python-3-min.png\" alt=\"\" width=\"1002\" height=\"614\" \/><\/a><\/div>\n<\/figure>\n<p>\u200d<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef628aa45bb1552c78030e_aws-s3-python-4-min.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27994%27%20height%3D%27568%27%20viewBox%3D%270%200%20994%20568%27%3E%3Crect%20width%3D%27994%27%20height%3D%27568%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef628aa45bb1552c78030e_aws-s3-python-4-min.png\" alt=\"\" width=\"994\" height=\"568\" \/><\/a><\/div>\n<\/figure>\n<p>\u200d<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef62957c56bc845638d1e5_aws-s3-python-5-min.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27988%27%20height%3D%27458%27%20viewBox%3D%270%200%20988%20458%27%3E%3Crect%20width%3D%27988%27%20height%3D%27458%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef62957c56bc845638d1e5_aws-s3-python-5-min.png\" alt=\"\" width=\"988\" height=\"458\" \/><\/a><\/div>\n<\/figure>\n<p>Esta pantalla mostrar\u00e1 las credenciales generadas por el usuario. Haz click en el bot\u00f3n Download.csv para hacer una copia de las credenciales.<\/p>\n<p>Ahora que tienes tu nuevo usuario, necesitas crear un nuevo archivo, ~\/.aws\/credentials:<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef62d127a6fb12d1346e50_aws-s3-python-6.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27960%27%20height%3D%27116%27%20viewBox%3D%270%200%20960%20116%27%3E%3Crect%20width%3D%27960%27%20height%3D%27116%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef62d127a6fb12d1346e50_aws-s3-python-6.png\" alt=\"\" width=\"960\" height=\"116\" \/><\/a><\/div>\n<\/figure>\n<p>Abre el archivo y pegue las credenciales que acaba de descargar con la estructura siguiente, rellenando los marcadores de posici\u00f3n:<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef6329cd02443cb62b5da4_aws-s3-python-7.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27964%27%20height%3D%27118%27%20viewBox%3D%270%200%20964%20118%27%3E%3Crect%20width%3D%27964%27%20height%3D%27118%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef6329cd02443cb62b5da4_aws-s3-python-7.png\" alt=\"\" width=\"964\" height=\"118\" \/><\/a><\/div>\n<\/figure>\n<p>Guarda el archivo.<\/p>\n<p>Ahora que has configurado estas credenciales, tienes un perfil predeterminado que Boto3 utilizar\u00e1 para interactuar con tu cuenta de AWS.<\/p>\n<p>Hay una configuraci\u00f3n m\u00e1s que establecer: la regi\u00f3n por defecto con la que Boto3 debe interactuar. (AWS Service Endpoint). Elige la regi\u00f3n que prefieras, por ejemplo eu-west-1 (Irlanda).<\/p>\n<p>Crea un nuevo archivo, ~\/.aws\/config y rell\u00e9nalo con esta estructura.<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef634a5aff611b92b84f1d_aws-s3-python-8.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27958%27%20height%3D%27116%27%20viewBox%3D%270%200%20958%20116%27%3E%3Crect%20width%3D%27958%27%20height%3D%27116%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef634a5aff611b92b84f1d_aws-s3-python-8.png\" alt=\"\" width=\"958\" height=\"116\" \/><\/a><\/div>\n<\/figure>\n<p>Guarda el archivo. Ahora estamos listos para el resto de este tutorial.<\/p>\n<p>A continuaci\u00f3n, ver\u00e1s las diferentes opciones que te da Boto3 para conectarte a S3 y otros servicios de AWS.<\/p>\n<p><a href=\"https:\/\/bounsel.app\/signup?utm_source=google&amp;utm_medium=organic&amp;utm_campaign=%C2%BFC%C3%B3mo+conectar+AWS+S3+a+Python%3F&amp;utm_term=boton+2\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"lazyload alignnone wp-image-12831 size-full\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%272184%27%20height%3D%27547%27%20viewBox%3D%270%200%202184%20547%27%3E%3Crect%20width%3D%272184%27%20height%3D%27547%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/bounsel.com\/wp-content\/uploads\/2023\/03\/Bounsel-Flow-1-ESP.jpg\" alt=\"AWS\" width=\"2184\" height=\"547\" \/><\/a><\/p>\n<h2>Cliente vs Recurso<\/h2>\n<p>En esencia, todo lo que hace Boto3 es llamar a la API de AWS en tu nombre. Para la mayor\u00eda de los servicios de AWS, Boto3 ofrece dos formas distintas de acceder a estas API abstractas:<\/p>\n<ul role=\"list\">\n<li>Cliente: acceso a servicios de bajo nivel.<\/li>\n<li>Recurso: acceso al servicio orientado a objetos de nivel superior.<\/li>\n<\/ul>\n<p>Puedes utilizar cualquiera de las dos para interactuar con S3.<\/p>\n<p>Para conectarse a la interfaz de cliente de bajo nivel, se debe utilizar la funci\u00f3n client() de Boto3. A continuaci\u00f3n, introduce el nombre del servicio al que quieres conectarte, en este caso, s3:<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef639462dedb11720dd7e2_aws-s3-python-9.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27958%27%20height%3D%27114%27%20viewBox%3D%270%200%20958%20114%27%3E%3Crect%20width%3D%27958%27%20height%3D%27114%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef639462dedb11720dd7e2_aws-s3-python-9.png\" alt=\"\" width=\"958\" height=\"114\" \/><\/a><\/div>\n<\/figure>\n<p>Para conectarse a la interfaz de alto nivel, se sigue un enfoque similar, pero utilizando resource():<\/p>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63a827a6fb6c5534ebc3_aws-s3-python-10.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27958%27%20height%3D%27116%27%20viewBox%3D%270%200%20958%20116%27%3E%3Crect%20width%3D%27958%27%20height%3D%27116%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63a827a6fb6c5534ebc3_aws-s3-python-10.png\" alt=\"\" width=\"958\" height=\"116\" \/><\/a><\/div>\n<\/figure>\n<p>Tras conectarte con \u00e9xito a ambas versiones, te estar\u00e1s preguntando: \u00ab\u00bfCu\u00e1l debo usar?\u00bb.<\/p>\n<p>Con los clientes, hay m\u00e1s trabajo de programaci\u00f3n que hacer. La mayor\u00eda de las operaciones de cliente te dan una respuesta en forma de diccionario. Para obtener la informaci\u00f3n exacta que necesitas, tendr\u00e1s que analizar ese diccionario por ti mismo. Con los m\u00e9todos de recursos, el SDK hace ese trabajo por ti.<\/p>\n<p>Con el cliente, es posible que veas algunas ligeras mejoras de rendimiento. La desventaja es que tu c\u00f3digo se vuelve menos legible de lo que ser\u00eda si estuvieras usando el recurso. Los recursos ofrecen una mejor abstracci\u00f3n, y tu c\u00f3digo ser\u00e1 m\u00e1s f\u00e1cil de comprender.<\/p>\n<p>Comprender c\u00f3mo se generan el cliente y el recurso tambi\u00e9n es importante a la hora de considerar cu\u00e1l elegir:<\/p>\n<ul role=\"list\">\n<li>Boto3 genera el cliente a partir de un archivo de definici\u00f3n de servicio JSON. Los m\u00e9todos del cliente admiten todos los tipos de interacci\u00f3n con el servicio de AWS de destino.<\/li>\n<\/ul>\n<ul role=\"list\">\n<li>Los recursos, por otro lado, se generan a partir de archivos de definici\u00f3n de recursos JSON.<\/li>\n<\/ul>\n<p>Boto3 genera el cliente y el recurso a partir de definiciones diferentes. Como resultado, puedes encontrar casos en los que una operaci\u00f3n soportada por el cliente no sea ofrecida por el recurso. Aqu\u00ed est\u00e1 la parte interesante: no necesitas cambiar tu c\u00f3digo para usar el cliente en todas partes. Para esa operaci\u00f3n, puede acceder al cliente directamente a trav\u00e9s del recurso de la siguiente manera: s3_resource.meta.client.<\/p>\n<p>Una de estas operaciones de cliente es .generate_presigned_url(), que te permite dar a tus usuarios acceso a un objeto dentro de tu bucket durante un periodo de tiempo determinado, sin necesidad de que tengan credenciales de AWS.<\/p>\n<h2>Operaciones comunes<\/h2>\n<p>En esta secci\u00f3n adjuntamos los fragmentos de c\u00f3digo que nos ayudar\u00e1n a realizar diferentes operaciones con AWS S3:<\/p>\n<h3>Crear un bucket:<\/h3>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63d21fbf006f49cd9600_aws-s3-python-11.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27956%27%20height%3D%27336%27%20viewBox%3D%270%200%20956%20336%27%3E%3Crect%20width%3D%27956%27%20height%3D%27336%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63d21fbf006f49cd9600_aws-s3-python-11.png\" alt=\"\" width=\"956\" height=\"336\" \/><\/a><\/div>\n<\/figure>\n<h3>Eliminar un bucket con ficheros:<\/h3>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63e3db5a57973338dfa7_aws-s3-python-12.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27954%27%20height%3D%27270%27%20viewBox%3D%270%200%20954%20270%27%3E%3Crect%20width%3D%27954%27%20height%3D%27270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63e3db5a57973338dfa7_aws-s3-python-12.png\" alt=\"\" width=\"954\" height=\"270\" \/><\/a><\/div>\n<\/figure>\n<h3>Subir archivos:<\/h3>\n<figure class=\"w-richtext-figure-type-image w-richtext-align-fullwidth\">\n<div><a href=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63f262dedbe5830e18ee_aws-s3-python-13.png\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"lazyload alignnone\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27962%27%20height%3D%27116%27%20viewBox%3D%270%200%20962%20116%27%3E%3Crect%20width%3D%27962%27%20height%3D%27116%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/uploads-ssl.webflow.com\/61deb8eb918b0855f0c514f4\/63ef63f262dedbe5830e18ee_aws-s3-python-13.png\" alt=\"\" width=\"962\" height=\"116\" \/><\/a><\/div>\n<\/figure>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Espero que tras leer este art\u00edculo te resulte f\u00e1cil adentrarte en la API Python de boto3, realizar tu primera conexi\u00f3n a la infraestructura de computaci\u00f3n en la nube de AWS y sacar provecho de su sistema de almacenamiento. Aqu\u00ed, en\u00a0<a href=\"https:\/\/www.bounsel.com\/es\/producto\/bounsel-flow\/\" target=\"_blank\" rel=\"noopener\">Bounsel<\/a>, utilizamos boto3 para conectar con la infraestructura de AWS y explotar sus capacidades. En particular, explotamos los buckets S3 de AWS para el almacenamiento masivo de documentos jur\u00eddicos, y tambi\u00e9n sus recursos de computaci\u00f3n en la nube (como Cloud9) para entrenar a la m\u00e1xima velocidad modelos de Inteligencia Artificial para ofrecerte funcionalidades incre\u00edbles, como el\u00a0<a href=\"https:\/\/www.bounsel.com\/es\/blog\/reconocimiento-entidades-nombradas-ner\/\" target=\"_blank\" rel=\"noopener\">reconocimiento de entidades nombradas.<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hoy te toca conocer a Brenda, nuestra nueva integrante se une al equipo de Dise\u00f1o Gr\u00e1fico para maximizar todo el potencial de nuestra marca.<\/p>\n","protected":false},"author":11,"featured_media":5177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[95],"tags":[],"class_list":["post-5174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-futureofwork-es"],"_links":{"self":[{"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/posts\/5174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/comments?post=5174"}],"version-history":[{"count":2,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/posts\/5174\/revisions"}],"predecessor-version":[{"id":24160,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/posts\/5174\/revisions\/24160"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/media\/5177"}],"wp:attachment":[{"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/media?parent=5174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/categories?post=5174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bounsel.com\/es\/wp-json\/wp\/v2\/tags?post=5174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}