🚀 Guia completo: Conectando a um bucket da Oracle usando Boto3 e Python
🧐Caso você não queira assistir o video siga os passos abaixo
Criando um Bucket na oracle
- Acesse https://cloud.oracle.com/object-storage/buckets
- Verifique se o seu compartimento está selecionado no menu lateral esquerdo
- Se não estiver selecionado selecione o compartimento desejado
- Clique em Criar bucket
- Digite o nome do bucket, e clique em Criar
- Com o Bucket criado clique no bucket
- Clique em Alterar Visibilidade e coloque publico se você quer que ele possa ser usado pelo publico
- Anote o Namespace
Criando o Token de usuario
- No menu superior direito, Perfil selecione Defininições de usuário
- No menu lateral esquerdo clique em Chaves Secretas de Cliente
- Clique em Gerar Chave Secreta, Anote a senha dessa chave gerada ela não vai aparecer novamente
- Apos fechar a janela Clique sobre a chave gerada e copie a Chave gerada e anote tambem
Iniciando o codigo
Estamos utilizando a versão 3.10 do python3
- Crie uma pasta para a aula
- Instale a virual env
python3 -m venv venv
- Ative a virtal env
source venv/bin/activate
- Instale a bilbioteca boto3
pip3 install boto3
- Crie um arquivo chamado main.py
- Abra o arquivo utilizando sua IDE favorita
- Importe as bibliotecas
import os
import boto3
- Inicie a configuração do S3 no modelo abaixo
# Conexão S3
s3_connection = boto3.client('s3',
aws_access_key_id = aws_access_key_id',
aws_secret_access_key = 'aws_secret_access_key ',
endpoint_url = 'https://grlxsrmxhowy.compat.objectstorage.sa-saopaulo-1.oraclecloud.com')
- O Url é composto por 'https://{NameSpace}.compat.objectstorage.{Região}.oraclecloud.com'
- Agora uma decisão deve ser tomada, nesse exemplo podemos Criar um objeto no bucket ou fazer o upload, primeiro vamos fazer o upload de um arquivo existente
- Digamos que temos um arquivo chamado teste.txt dentro da pasta e queremos subir ele pro bucket
- Vamos ter que criar uma variavel para o nome do bucket
- O path do local do arquivo na pasta
- O nome do arquivo dentro do bucket
# Mome do bucket
nome_do_bucket = 'aula-oracle'
# Salvar arquivo local
arquivo = 'teste.txt'
nome_do_arquivo_no_bucket = 'test-upload-local.txt'
# Upload
try:
s3_connection.upload_file(arquivo,nome_do_bucket, nome_do_arquivo_no_bucket)
print('Upload de arquivo local efetuado com sucesso!')
except Exception as e:
print(f"Erro no upload: {e}")
- Pronto esse codigo sobe seu arquivo salvo local para o bucket.
Agora temos o seguinte problema e se o arquivo vier de um FORM html?
- Nesse caso precisamos ler o arquivo antes e utiliar o metodo put_object, segue o exemplo
- Quando utilizando por exemplo flask o input com name imagem e tipo file do front é capturado assim request.files['atributo_name_do_input'] e para ler ele você acrescenta .read() na frente, no nosso exmeplo vamos ler nosso arquivo local mesmo e subir ele para o bucket em bytes.
# Lendo o arquivo local
with open(arquivo, 'rb') as file:
dados_arquivo = file.read()
nome_do_arquivo_no_bucket = 'test-upload-form.txt'
try:
s3_connection.put_object(Bucket=nome_do_bucket, Key=nome_do_arquivo_no_bucket, Body=dados_arquivo)
print('Upload de arquivo form efetuado com sucesso!')
except Exception as e:
print(f"Erro no upload: {e}")
- Apos subir o arquivo se seu bucket é publico você pode ir no bucket e clicar nos 3 pontos na frente do arquivo e ir em Exibir Detalhes do Objeto e la vai ter a url do seu arquivo
Gostou do tutorial? 👍Curta nosso video no youtube para ajudar e compartilhe com os amigos