Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
import boto3 from botocore.exceptions import NoCredentialsError, ClientError # === CONFIGURAÇÕES AWS === AWS_ACCESS_KEY = "SEU_ACCESS_KEY" AWS_SECRET_KEY = "SEU_SECRET_KEY" AWS_REGION = "us-east-1" # === CONFIGURAÇÕES DO ARQUIVO E BUCKET === BUCKET_NAME = "meu-bucket-privado" ARQUIVO_LOCAL = "exemplo.txt" # arquivo local a ser enviado ARQUIVO_NO_S3 = "uploads/exemplo.txt" # caminho do arquivo dentro do bucket # === INICIALIZA CLIENTE S3 === s3 = boto3.client( 's3', aws_access_key_id=AWS_ACCESS_KEY, aws_secret_access_key=AWS_SECRET_KEY, region_name=AWS_REGION ) def criar_bucket(): """Cria o bucket se não existir""" try: # Verifica se o bucket já existe s3.head_bucket(Bucket=BUCKET_NAME) print(f"ℹ️ Bucket '{BUCKET_NAME}' já existe.") except ClientError as e: # Se não existir, cria o bucket privado if e.response['Error']['Code'] == '404': print(f"🪣 Criando bucket '{BUCKET_NAME}'...") s3.create_bucket( Bucket=BUCKET_NAME, CreateBucketConfiguration={'LocationConstraint': AWS_REGION} ) print(f"✅ Bucket '{BUCKET_NAME}' criado com sucesso.") else: print(f"❌ Erro ao verificar/criar bucket: {e}") def upload_arquivo(): """Faz upload de um arquivo local para o S3""" try: s3.upload_file(ARQUIVO_LOCAL, BUCKET_NAME, ARQUIVO_NO_S3) print(f"✅ Upload concluído: {ARQUIVO_LOCAL} → s3://{BUCKET_NAME}/{ARQUIVO_NO_S3}") except FileNotFoundError: print("❌ Arquivo local não encontrado.") except NoCredentialsError: print("❌ Credenciais AWS inválidas.") except ClientError as e: print(f"❌ Erro no upload: {e}") def download_arquivo(): """Baixa um arquivo do S3""" destino = "baixado_" + ARQUIVO_LOCAL try: s3.download_file(BUCKET_NAME, ARQUIVO_NO_S3, destino) print(f"✅ Download concluído: s3://{BUCKET_NAME}/{ARQUIVO_NO_S3} → {destino}") except ClientError as e: if e.response['Error']['Code'] == "404": print("❌ Arquivo não encontrado no bucket.") else: print(f"❌ Erro no download: {e}") def gerar_url_temporaria(): """Gera uma URL temporária para download (válida por 1h)""" try: url = s3.generate_presigned_url( 'get_object', Params={'Bucket': BUCKET_NAME, 'Key': ARQUIVO_NO_S3}, ExpiresIn=3600 ) print(f"🔗 URL temporária (1h): {url}") except Exception as e: print(f"❌ Erro ao gerar URL temporária: {e}") if __name__ == "__main__": criar_bucket() upload_arquivo() download_arquivo() gerar_url_temporaria()
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)