Cześć,
Mam taki mały projekt a jestem dość początkujący.
Potrzebuję z czyjegoś bucketu s3 do którego mam dostęp "read only" pobrać pliki backupu oraz wysłać je do swojego bucketu s3.
Pomysł mam taki, żeby pobierać je do /tmp a następnie przesyłać do swojego bucketu s3 i czyścić katalog /tmp. Lepszym jednak rozwiązanie było by zrobienie bezpośredniego tz. pipe który pobiera bezpośrednio do mojego bucketu s3, ale nie widzę możliwości zrobienia czegoś takiego.
Obecnie tak nastrugałem mój kod:
Pobieranie:
import boto3
# Download file
ACCESS_KEY='XXX'
SECRET_KEY='XXXX'
BUCKET_NAME='XXXX'
session = boto3.Session(
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY
)
s3 = session.resource('s3')
bucket = s3.Bucket(BUCKET_NAME)
for s3_file in bucket.objects.all():
file = s3_file.key
bucket.download_file(file, '/tmp/'+file)
print(file, 'copied')
Wysyłanie:
import boto3
# Upload file
ACCESS_KEY_U='XXXXXXXXXXX'
SECRET_KEY_U='XXXXXXXXXXX'
BUCKET_NAME_U='xxx-backup'
session_u = boto3.Session(
aws_access_key_id=ACCESS_KEY_U,
aws_secret_access_key=SECRET_KEY_U
)
s3u = session_u.resource('s3')
bucketu = s3u.Bucket(BUCKET_NAME_U)
s3u.Bucket(BUCKET_NAME_U).upload_file('/tmp/hello.txt', 'hello.txt')
Czy widzicie jakąś opcję, żeby zrobić bezpośredni tz. "pipe", który nie będzie wymagał użycia katalogu /tmp ?