Versions Supported
Language Stats
Repo Stats
Activity
Build Status
PyS3Uploader¶
Python module to upload an entire directory to an S3 bucket.
Bucket Policy Required
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucketsForExistenceCheck",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Sid": "ListAndUploadToSpecificBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::bucketname"
},
{
"Sid": "UploadObjectsToBucket",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::bucketname/*"
}
]
}
Installation¶
pip install PyS3Uploader
Usage¶
Upload objects in parallel¶
import pys3uploader
if __name__ == '__main__':
wrapper = pys3uploader.Uploader(
bucket_name="BUCKET_NAME",
upload_dir="FULL_PATH_TO_UPLOAD",
exclude_prefix="PART_OF_UPLOAD_DIR_TO_EXCLUDE"
)
wrapper.run_in_parallel()
Upload objects in sequence¶
import pys3uploader
if __name__ == '__main__':
wrapper = pys3uploader.Uploader(
bucket_name="BUCKET_NAME",
upload_dir="FULL_PATH_TO_UPLOAD",
exclude_prefix="PART_OF_UPLOAD_DIR_TO_EXCLUDE"
)
wrapper.run()
Mandatory arg¶
bucket_name - Name of the s3 bucket.
upload_dir - Directory to upload.
Optional kwargs¶
s3_prefix - S3 object prefix for each file. Defaults to
Noneexclude_prefix - Path in
upload_dirthat has to be excluded in object keys. Defaults toNoneskip_dot_files - Boolean flag to skip dot files. Defaults to
Trueoverwrite - Boolean flag to overwrite files present in S3. Defaults to
Falsefile_exclusion - Sequence of files to exclude during upload. Defaults to
Nonefolder_exclusion - Sequence of directories to exclude during upload. Defaults to
Nonemetadata_upload_interval - Interval in seconds to upload metadata file. Defaults to
300metadata_filename - Metadata filename to upload periodically. Defaults to
METADATA.jsonlogger - Bring your own custom pre-configured logger. Defaults to on-screen logging.
log_handler - Choose between
stdoutvsfilelogging. Defaults topys3uploader.LogHandler.stdoutlog_level - Choose the logging level. Defaults to
pys3uploader.LogLevel.debugenv_file – Path to a
.envfile for loading environment variables. Defaults to scanning the current directory.region_name - AWS region name. Defaults to the env var
AWS_DEFAULT_REGIONprofile_name - AWS profile name. Defaults to the env var
PROFILE_NAMEaws_access_key_id - AWS access key ID. Defaults to the env var
AWS_ACCESS_KEY_IDaws_secret_access_key - AWS secret access key. Defaults to the env var
AWS_SECRET_ACCESS_KEY
AWS values are loaded from env vars or the default config at
~/.aws/config/~/.aws/credentials
Coding Standards¶
Docstring format: Google
Styling conventions: PEP 8
Clean code with pre-commit hooks: flake8 and
isort
Release Notes¶
Requirement
python -m pip install gitverse
Usage
gitverse-release reverse -f release_notes.rst -t 'Release Notes'
Linting¶
pre-commit will ensure linting, run pytest, generate runbook & release notes, and validate hyperlinks in ALL
markdown files (including Wiki pages)
Requirement
pip install sphinx==5.1.1 pre-commit recommonmark
Usage
pre-commit run --all-files
Pypi Package¶
Runbook¶
License & copyright¶
© Vignesh Rao
Licensed under the MIT License