Exemplo n.º 1
0
def copy_object(src_uri, dest_uri):
    """Copy object to other bucket."""
    s3_resource = get_resources()

    src_bucket, src_prefix = utils.get_bucket_key(src_uri)
    dest_bucket, dest_prefix = utils.get_bucket_key(dest_uri)
    bucket.copy_object(s3_resource, src_bucket, src_prefix, dest_bucket, dest_prefix)
Exemplo n.º 2
0
def move_object(src_uri, dest_uri):
    """Move object into other bucket."""
    s3_resource = get_resources()

    src_bucket, src_prefix = utils.get_bucket_key(src_uri)
    dest_bucket, dest_prefix = utils.get_bucket_key(dest_uri)

    bucket.move_object(s3_resource, src_bucket, src_prefix, dest_bucket, dest_prefix)
Exemplo n.º 3
0
    def get(self, prefix=""):
        parser = init_parser().copy()
        parser.add_argument("bucket_name", type=str)
        args = parser.parse_args()
        secret_key = args["secret_key"].replace(" ", "+")

        bucket_name = args["bucket_name"]
        if args["bucket_name"]:
            bucket_name, prefix = utils.get_bucket_key(args["bucket_name"])

        try:
            if args["bucket_name"]:
                buckets = bucket.get_objects(
                    get_resources(args["access_key"], secret_key), bucket_name,
                    prefix)
                objects = list_objects(buckets)
                if not objects:
                    return response(200, f"Bucket is Empty.")
                return response(200, data=objects)

            buckets = bucket.buckets(
                get_resources(args["access_key"], secret_key))
            all_bucket = []
            for index, buck in enumerate(buckets):
                all_bucket.append({
                    "name": buck.name,
                    "creation_date": f"{buck.creation_date:%Y-%m-%d %H:%M:%S}",
                    "ACL": buck.Acl().grants,
                })
            if not all_bucket:
                return response(200, f"Storage is Empty.")
            return response(200, data=all_bucket)
        except Exception as e:
            current_app.logger.error(f"{e}", exc_info=args["debug"])
            return response(500, f"{e}")
Exemplo n.º 4
0
def list_mpu(uri):
    """List in-progress multipart uploads"""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    bucket.list_multipart_upload(
        resource=s3_resource, bucket_name=bucket_name, prefix=prefix
    )
Exemplo n.º 5
0
def remove(uri):
    """Remove bucket or object."""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    if not prefix:
        bucket.remove_bucket(s3_resource, bucket_name=bucket_name)
    if bucket_name and prefix:
        bucket.remove_object(s3_resource, bucket_name=bucket_name, object_name=prefix)
Exemplo n.º 6
0
def url(uri, expire):
    """Generate presign URL for object."""
    s3_resource = get_resources()

    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)
    bucket.generate_url(
        resource=s3_resource, bucket_name=bucket_name, object_name=prefix, expire=expire
    )
Exemplo n.º 7
0
def du(uri):
    """Show disk or bucket usage."""
    s3_resource = get_resources()

    bucket_name, prefix = utils.get_bucket_key(uri)
    if bucket_name:
        bucket.bucket_usage(s3_resource, bucket_name=bucket_name)
    else:
        bucket.disk_usage(s3_resource)
Exemplo n.º 8
0
def info(uri):
    """Display bucket or object info."""
    s3_resource = get_resources()
    plain_auth = get_plain_auth()

    bucket_name, prefix = utils.get_bucket_key(uri)
    if not prefix:
        bucket.bucket_info(s3_resource, bucket_name=bucket_name, auth=plain_auth)
    if bucket_name and prefix:
        bucket.object_info(s3_resource, bucket_name=bucket_name, object_name=prefix)
Exemplo n.º 9
0
def put_object(local_path, uri):
    """Upload object to bucket."""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)
    bucket.upload_object(
        resource=s3_resource,
        bucket_name=bucket_name,
        local_path=local_path,
        object_name=prefix,
    )
Exemplo n.º 10
0
def list_part(uri, upload_id):
    """List in-progress part in multipart upload"""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    bucket.list_part(
        resource=s3_resource,
        bucket_name=bucket_name,
        object_name=prefix,
        upload_id=upload_id,
    )
Exemplo n.º 11
0
def abort_mpu(uri, upload_id):
    """Complete a multipart upload by assembling uploaded parts"""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    bucket.complete_multipart_upload(
        resource=s3_resource,
        bucket_name=bucket_name,
        object_name=prefix,
        upload_id=upload_id,
    )
Exemplo n.º 12
0
def abort_mpu(uri, upload_id):
    """Abort in-progress multipart upload"""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    bucket.abort_multipart_upload(
        resource=s3_resource,
        bucket_name=bucket_name,
        object_name=prefix,
        upload_id=upload_id,
    )
Exemplo n.º 13
0
def set_acl(uri, acl):
    """Set ACL for bucket or object."""
    s3_resource = get_resources()

    bucket_name, prefix = utils.get_bucket_key(uri)
    if not prefix:
        bucket.set_acl(
            resource=s3_resource, bucket_name=bucket_name, acl=acl, acl_type="bucket"
        )
    if bucket_name and prefix:
        bucket.set_acl(
            resource=s3_resource,
            bucket_name=bucket_name,
            object_name=prefix,
            acl=acl,
            acl_type="object",
        )
Exemplo n.º 14
0
def set_acl(uri, acl, fullcontrol, read, readACP, write, writeACP):
    """Set ACL for bucket or object."""
    s3_resource = get_resources()

    bucket_name, prefix = utils.get_bucket_key(uri)

    opt = {
        "resource": s3_resource,
        "bucket_name": bucket_name,
        "acl": acl,
        "grant_fullcontrol": fullcontrol,
        "grant_read": read,
        "grant_readACP": readACP,
        "grant_write": write,
        "grant_writeACP": writeACP,
    }

    if not prefix:
        bucket.set_acl(**opt, acl_type="bucket")
    if bucket_name and prefix:
        bucket.set_acl(**opt, object_name=prefix, acl_type="object")
Exemplo n.º 15
0
def get_objects(resource, uri):
    try:
        bucket_name, prefix = utils.get_bucket_key(uri)
        response = bucket_lib.get_objects(resource, bucket_name, prefix)
        if not response:
            click.secho(f'Bucket "{bucket_name}" is empty', fg="green")

        if response["CommonPrefixes"]:
            for prefix in response["CommonPrefixes"]:
                dir_ = "DIR".rjust(12)
                click.secho(f"{dir_} {bucket_name}/{prefix['Prefix']}")

        if response["Contents"]:
            for content in response["Contents"]:
                key = content["Key"]
                size = utils.sizeof_fmt(content["Size"])
                last_modified = content["LastModified"]
                click.secho(
                    f"{last_modified:%Y-%m-%d %H:%M:%S}, {size}, {bucket_name}/{key}"
                )

    except Exception as exc:
        click.secho(f"{exc}", fg="yellow", bold=True, err=True)
Exemplo n.º 16
0
def mkdir(uri):
    """Create directory inside bucket"""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)

    bucket.mkdir(resource=s3_resource, bucket_name=bucket_name, dir_name=prefix)
Exemplo n.º 17
0
def get_object(uri):
    """Download object in bucket."""
    s3_resource = get_resources()
    bucket_name, prefix = utils.get_bucket_key(uri)
    bucket.download_object(s3_resource, bucket_name=bucket_name, object_name=prefix)