Skip to main content

Componentes de integração para construção de arquiteturas de soluções utilizando ambientes cloud

Project description

cloudgeass logo

Release PyPI PyPI - Python Version PyPI - Status

Table of content


Sobre cloudgeass

Em um cenário tecnológico onde soluções baseadas em cloud são cada vez mais comuns, imaginem o quão vantajoso seria se tivéssemos alguns componentes prontos para facilitar o desenvolvimento de sistemas, arquiteturas ou até mesmo auxiliar em operações simples do dia a dia. Imerso na ideia de tornar algumas etapas de construção simples, surge o cloudgeass: um pacote Python contendo elementos previamente desenvolvidos visando facilitar o intermédio entre scripts e ferramentas cloud.

Mesmo que exemplos práticos sejam fornecidos ao longo desta documentação, é preciso entender o pacote cloudgeass como um simples centralizador e fornecedor de classes, módulos ou funções prontas para que os usuários possam se servir em meio a operações envolvendo serviços da cloud. Com as funcionalidades aqui desenvolvidas é possível, por exemplo, criar um bucket s3 de forma automática, ou mesmo realizar o upload, em um dado bucket, de todos os objetos contidos em um diretório local. Em uma outra gama de serviços cloud, também é possível criar layers lambda a partir de uma única execução de função no módulo serverless.py. Ao longo do tempo, uma gama maior de operações poderão ser encapsuladas e fornecidas aos usuários do pacote, sempre com a premissa de simplificar e automatizar as operações.


Instalação do Pacote

Com o ambiente virtual python ativo, para a instalação do pacote cloudgeass via pip, basta executar o comando abaixo:

pip install cloudgeass

Com isso, todo o ferramental disponível na última versão do pacote poderá ser usufruído. Vale citar que o pacote cloudeass possui, como principal dependência, o SDK Python boto3 com um vasto ferramental de operações na AWS utilizando python. Assim, as dependências do pacote são:

  • boto3: SDK python para operações na AWS
  • pandas: poderosa ferramenta para a manipulação de dados em python

Funcionalidades Disponíveis

Como mencionado anteriormente, o pacote conta com alguns módulos essenciais para a realização de operações em serviços cloud a partir da linguagem Python. Focado, em um primeiro momento, em soluções AWS, cloudgeass entrega dois principais módulos de componentes úteis: s3.py e serverless.py.

Módulo s3

De forma intuitiva, o módulo s3 contempla funcionalidades focadas no serviço Simple Storage Service da AWS. Como principal componente, encontra-se a classe JimmyBuckets com uma série de métodos capazes de realizar as operações mais comuns em buckets do s3, desde a instância de um recurso e um client a partir do boto3 até operações de criação de buckets, upload e download de objetos ou mesmo diretórios completos. Como grande vantagem de utilização, as funcionalidades contidas na classe JimmyBuckets contam com uma vasta documentação e um acompanhamento de logs ao longo das operações, permitindo assim com que o usuário realize uma série de ações na AWS executando apenas uma única linhas de código.

Detalhando um pouco mais as features disponíveis dentro da classe JimmyBuckets, a tabela abaixo pode servir de referência para consultas e validação de operações. Para visualizar um exemplo prático de utilização, basta acessar a seção de utilização ou então os scripts de testes desenvolvidos para validar e testar, de forma bem detalhada, algumas das operações presentes na classe.

Método Descrição
jbuckets.list_buckets() Lista todos os buckets presentes na conta de utilização da AWS
jbuckets.list_bucket_objects() Lista todos os objetos (chaves) presentes em um determinado bucket
jbuckets.delete_bucket() Deleta um bucket já existente com a opção de esvaziá-lo antes
jbuckets.create_bucket() Cria um novo bucket com possibilidade de configurar opções de privacidade e ACL
jbuckets.upload_object() Realiza o upload de um objeto salvo localmente ou lido em memória
jbuckets.upload_directory() Realiza o upload de todos os arquivos presentes em um diretório alvo, mantendo a mesma estrutura de pastas locais através de prefixos no s3
jbuckets.download_all_objects() Realiza o download de todos os objetos presentes em um bucket, mantendo a mesma estrutura de prefixos no s3 através de pastas locais
jbuckets.read_object() Realiza a leitura de um objeto presente no s3, retornando um conteúdo binário que pode ser trabalhado posteriormente pelo código
jbuckets.object_to_df() Mirando dados em formato tabular (arquivos csv ou txt), realiza a leitura de um objeto no s3 direto em um formato de DataFrame do pandas

Módulo serverless

Neste módulo criado recentemente, são alocados recursos e encapsulados códigos capazes de atuar com o serviço lambda presente na AWS. Baseado em funções e não em classes, aqui será possível encontrar elementos capazes de criar layers a serem utilizados em funções lambda de forma automática e sustentável, permitindo assim com que o usuário realize toda a preparação local das dependências a partir de um arquivo requirements.txt gerado manualmente ou automaticamente a partir de um ambiente virtual de trabalho. Para ilustrar algumas possibilidades, a tabela abaixo pode servir de referência inicial de consulta. Para maiores detalhes, é possível consumir o contéudo da seção de utilização ou então o scripts de testes específico do módulo serverless.

Método Descrição
create_layer_path() Cria um diretório reconhecível pelo runtime do lambda para leitura das dependências python
get_packages() Coleta as dependências via requirements.txt fornecido ou via venv e realiza a instalação direcionada das mesmas no diretório do layer
upload_layer_to_bucket() Transforma o diretório do layer em um arquivo .zip e realiza o upload do conteúdo em um bucket s3 para posterior associação a funções lambda
build_lambda_layer() Encapsula todas as operações acima citadas em um bloco único, partindo do início e resultando em um layer zipado presente no s3

Utilização Prática

O snippet abaixo ilustra algumas operações detalhadas nas tabelas de cada módulo, permitindo assim uma visão prática sobre como utilizar os recursos do pacote cloudgeass. Para uma maior riqueza de detalhes, recomenda-se visualizar scripts mais detalhados presentes no diretório de testes deste repositório.

# Importando bibliotecas
from cloudgeass.aws.s3 import JimmyBuckets
import os

# Instanciando classe e criando bucket, caso inexistente
jbuckets = JimmyBuckets(region=REGION)

# Coletando buckets existentes e aplicando drop + create
account_buckets = jbuckets.list_buckets()
if BUCKET_NAME not in account_buckets:
    jbuckets.create_bucket(bucket_name=BUCKET_NAME)
    
# Realizando o upload de objeto no bucket
jbuckets.upload_object(
    file=os.path.join(os.getcwd(), 'requirements.txt'),
    bucket_name='bucket_teste',
    key='test_folder/requirements.txt'
)

# Realizando o upload de todos os arquivos em um diretório
jbuckets.upload_directory(
    directory=os.getcwd(),
    bucket_name='bucket_teste'
)

# Baixando todos os objetos presentes em um bucket
jbuckets.download_all_objects(
    bucket_name='bucket_teste',
    prefix='',
    local_dir=os.path.join(os.getcwd(), 'tmp'),
    verbose=True
)

Em um exemplo básico de criação de layers lambda, o snippet abaixo traz a execução de uma única função capaz de encapsular todo o procedimento:

# Importando bibliotecas
from clougeass.aws.serverless import build_lambda_layer

# Criando layer
build_lambda_layer(
    layer_path=os.path.join(os.getcwd(), 'lambda_layer/python'),
    bucket_name='layes_lambda',
    prefix='layer_teste/'
)

Ao longo do tempo, novas funcionalidades poderão ser implementadas conforme novos conhecimentos forem sendo agregados.

Contatos

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudgeass-0.0.6.tar.gz (23.0 kB view hashes)

Uploaded Source

Built Distribution

cloudgeass-0.0.6-py3-none-any.whl (21.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page