This page provides some examples of using the S3 API.
Boto3
Boto3 is the official AWS SDK for Python, used to create, configure, and manage AWS services.
We will provide examples of defining a resource/client in boto3 for the Weka S3 service, managing credentials, pre-signed URLs, generating secure temporary tokens, and using those to run S3 API calls.
Installation
pip install boto3
Credentials
There are many ways to set credentials in boto3, as described on the boto3 credentials page. It's worth emphasizing the Assume Role Provider method, which uses the access/secret keys to automatically generate and use the temporary security token.
Resource
Resources represent an object-oriented interface to Amazon Web Services (AWS). They provide a higher-level abstraction than the raw, low-level calls made by service clients. To use resources, you invoke the resource() method of a Session and pass in a service name:
Clients provide a low-level interface to AWS whose methods map close to 1:1 with service APIs. All service operations are supported by clients (in our case, s3 and sts)
An example of using boto3 resource to upload and download an object:
#!/usr/bin/env/pythonimport boto3import loggingfrom botocore.exceptions import ClientErrorfrom botocore.client import Configconfig =Config( signature_version ='s3v4')s3 = boto3.resource('s3', endpoint_url='https://weka:9000', aws_access_key_id='s3_key', aws_secret_access_key='s3_secret', config=config)try:# upload a file from local file system 'myfile' to bucket 'mybucket' with 'my_uploaded_object' as the object name. s3.Bucket('mybucket').upload_file('myfile','my_uploaded_object')# download the object 'piano.mp3' from the bucket 'songs' and save it to local FS as /tmp/classical.mp3 s3.Bucket('mybucket').download_file('my_uploaded_object', 'my_downloaded_object')except ClientError as e: logging.error(e)print"Downloaded 'my_downloaded_object' as 'my_uploaded_object'. "
Create Bucket Example
An example for creating a bucket newbucket with a boto3 client: