AWS

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

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 - 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()

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')

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