mpu.aws

Convenience functions for AWS interactions.

class mpu.aws.ExistsStrategy(value)[source]

Bases: enum.Enum

Strategies what to do when a file already exists.

ABORT = 'abort'
RAISE = 'raise'
REPLACE = 'replace'
class mpu.aws.S3Path(bucket_name, key)

Bases: tuple

bucket_name

Alias for field number 0

key

Alias for field number 1

mpu.aws.list_files(bucket: str, prefix: str = '', profile_name: Optional[str] = None)List[str][source]

List up to 1000 files in a bucket.

Parameters
  • bucket (str) –

  • prefix (str) –

  • profile_name (str, optional) – AWS profile

Returns

s3_paths

Return type

List[str]

mpu.aws.s3_download(source: str, destination: Optional[str] = None, exists_strategy: mpu.aws.ExistsStrategy = <ExistsStrategy.RAISE: 'raise'>, profile_name: Optional[str] = None)Optional[str][source]

Copy a file from an S3 source to a local destination.

Parameters
  • source (str) – Path starting with s3://, e.g. ‘s3://bucket-name/key/foo.bar’

  • destination (str, optional) – If none is given, a temporary file is created

  • exists_strategy ({'raise', 'replace', 'abort'}) – What is done when the destination already exists? * ExistsStrategy.RAISE means a RuntimeError is raised, * ExistsStrategy.REPLACE means the local file is replaced, * ExistsStrategy.ABORT means the download is not done.

  • profile_name (str, optional) – AWS profile

Returns

download_path – Path of the downloaded file, if any was downloaded.

Return type

Optional[str]

Raises

botocore.exceptions.NoCredentialsError – Botocore is not able to find your credentials. Either specify profile_name or add the environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_SESSION_TOKEN. See https://boto3.readthedocs.io/en/latest/guide/configuration.html

mpu.aws.s3_read(source: str, profile_name: Optional[str] = None)bytes[source]

Read a file from an S3 source.

Parameters
  • source (str) – Path starting with s3://, e.g. ‘s3://bucket-name/key/foo.bar’

  • profile_name (str, optional) – AWS profile

Returns

content

Return type

bytes

Raises

botocore.exceptions.NoCredentialsError – Botocore is not able to find your credentials. Either specify profile_name or add the environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_SESSION_TOKEN. See https://boto3.readthedocs.io/en/latest/guide/configuration.html

mpu.aws.s3_upload(source: str, destination: str, profile_name: Optional[str] = None)None[source]

Copy a file from a local source to an S3 destination.

Parameters
  • source (str) –

  • destination (str) – Path starting with s3://, e.g. ‘s3://bucket-name/key/foo.bar’

  • profile_name (str, optional) – AWS profile