Datos y aplicaciones

Repaso sesión 3 Open In Colab

2 - AWS

Amazon Web Services - Recursos para el curso de Python para IoT

2.1 - AWS CLI

Instalación del cliente de AWS

Documentación

  • hhttps://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html

Qué es

El AWS CLI es una herramienta unificada para administrar sus servicios de AWS. Con él, puede controlar múltiples servicios de AWS desde la línea de comandos y automatizarlos a través de scripts.

Instalación

Sigue las instrucciones de tu sistema operativo https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

También puedes instalarlo con pip

$ pip install awscli --upgrade --user

Configuración

Ejecuta el comando aws configure y sigue las instrucciones o crea el archivo de configuración manualmente.

Copia las credenciales que te da el lab (AWS Deails > AWS CLI > Show) en

  • Linus y Max: ~/.aws/credentials
  • Windows: C:\Users\USERNAME\.aws\credentials

Ejemplos de Uso Comunes

EC2

  • Listar todas las instancias EC2 en una región

    aws ec2 describe-instances
    
  • Iniciar una instancia EC2

    aws ec2 start-instances --instance-ids i-1234567890abcdef0
    
  • Detener una instancia EC2

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    

S3

  • Listar todos los buckets

    aws s3 ls
    
  • Copiar un archivo al bucket

    aws s3 cp myfile.txt s3://my-bucket/
    
  • Sincronizar un directorio local con un bucket S3

    aws s3 sync my-folder/ s3://my-bucket/
    

Lambda

  • Invocar una función Lambda
    aws lambda invoke --function-name my-function --payload '{"key": "value"}' outputfile.txt
    

CloudFormation

  • Crear una pila
    aws cloudformation create-stack --stack-name my-new-stack --template-body file://my-cloudformation-template.yaml
    

2.2 - EC2

Creación y accesos a instancias EC2

Qué es EC2

EC2 es un servicio de computación en la nube de Amazon Web Services. Permite crear instancias de máquinas virtuales en la nube. Las instancias se organizan en regiones.

Acceso a una instancia EC2

import boto3

ec2 = boto3.resource('ec2')

# Describe instances
instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])

for instance in instances:
    print(instance.id, instance.instance_type)

# stop instance
ec2.instances.filter(InstanceIds=['i-1234567890abcdef0']).stop()

# start instance
ec2.instances.filter(InstanceIds=['i-1234567890abcdef0']).start()

# terminate instance
ec2.instances.filter(InstanceIds=['i-1234567890abcdef0']).terminate()

2.3 - S3

Creación de un bucket S3

Qué es S3

S3 es un servicio de almacenamiento de objetos de Amazon Web Services. Los objetos son archivos y sus metadatos. Los objetos se organizan en buckets. Los buckets se organizan en regiones.

Creación de un bucket S3

Uso con Python

import boto3

# Retrieve the list of existing buckets
s3 = boto3.client('s3')
response = s3.list_buckets()

# Output the bucket names
print('Existing buckets:')
for bucket in response['Buckets']:
    print(f'  {bucket["Name"]}')


# upload file
# s3_client.upload_file(file_name, bucket, object_name)
s3.upload_file('test.txt', 'curso-py-iot', 'test.txt')

2.4 - Jupyter en EC2

Lanzar Jupyter desde EC2

Pasos

  • Crear una instancia EC2 con AWS AMI Linux
  • Añadir regla de entrada en el grupo de seguridad para permitir el acceso al puerto 8888 desde cualquier IP
  • Conectarse por SSH a la instancia
  • Crear carpeta, preparar entorno e instalar jupyter
$ mkdir jupyter
$ cd jupyter
$ python3 -m venv env
$ source env/bin/activate
$ pip install jupyter
  • Generar contraseña para jupyter
$ jupyter notebook password
  • Lanzar jupyter
$ jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser
  • Acceder a la instancia desde el navegador con la IP pública de la instancia y el puerto 8888
  • Para parar jupyter, pulsar Ctrl+C

3 - Hugging Face

Introducción a la creación de apps y cuadros de mando con Gradio

Hugging Face For Education

https://huggingface.co/blog/education

4 - Proyecto 4

Descripción

Este será un proyecto personal para poner en práctica lo aprendido en las sesiones anteriores. Se trata de un proyecto libre a partir de un conjunto de datos que tienes que buscar y analizar.

El objetivo de este proyecto es desarrollar una aplicación web utilizando Streamlit que permita a los usuarios explorar, analizar y visualizar datos de un dataset de tu interés. Usarás Pandas para manipular y analizar el dataset, y Plotly para crear visualizaciones interactivas.

Requisitos:

  1. Dataset: Elegir un conjunto de datos de tu interés. Podría ser, por ejemplo, un dataset sobre tasas de enfermedades, estadísticas de hospitales, etc. El conjunto de datos debe tener suficiente complejidad como para permitir análisis y visualizaciones interesantes.

  2. Funcionalidades de la Aplicación Streamlit:

    • Carga del dataset y visualización inicial.
    • Opciones para filtrar los datos según diferentes variables (por ejemplo, por año, región, enfermedad, etc.).
    • Utilizar Pandas para realizar los análisis estadístico en el dataset.
  3. Visualización con Plotly:

    • Crear diferentes tipos de gráficos interactivos con Plotly (por ejemplo, un gráfico de barras y un mapa de calor).
  4. Despliegue en Streamlit Sharing