En esta ocasión voy a mostrar como podemos trabajar con el SDK de python para Amazon AWS, boto3, para gestionar los buckets y los archivos que alojamos en ellos.
Instalo las librerías que voy a usar. Entre ellas boto3.¶
import boto3
import pandas as pd
Me descargo el csv con las keys de acceso del usuario y guardo cada key en una variable que luego la usaré.¶
Se puede seguir el doc https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html¶
keys = pd.read_csv('Administrator_accessKeys.csv')
access_key_id = keys['Access key ID'][0]
secret_access_key = keys['Secret access key'][0]
Me conecto a AWS S3 y descargo el listado de buckets¶
s3 = boto3.client('s3',
aws_access_key_id= access_key_id,
aws_secret_access_key= secret_access_key)
#Guardo el listado
bucket_list = s3.list_buckets()
# Muestro el nombre de los buckets encontrados
for bucket in bucket_list['Buckets']:
print(bucket['Name'])
bucketvamosya1
Ahora vamos a mirar los objetos que tenemos en el bucket¶
for item in s3.list_objects(Bucket='bucketvamosya1')['Contents']:
print(item['Key'])
2020 POR MUNICIPIOS.csv carpeta1/ dataset_municipios.csv dataset_torrejon_subido.csv
Me descargo uno de los archivos¶
s3.download_file('bucketvamosya1', 'dataset_municipios.csv', 'dataset_municipios_descargado.csv')
Comprobamos que podemos leerlo y guardarlo en un df¶
csv_df = pd.read_csv('dataset_municipios_descargado.csv', sep=';')
csv_df.head(4)
LUGAR | DELITO | 2016 | 2017 | 2018 | 2019 | 2020 | |
---|---|---|---|---|---|---|---|
0 | torrejon | Asesinatos consumados | 0 | 1 | 0 | 0 | 2 |
1 | torrejon | Asesinatos en grado tentativa | 2 | 2 | 3 | 4 | 3 |
2 | torrejon | Lesiones | 45 | 51 | 48 | 46 | 37 |
3 | torrejon | Secuestro | 0 | 0 | 0 | 0 | 0 |
Para finalizar, voy a realizar alguna modificación, eligiendo solo un municipio, y subirlo un nuevo csv al bucket¶
csv_torrejon = csv_df[csv_df.LUGAR == 'torrejon']
csv_torrejon.to_csv('dataset_torrejon.csv')
# Ya creado el csv, lo subo
s3.upload_file(
'dataset_torrejon.csv',
'bucketvamosya1',
'dataset_torrejon_subido.csv')
Verificamos que está subido al bucket¶
for item in s3.list_objects(Bucket='bucketvamosya1')['Contents']:
print(item['Key'])
2020 POR MUNICIPIOS.csv carpeta1/ dataset_municipios.csv dataset_torrejon_subido.csv