AWS SDK for Python (boto3) has been validated for use with Wasabi.
To use the AWS SDK for Python execute the following steps:
1) Install the AWS SDK for Python using pip
2) Configure additional AWS CLI profile for Wasabi account using the Wasabi keys (optional)
In this example, we have set the profile name as "wasabi" in the "~/.aws/credentials" file. To help our customers use this SDK with Wasabi, we have provided examples for both IAM and S3. This example shows:
- How to set the credentials.
- Connect to IAM and S3 endpoints
- Create a user using IAM
- Create a Bucket
- Upload and Object to the Bucket
- Read an Object from the Bucket
- Delete the Object from the Bucket
Other examples can be referred from the AWS documentation.
Note that this example discusses the use of Wasabi's us-east-1 storage region. To use other Wasabi storage regions, please use the appropriate Wasabi service URL as described in this article.
1. How to set the credentials
The connection in boto3 can be set via the client method.
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file # for IAM us-east-1 is the default endpoint. session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
iam = boto3.client('<connection name>', endpoint_url='<endpoint-url>', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # iam = boto3.client('<connection name>', # endpoint_url='<endpoint-url>', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
|
2. Connect to IAM and S3 endpoints
IAM:
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file # for IAM us-east-1 is the default endpoint. session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
iam = boto3.client('iam', endpoint_url='https://iam.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name='us-east-1')
# Use the following code to connect directly via raw credentials. # for IAM us-east-1 is the default endpoint. # iam = boto3.client('iam', # endpoint_url='https://iam.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>", # region_name='us-east-1')
|
S3:
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
s3 = boto3.client('s3', endpoint_url='https://s3.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # s3 = boto3.client('s3', # endpoint_url='https://s3.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
|
3. Create a user using IAM
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file # for IAM us-east-1 is the default endpoint. session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
iam = boto3.client('iam', endpoint_url='https://iam.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name='us-east-1')
# Use the following code to connect directly via raw credentials. # for IAM us-east-1 is the default endpoint. # iam = boto3.client('iam', # endpoint_url='https://iam.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>", # region_name='us-east-1')
iam.create_user(UserName='<iam-user>')
|
4. Create a Bucket
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
s3 = boto3.client('s3', endpoint_url='https://s3.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # s3 = boto3.client('s3', # endpoint_url='https://s3.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
bucket_name = "<bucket-name>"
s3.create_bucket(Bucket=bucket_name)
|
5. Upload an object to the Bucket
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
s3 = boto3.client('s3', endpoint_url='https://s3.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # s3 = boto3.client('s3', # endpoint_url='https://s3.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
file_path = "<file-to-upload>" bucket_name = "<bucket-name>" key_name = "<key-name>"
s3.put_object(Body=file_path, Bucket=bucket_name, Key=key_name)
|
6. Read an object from the Bucket
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
s3 = boto3.client('s3', endpoint_url='https://s3.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # s3 = boto3.client('s3', # endpoint_url='https://s3.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
bucket_name = "<bucket-name>" key_name = "<key-name>"
s3.get_object(Bucket=bucket_name, Key=key_name)
|
7. Delete the object from the Bucket
import boto3
# Use the following code to connect using Wasabi profile from .aws/credentials file session = boto3.Session(profile_name="wasabi") credentials = session.get_credentials() aws_access_key_id = credentials.access_key aws_secret_access_key = credentials.secret_key
s3 = boto3.client('s3', endpoint_url='https://s3.wasabisys.com', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
# Use the following code to connect directly via raw credentials. # s3 = boto3.client('s3', # endpoint_url='https://s3.wasabisys.com', # aws_access_key_id="<insert-access-key>", # aws_secret_access_key="<insert-secret-key>")
bucket_name = "<bucket-name>" key_name = "<key-name>"
s3.delete_object(Bucket=bucket_name, Key=key_name)
|