Uma das grandes magnitudes do CEPH é a possibilidade de utilizar seu storage como S3.
Para criar um usuário de S3:
Copy $ radosgw-admin user create --uid="usuario" --display-name="Primeiro Usuario"
Segue retorno após criação:
Copy {
"user_id": "usuario",
"display_name": "Primeiro Usuario",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "usuario",
"access_key": "0MPINSZ803F2TRWP3TDE",
"secret_key": "DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"temp_url_keys": []
}
Copy Armazene as credenciais geradas para consumo do S3:
"access_key": "0MPINSZ803F2TRWP3TDE",
"secret_key": "DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK"
Criando e utilizando Bucket com Python
Para criar seu primeiro bucket com python, primeiramente precisaremos de utilizar o boto3 ou boto2.
Copy O Boto é um pacote do Python que fornece interfaces
para o Amazon Web Services. Atualmente, todos os
recursos funcionam com o Python 2.6 e 2.7.
CENTOS
Copy $ sudo yum install python-boto -y
UBUNTU/DEBIAN
Copy $ sudo apt-get install python-boto/xenial -y
Criando o primeiro Bucket
Copy Os códigos abaixos foram executados na versão do boto2
Segue documentação oficial:
www.boto.cloudhackers.com/en/latest/s3_tut.html
Criei um script chamado s3test.py e insira as seguintes linhas, lembrando que deve-se inserir suas credenciais.
Copy import boto.s3.connection
access_key = '0MPINSZ803F2TRWP3TDE'
secret_key = 'DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK'
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host='<ip_cephmon01>', port=7480,
is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('nome_bucket')
for bucket in conn.get_all_buckets():
print "{name} {created}".format(
name=bucket.name,
created=bucket.creation_date,
)
Com o seu script criado agora é a hora de executa-lo:
Copy root@webpx01:~# python s3test.py
nome_bucket 2018-07-02T21:38:06.162Z
Listando os Buckets
Criando script chamado s3list.py para listar os buckets existentes:
Copy import boto.s3.connection
access_key = '0MPINSZ803F2TRWP3TDE'
secret_key = 'DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK'
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host='<ip_cephmon01>', port=7480,
is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.get_all_buckets()
print ("Segues buckets existentes: ", bucket)
Execute o script e verifique se seu bucket foi criado com sucesso:
Copy root@webpx01:~# python s3list.py
('Segues buckets existentes: ', [])
Listando os objetos existentes no Buckets
Criando script chamado s3keys.py para consultar os objetos existentes no existentes:
Copy import boto.s3.connection
import boto.s3.key
access_key = '0MPINSZ803F2TRWP3TDE'
secret_key = 'DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK'
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host='<ip_cephmon01>', port=7480,
is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
mybucket = conn.get_bucket('nome_bucket')
for key in mybucket.list():
print key, key.storage_class
Execute o script e verifique os objetos no seu bucket:
Copy root@webpx01:~# python s3keys.py
<Key: bucket,NetworkManager/dispatcher.d/hook-network-manager> STANDARD
<Key: bucket,X11/Xsession.d/60xdg-user-dirs-update> STANDARD
<Key: bucket,acpi/events/powerbtn> STANDARD
<Key: bucket,acpi/powerbtn.sh> STANDARD
<Key: bucket,adduser.conf> STANDARD
<Key: bucket,alternatives/README> STANDARD
<Key: bucket,alternatives/aclocal> STANDARD
Inserindo objetos no Bucket
Criando script chamado s3upload.py para inserir objetos no bucket e validar se de fato foi criado:
Copy import boto.s3.connection
import boto
from boto.s3.key import Key
access_key = '0MPINSZ803F2TRWP3TDE'
secret_key = 'DxntFGnUg6ylQSeftdVWdPEOnjooVbNHw2zj5qMK'
filename = '/diretorio/nome_arquivo'
uploaded_filename = 'diretorio/nome_arquivo'
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host='<ip_cephmon01>', port=7480,
is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
mybucket = conn.get_bucket('nome_bucket')
k = Key(mybucket)
k.key = uploaded_filename
k.set_contents_from_filename(filename)
print mybucket.get_key('diretorio/nome_arquivo')
Execute o script e verifique o objeto no bucket:
Copy root@webpx01:~# python s3upload.py
<Key: bucket,opt/teste_dentro_do_nfs>