Skip to content

Instantly share code, notes, and snippets.

@stanislavb
Last active September 14, 2015 14:30
Show Gist options
  • Select an option

  • Save stanislavb/cdb98b0eb910846d8fdb to your computer and use it in GitHub Desktop.

Select an option

Save stanislavb/cdb98b0eb910846d8fdb to your computer and use it in GitHub Desktop.

Revisions

  1. stanislavb revised this gist Sep 14, 2015. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions s3sign.py
    Original file line number Diff line number Diff line change
    @@ -3,6 +3,7 @@
    import argparse
    import os.path
    import logging
    import sys


    logger = logging.getLogger()
    @@ -45,3 +46,5 @@ def generate_presigned_put_url(bucket, dir, filename, expires=3600):
    # Generates URL like:
    # https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    print(url)
    else:
    sys.exit(1)
  2. stanislavb revised this gist Sep 14, 2015. 1 changed file with 32 additions and 9 deletions.
    41 changes: 32 additions & 9 deletions s3sign.py
    Original file line number Diff line number Diff line change
    @@ -2,23 +2,46 @@
    import boto3
    import argparse
    import os.path
    import logging


    logger = logging.getLogger()
    s3 = boto3.resource('s3')
    client = boto3.client('s3')


    def bucket_exists(bucket):
    try:
    s3.meta.client.head_bucket(Bucket=bucket)
    return True
    except:
    logger.exception('HEAD request to bucket {} failed'.format(bucket))
    return False


    def generate_presigned_put_url(bucket, dir, filename, expires=3600):
    key = os.path.join(dir, filename)
    if not bucket_exists(bucket):
    return None
    else:
    return client.generate_presigned_url(
    'put_object',
    Params={'Bucket': bucket, 'Key': key},
    ExpiresIn=expires)

    if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--bucket', '-b', required=True)
    parser.add_argument('--dir', '-d', required=True)
    parser.add_argument('--filename', '-f', required=True)
    args = parser.parse_args()

    key = os.path.join(args.dir, args.filename)

    url = client.generate_presigned_url(
    'put_object',
    Params={'Bucket': args.bucket, 'Key': key},
    ExpiresIn=3600)
    url = generate_presigned_put_url(
    bucket=args.bucket,
    dir=args.dir,
    filename=args.filename)

    # Generates URL like:
    # https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    print(url)
    if url:
    # Generates URL like:
    # https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    print(url)
  3. stanislavb revised this gist Sep 14, 2015. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion s3sign.py
    Original file line number Diff line number Diff line change
    @@ -19,5 +19,6 @@
    Params={'Bucket': args.bucket, 'Key': key},
    ExpiresIn=3600)

    # Generates https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    # Generates URL like:
    # https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    print(url)
  4. stanislavb created this gist Sep 14, 2015.
    23 changes: 23 additions & 0 deletions s3sign.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    #!/usr/bin/env python3
    import boto3
    import argparse
    import os.path

    client = boto3.client('s3')

    if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--bucket', '-b', required=True)
    parser.add_argument('--dir', '-d', required=True)
    parser.add_argument('--filename', '-f', required=True)
    args = parser.parse_args()

    key = os.path.join(args.dir, args.filename)

    url = client.generate_presigned_url(
    'put_object',
    Params={'Bucket': args.bucket, 'Key': key},
    ExpiresIn=3600)

    # Generates https://bucket.s3.amazonaws.com/dir/file?Signature=v%2signaturestuff&AWSAccessKeyId=ACCESSKEY&Expires=1442237425
    print(url)