{"id":21016421,"url":"https://github.com/josejuansanchez/aws-python-boto3","last_synced_at":"2026-04-28T13:07:09.514Z","repository":{"id":151991825,"uuid":"546943075","full_name":"josejuansanchez/aws-python-boto3","owner":"josejuansanchez","description":"Repositorio para hacer experimentos con Boto3 (AWS SDK for Python)","archived":false,"fork":false,"pushed_at":"2024-01-15T21:37:49.000Z","size":37,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-01T12:09:41.999Z","etag":null,"topics":["aws","boto3","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josejuansanchez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-06T22:45:40.000Z","updated_at":"2025-10-02T09:21:06.000Z","dependencies_parsed_at":"2025-03-13T16:46:29.440Z","dependency_job_id":"a435ce03-0795-4728-a464-1226dceed80d","html_url":"https://github.com/josejuansanchez/aws-python-boto3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/josejuansanchez/aws-python-boto3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josejuansanchez%2Faws-python-boto3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josejuansanchez%2Faws-python-boto3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josejuansanchez%2Faws-python-boto3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josejuansanchez%2Faws-python-boto3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josejuansanchez","download_url":"https://codeload.github.com/josejuansanchez/aws-python-boto3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josejuansanchez%2Faws-python-boto3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32381794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T11:25:28.583Z","status":"ssl_error","status_checked_at":"2026-04-28T11:25:05.435Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","boto3","python3"],"created_at":"2024-11-19T10:13:18.373Z","updated_at":"2026-04-28T13:07:09.475Z","avatar_url":"https://github.com/josejuansanchez.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aws-python-boto3\n\nEste repositorio ha sido creado como un recurso complementario para las prácticas de **Infraestructura como Código** del módulo de [Implantación de Aplicaciones Web][4] del **Ciclo Formativo de Grado Superior ASIR**.\n\n## ¿Qué es Boto3?\n\n[Boto3][1] es un SDK (_Software Development Kit_) de [Python][3] desarrollado por y para **Amazon Web Services (AWS)**. Este SDK permite a los desarrolladores interactuar con los servicios de AWS para crear y gestionar recursos como grupos de seguridad o instancias EC2, a través de aplicaciones escritas en [Python][3]. \n\n## Boto3 `resource` y `client`\n\n[Boto3][1] permite interactura con los servicios de AWS de dos formas diferentes:\n\n- `resource`: Devuelve una estructura de datos. Se puede considerar como una interfaz de alto nivel.\n\n```python\nclient = boto3.resource('ec2')\n```\n\n- `client`: Devuelve un JSON. Se puede considerar como una interfaz de bajo nivel.\n\n```python\nclient = boto3.client('ec2')\n```\n\n## Creación de un entorno virtual para instalar Boto3\n\n1. Creamos un entorno virtual.\n\n```\npython3 -m venv .venv\n```\n\n2. Activamos el entorno virtual.\n\n```\n. .venv/bin/activate\n```\n\n3. Instalamos el paquete [`boto3`][1].\n\n```\npython3 -m pip install boto3\n```\n\n## Configuramos las credenciales de AWS\n\n\nEditamos el archivo de credenciales de AWS que está en la ruta:\n\n```\n~/.aws/credentials\n```\n\nCopiamos nuestras credenciales, sustituyendo los valores de `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN`, por nuestros valores de [AWS Academy][2].\n\n```\n[default]\naws_access_key_id=AWS_ACCESS_KEY_ID\naws_secret_access_key=AWS_SECRET_ACCESS_KEY\naws_session_token=AWS_SESSION_TOKEN\n```\n\nEditamos el archivo de configuración de AWS, para indicar la región y el formato de salida de los comandos de AWS CLI.\n\nEl archivo de configuración de AWS está en la ruta:\n\n```\n~/.aws/config\n```\n\nEn nuestro caso, la región de [AWS Academy][2] es `us-east-1` y en el formato de salida utilizaremos `json`.\n\n```\n[default]\nregion = us-east-1\noutput = json\n```\n\n## Ejemplos\n\nLos ejemplos de este repositorio importan un paquete llamado `common` que contiene dos módulos donde se han implementado algunas funciones para interaccionar con los servicios de AWS.\n\nCada uno de los módulos utiliza un enfoque diferente, uno utiliza programación estructurada y el otro programación oriendata a objetos.\n\n- Paquete `commons`.\n  - `aws_resource_functions.py`. Módulo basado en programación estructurada.\n  - `aws_resource_class.py`. Módulo basado en programación orientada a objetos.\n\n- Ejemplos utilizando `boto3.resource` utilizando programación estructurada.\n  - [Ejemplo 01](ejemplos/ejemplo-01.py). Crear un grupo de seguridad.\n  - [Ejemplo 02](ejemplos/ejemplo-02.py). Eliminar un grupo de seguridad.\n  - [Ejemplo 03](ejemplos/ejemplo-03.py). Crear una instancia EC2.\n  - [Ejemplo 04](ejemplos/ejemplo-04.py). Eliminar una instancia EC2.\n  - [Ejemplo 05](ejemplos/ejemplo-05.py). Reservar una IP elástica y asociarla a una instancia EC2.\n  - [Ejemplo 06](ejemplos/ejemplo-06.py). Liberar una IP elástica.\n  - [Ejemplo 07](ejemplos/ejemplo-07.py). Menú con funcionalidades.\n\n- Ejemplos utilizando `boto3.resource` utilizando programación orientada a objetos.\n  - [Ejemplo 08](ejemplos/ejemplo-08.py). Crear un grupo de seguridad.\n  - [Ejemplo 09](ejemplos/ejemplo-09.py). Eliminar un grupo de seguridad.\n  - [Ejemplo 10](ejemplos/ejemplo-10.py). Crear una instancia EC2.\n  - [Ejemplo 11](ejemplos/ejemplo-11.py). Eliminar una instancia EC2.\n  - [Ejemplo 12](ejemplos/ejemplo-12.py). Reservar una IP elástica y asociarla a una instancia EC2.\n  - [Ejemplo 13](ejemplos/ejemplo-13.py). Liberar una IP elástica.\n  - [Ejemplo 14](ejemplos/ejemplo-14.py). Menú con funcionalidades.\n\n- Ejemplos utilizando `boto3.client`.\n  - [Ejemplo 15](ejemplos/ejemplo-15.py)\n\n## Ejercicios\n\n### Ejercicio 1\n\nEscriba un script de Python para crear un grupo de seguridad con el nombre `backend-sg`.\nAñada las siguientes reglas al grupo de seguridad:\n- Acceso SSH (puerto 22/TCP) desde cualquier dirección IP.\n- Acceso al puerto 3306/TCP desde cualquier dirección IP.\n\n### Ejercicio 2\n\nEscriba un script de Python para crear una instancia EC2 que tengas las siguientes características.\n- Identificador de la AMI: `ami-08e637cea2f053dfa`. Esta AMI se corresponde con la imagen Red Hat Enterprise Linux 9 (HVM).\n- Número de instancias: `1`\n- Tipo de instancia: `t2.micro`\n- Clave privada: `vockey`\n- Grupo de seguridad: `backend-sg`\n- Nombre de la instancia: `backend`\n\n### Ejercicio 3\n\n- Crea un script para crear la infraestructura de la práctica propuesta por el profesor.\n- Crea un script para eliminar la infraestructura de la práctica propuesta por el profesor.\n\n### Ejercicio 4\n\nModifique los ejemplos 7 y 14 de este repositorio que utilizan `boto3.resource`, para añadir una nuevas funcionalidades. Por ejemplo, a la hora de crear una nueva instancia EC2 el programa puede mostrar al usuario una lista de AMIs disponibles y una lista de tipos de instancia.\n\n## Referencias\n\n- [Documentación oficial de Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).\n- [Documentación de `SecurityGroup` en Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#securitygroup).\n- [Documentación de `Instance` en Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#instance).\n- [Boto 3: Resource vs Client](https://www.learnaws.org/2021/02/24/boto3-resource-client/). Learn AWS.\n- [Python examples on AWS (Amazon Web Services) using AWS SDK for Python (Boto3)](https://github.com/alfonsof/aws-python-examples). Alfonso Fernandez-Barandiaran.\n\n[1]: https://aws.amazon.com/es/sdk-for-python/\n[2]: https://aws.amazon.com/es/training/awsacademy/\n[3]: https://www.python.org/\n[4]: https://josejuansanchez.org/iaw/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosejuansanchez%2Faws-python-boto3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosejuansanchez%2Faws-python-boto3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosejuansanchez%2Faws-python-boto3/lists"}