Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- #
- # Author Ondrej Barta
- # ondrej@ondrej.it
- # Copyright 2017
- import os
- from urllib import unquote
- from urlparse import urlparse
- import boto3
- from botocore.client import Config
- from celery.decorators import task
- @task(name="s3.move", queue="mcp")
- def move(from_url, to_url):
- """
- Presune objekt v s3.
- Access a key musi byt zaqoutovany.
- :param from_url: s3://access:key@bucket/key
- :param to_url: s3://bucket/key
- :return: None
- """
- from_parse = urlparse(from_url)
- to_parse = unquote(to_url)
- username = unquote(from_parse.username)
- password = unquote(from_parse.password)
- from_bucket = from_parse.hostname
- from_key = from_parse.path.lstrip("/")
- to_bucket = to_parse.hostname
- to_key = to_parse.path.lstrip("/")
- s3 = boto3.client(
- "s3",
- # Nektere regiony podporuji jen s3v4
- config=Config(signature_version="s3v4"),
- aws_access_key_id=username,
- aws_secret_access_key=password,
- region_name=os.environ.get("AWS_REGION", "eu-west-1"),
- )
- # FIXME do budoucna chceme nastavovat acl atp pomoci #...
- s3.copy_object(
- Bucket=to_bucket,
- Key=to_key,
- ACL="private",
- StorageClass=os.environ.get("AWS_STORAGE_CLASS", "STANDARD_IA"),
- CopySource={"Bucket": from_key, "Key": from_key},
- )
- s3.delete_object(Bucket=from_bucket, Key=from_key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement