Skip to content

Using lakeFS with AWS CLI

lakeFS exposes an S3-compatible API, so you can use the AWS S3 CLI to interact with objects in your repositories.

Configuration

You would like to configure an AWS profile for lakeFS.

To configure the lakeFS credentials, run:

bash aws configure --profile lakefs

You will be prompted to enter the AWS Access Key ID and the AWS Secret Access Key.

It should look like this:

```bash aws configure --profile lakefs

output:

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE

AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Default region name [None]:

Default output format [None]:

```

Path convention

When accessing objects in S3, you will need to use the lakeFS path convention:

s3://[REPOSITORY]/[BRANCH]/PATH/TO/OBJECT

Usage

After configuring the credentials, this is what a command should look:

bash aws s3 --profile lakefs \ --endpoint-url https://lakefs.example.com \ ls s3://example-repo/main/example-directory

You can use an alias to make it shorter and more convenient.

Examples

List directory

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 ls s3://example-repo/main/example-directory

Copy from lakeFS to lakeFS

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 cp s3://example-repo/main/example-file-1 s3://example-repo/main/example-file-2

Copy from lakeFS to a local path

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 cp s3://example-repo/main/example-file-1 /path/to/local/file

Copy from a local path to lakeFS

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 cp /path/to/local/file s3://example-repo/main/example-file-1

Delete file

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 rm s3://example-repo/main/example-directory/example-file

Delete directory

bash aws --profile lakefs \ --endpoint-url https://lakefs.example.com \ s3 rm s3://example-repo/main/example-directory/ --recursive

Adding an alias

To make the command shorter and more convenient, you can create an alias:

bash alias awslfs='aws --endpoint https://lakefs.example.com --profile lakefs'

Now, the ls command using the alias will be as follows:

bash awslfs s3 ls s3://example-repo/main/example-directory