Roteiro Básico: Criação de Bucket S3 na AWS e Envio de Fotos¶
1. Criar um Bucket S3¶
- Acesse o AWS Management Console.
- Procure por S3 e clique em Create bucket.
- Defina um nome único para o bucket e selecione a região desejada.
- Mantenha as configurações padrão ou ajuste conforme necessário.
- Clique em Create bucket.
2. Configurar Permissões (opcional)¶
- Para acesso público, ajuste as permissões em Permissions > Bucket Policy.
- Para acesso privado, mantenha as configurações padrão.
No acesso público, você pode configurar o bucket para permitir que qualquer pessoa visualize ou baixe os arquivos armazenados nele. Isso é útil para compartilhar fotos ou outros arquivos com um grande público sem a necessidade de autenticação. No entanto, é importante ter cuidado ao configurar o acesso público, pois isso pode expor seus dados a riscos de segurança. Certifique-se de revisar as permissões e considerar o uso de políticas de bucket para restringir o acesso apenas aos arquivos necessários.
No acesso privado, o bucket é configurado para que apenas usuários autenticados com as permissões adequadas possam acessar os arquivos armazenados nele. Isso é ideal para proteger dados sensíveis ou privados, garantindo que apenas pessoas autorizadas possam visualizar ou baixar os arquivos. Com o acesso privado, você pode controlar quem tem acesso ao seu conteúdo e manter a segurança dos seus dados na AWS.
3. Enviar Fotos pelo Console¶
- Acesse o bucket criado.
- Clique em Upload.
- Selecione as fotos desejadas e clique em Upload.
4. Enviar Fotos via AWS CLI¶
Como instalar o aws cli? Para instalar o AWS CLI, siga as instruções abaixo:¶
- Windows: Baixe o instalador MSI do AWS CLI aqui e execute-o.
- macOS: Use o Homebrew para instalar o AWS CLI:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Como logar no aws cli? Para configurar o AWS CLI, siga os passos abaixo:¶
-
Configure suas credenciais AWS:
-
Insira as informações solicitadas:
- AWS Access Key ID: Sua chave de acesso (obtida no IAM)
- AWS Secret Access Key: Sua chave secreta (obtida no IAM)
- Default region name: Região padrão (ex: us-east-1, sa-east-1)
-
Default output format: Formato de saída (json, text, table)
-
Verificar a configuração:
-
Configuração alternativa usando perfis:
-
Usar um perfil específico:
Importante: Para obter suas credenciais, acesse o AWS IAM Console, crie um usuário com as permissões necessárias e gere as chaves de acesso.### Como logar no aws cli? Para configurar o AWS CLI, siga os passos abaixo:
- Envie uma foto:
5. Enviar Fotos via Código Python (boto3)¶
- Passo 1: Instalar o boto3 (execute no terminal) ````sh
pip install boto3¶
```
- Passo 2: Importar as bibliotecas necessárias
python
import boto3
from botocore.exceptions import NoCredentialsError, ClientError
import os
- Passo 3: Configurar o cliente S3
```python
Certifique-se de que suas credenciais AWS estão configuradas (aws configure)¶
s3_client = boto3.client('s3') ```
- Passo 4: Definir as variáveis do bucket e arquivo
python
bucket_name = 'nome-do-seu-bucket' # Substitua pelo nome do seu bucket
local_file_path = 'caminho/para/sua/foto.jpg' # Caminho local da foto
s3_file_name = 'fotos/minha-foto.jpg' # Nome que o arquivo terá no S3
- Passo 5: Função para verificar se o arquivo existe localmente
`python
def verificar_arquivo_existe(caminho_arquivo):
if not os.path.exists(caminho_arquivo):
print(f"Erro: O arquivo {caminho_arquivo} não foi encontrado.")
return False
return True
- Passo 6: Função para fazer upload da foto
```python def enviar_foto_s3(arquivo_local, bucket, nome_s3): try: # Verificar se o arquivo existe if not verificar_arquivo_existe(arquivo_local): return False
# Fazer upload do arquivo
s3_client.upload_file(arquivo_local, bucket, nome_s3)
print(f"Sucesso: {arquivo_local} foi enviado para s3://{bucket}/{nome_s3}")
return True
except FileNotFoundError:
print(f"Erro: O arquivo {arquivo_local} não foi encontrado.")
return False
except NoCredentialsError:
print("Erro: Credenciais AWS não encontradas. Execute 'aws configure' primeiro.")
return False
except ClientError as e:
print(f"Erro do cliente AWS: {e}")
return False
except Exception as e:
print(f"Erro inesperado: {e}")
return False
Passo 7: Executar o upload¶
if name == "main": # Enviar uma única foto sucesso = enviar_foto_s3(local_file_path, bucket_name, s3_file_name)
# Passo 8: Exemplo para enviar múltiplas fotos
fotos_para_enviar = [
{'local': 'foto1.jpg', 's3': 'fotos/foto1.jpg'},
{'local': 'foto2.jpg', 's3': 'fotos/foto2.jpg'},
{'local': 'foto3.jpg', 's3': 'fotos/foto3.jpg'}
]
for foto in fotos_para_enviar:
enviar_foto_s3(foto['local'], bucket_name, foto['s3'])
Passo 9: Função adicional para listar arquivos no bucket¶
def listar_arquivos_bucket(bucket): try: response = s3_client.list_objects_v2(Bucket=bucket) if 'Contents' in response: print(f"Arquivos no bucket {bucket}:") for obj in response['Contents']: print(f" - {obj['Key']} (Tamanho: {obj['Size']} bytes)") else: print(f"O bucket {bucket} está vazio.") except ClientError as e: print(f"Erro ao listar arquivos: {e}")
Passo 10: Função para definir metadados da foto (opcional)¶
def enviar_foto_com_metadados(arquivo_local, bucket, nome_s3, metadados=None): try: extra_args = {} if metadados: extra_args['Metadata'] = metadados
s3_client.upload_file(arquivo_local, bucket, nome_s3, ExtraArgs=extra_args)
print(f"Foto enviada com metadados: {arquivo_local} -> s3://{bucket}/{nome_s3}")
except Exception as e:
print(f"Erro ao enviar foto com metadados: {e}")
Exemplo de uso com metadados¶
metadados_exemplo = { 'photographer': 'João Silva', 'location': 'São Paulo', 'date': '2024-01-15' } ```
- Enviar_foto_com_metadados('minha_foto.jpg', bucket_name, 'fotos/minha_foto.jpg', metadados_exemplo)
```python import boto3
s3 = boto3.client('s3') s3.upload_file('caminho/da/foto.jpg', 'nome-do-bucket', 'foto.jpg') ```
Dica: Nunca compartilhe suas credenciais AWS.