# How to Deploy Cloudian S3-compatible Storage with AWS Mountpoint

For this example of how to connect AWS Mountpoint to a Cloudian HyperStore bucket we will be deploying and configuration the following:

- AWS CLI
- AWS Mountpoint

We will be leveraging an existing Cloudian HyperStore 7.5.3 (minimum) environment and a CentOS Linux VM as a client host.

### Prepare HyperStore User and Bucket for AWS Mountpoint

- Log into HyperStore Cloudian Management Console (CMC) and create the appropriate group/user and target bucket. Note the user’s Access & Secret Key information.

![Mountpoint](https://cloudian.com/wp-content/uploads/2024/05/Screenshot-2024-05-07-at-7.49.11 AM.png?w=1024)

![Mountpoint](https://cloudian.com/wp-content/uploads/2024/05/Screenshot-2024-05-07-at-7.49.42 AM.png?w=1024)![Mountpoint](https://cloudian.com/wp-content/uploads/2024/05/Screenshot-2024-05-07-at-7.49.58 AM.png?w=1024)

AWS Mountpoint will use the credential configuration in /home/.aws folder, so it is helpful to have AWS CLI installed.

### Install AWS CLI

Numerous online sources exist for install, and for convenience included here:

- Download & Install AWS CLI

```
[root@hs753 awscli]# mkdir /opt/awscli

[root@hs753 awscli]# pwd

/opt/awscli

[root@hs753 awscli] curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

[root@hs753 awscli] unzip awscliv2.zip

[root@hs753 awscli]# ./aws/install
```

You can now run: /usr/local/bin/aws –version

```
[root@hs753 awscli]# aws --version

aws-cli/2.15.44 Python/3.11.8 Linux/3.10.0-1160.71.1.el7.x86_64 exe/x86_64.centos.7 prompt/off

[root@hs753 awscli]# aws configure
```

```
AWS Access Key ID [None]:

AWS Secret Access Key [None]:

Default region name [None]:

Default output format [None]:
```

During this section, enter the appropriate AWS Access & Secret Key and default Region name.

### Install & Configuration AWS Mountpoint

Download and install the latest version of AWS Mountpoint.

```
[root@hs753]# mkdir /opt/awsmountpoint

[root@hs753 awsmountpoint]# pwd

/opt/awsmountpoint
```

```
[root@hs753 awsmountpoint]# wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm

--2024-05-06 14:18:03--  https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
```

```
Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.216.217.80, 54.231.136.200, 52.216.39.112, ...

Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.216.217.80|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 12042192 (11M) [binary/octet-stream]

Saving to: ‘mount-s3.rpm’
```

```
100%[===============>] 12,042,192  11.6MB/s   in 1.0s

2024-05-06 14:18:05 (11.6 MB/s) - ‘mount-s3.rpm’ saved [12042192/12042192]

[root@hs753 awsmountpoint]# yum install -y mount-s3.rpm

[root@hs753 awsmountpoint]# mount-s3 --version

mount-s3 1.6.0

[root@hs753 awsmountpoint]# mkdir /mnt/awsmountpoint
```

To mount the HyperStore S3 bucket, execute the following command:

```
[root@hs753 mnt]# mount-s3 --region region1 --endpoint-url http://s3-region1.localdomain.local:80 awsmountpoint /mnt/awsmountpoint/

bucket awsmountpoint is mounted at /mnt/awsmountpoint/
```

In this example:

The HyperStore region is: “region1”

The HyperStore endpoint is specified via:

```
--endpoint-url “http://-s3 region1.localdomain.local:80”
```

Target mounting bucket is: awsmountpoint

Local mounting directory is: /mnt/awsmountpoint

### Verification Test

Verify the HyperStore bucket has been mounted successfully by copying a file to the /mnt/awsmountpoint directory:

```
[root@hs753 awscli]# cp awscliv2.zip /mnt/awsmountpoint/

[root@hs753 awscli]# cd /mnt/awsmountpoint/

[root@hs753 awsmountpoint]# ls -l

total 59098

-rw-r--r--. 1 root root 60516068 May  6 14:22 awscliv2.zip
```

Verification can also be performed via HyperStore CMC:

![Mountpoint](https://cloudian.com/wp-content/uploads/2024/05/Screenshot-2024-05-07-at-7.50.16 AM.png?w=1024)

#### Common Troubleshooting

**Timeout Errors:**

Verify correct port of HyperStore cluster and connectivity.

```
[root@hs753 /]# mount-s3 --region region1 --endpoint-url http://s3-region1.localdomain.local:80 awsmountpoint /mnt/awsmountpoint/
```

```
Error: Timeout after 30 seconds while waiting for mount process to be ready
```

**Credential Errors:**

Double check credentials in /home/.aws/credentials.

```
[root@hs753 awsmountpoint]#  mount-s3 --region region1 --endpoint-url http://s3-region1.localdomain.local:80 awsmountpoint /mnt/awsmountpoint/

Error: Failed to create S3 client
```

Caused by:

```
    0: initial ListObjectsV2 failed for bucket awsmountpoint in region us-east-1

    1: Client error

    2: No signing credentials found

Error: Failed to create mount process
```

**Self Signed S3 Certificate:**

Unfortunately, at this time it is not possible to disable TLS Certificate Verification ([https://github.com/awslabs/mountpoint-s3/issues/717](https://github.com/awslabs/mountpoint-s3/issues/717)) with AWS Mountpoint; this will cause any HyperStore cluster leveraging self-signed certificates to fail mounting.

```
[root@hs753 awsmountpoint]# mount-s3 --region region1 --endpoint-url https://s3-region1.localdomain.local:443 awsmountpoint /mnt/awsmountpoint/

Error: Failed to create S3 client
```

Caused by:

```
    0: initial ListObjectsV2 failed for bucket awsmountpoint in region us-east-1

    1: Client error

    2: Unknown CRT error

    3: CRT error 1029: aws-c-io: AWS_IO_TLS_ERROR_NEGOTIATION_FAILURE, TLS (SSL) negotiation failed

Error: Failed to create mount process
```
