Skip to main content

AWS CLI

This guide assumes that you have followed the steps in the Getting Started guide, and have the access keys available.

Service Endpoints

Requests to Tigris must be directed to the appropriate service endpoint:

  • IAM requests must be directed to https://fly.iam.storage.tigris.dev
  • S3 requests must be directed to https://fly.storage.tigris.dev

When using the AWS CLI, this service endpoint is set by default based on the region and is not configured by the user directly. AWS S3 recommends using per-region service endpoints, whereas Tigris provides a single global endpoint and manages all regional configurations for you. Tigris is S3-compatible, which means that you can use familiar S3 based tools like the AWS CLI, provided you change the service endpoint to point to Tigris.

Configuring AWS CLI

Once you have your access key, you can configure the AWS CLI with the following command:

aws configure
AWS Access Key ID [None]: <tid_>
AWS Secret Access Key [None]: <tsec_>
Default region name [None]: auto
Default output format [None]: json

You can then use the AWS CLI as you normally would, but with the --endpoint-url flag set to https://fly.storage.tigris.dev:

aws s3api list-buckets --endpoint-url https://fly.storage.tigris.dev
aws s3api list-objects-v2 --endpoint-url https://fly.storage.tigris.dev --bucket foo-bucket

Setting the endpoint URL in credentials file

You can also modify the ~/.aws/credentials file directly, and add the endpoint URL to it so that you don't have to specify it every time:

nano ~/.aws/credentials

[default]
aws_access_key_id=<tid>
aws_secret_access_key=<tsec_>
endpoint_url=https://fly.storage.tigris.dev

Once this is done, you can use the AWS CLI as you normally would (without the --endpoint-url flag):

aws s3api list-buckets
aws s3api list-objects-v2 --bucket foo-bucket

Using multiple AWS Profiles

If you want to use Tigris alongside AWS, you'll need to differentiate your access keys. The most common way to do this is by adding another profile to ~/.aws/credentials.

nano ~/.aws/credentials

[aws-compute]
aws_access_key_id=<tid>
aws_secret_access_key=<tsec_>

[tigris]
aws_access_key_id=<tid>
aws_secret_access_key=<tsec_>
endpoint_url=https://fly.storage.tigris.dev

You can verify the profiles are configured correctly:

aws configure list-profiles
# output:
# aws-compute
# tigris

You can switch between profiles per command by simply passing the name of the profile to the profile flag at the end of your command.

aws s3 ls --profile <name of profile>

Using presigned URLs

Generating a presigned URL

Presigned URLs can be generated using the AWS CLI as follows:

aws s3 presign s3://foo-bucket/bar-object --expires-in 604800

You can then use the generated URL to upload or download objects.