mirror of
https://github.com/drakkan/sftpgo.git
synced 2024-11-22 15:40:23 +00:00
5720d40fee
in this mode chmod/chtimes/chown can be silently ignored only for cloud based file systems Fixes #223
35 lines
3 KiB
Markdown
35 lines
3 KiB
Markdown
# S3 Compatible Object Storage backends
|
|
|
|
To connect SFTPGo to AWS, you need to specify credentials, a `bucket` and a `region`. Here is the list of available [AWS regions](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). For example, if your bucket is at `Frankfurt`, you have to set the region to `eu-central-1`. You can specify an AWS [storage class](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) too. Leave it blank to use the default AWS storage class. An endpoint is required if you are connecting to a Compatible AWS Storage such as [MinIO](https://min.io/).
|
|
|
|
AWS SDK has different options for credentials. [More Detail](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html). We support:
|
|
|
|
1. Providing [Access Keys](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).
|
|
2. Use IAM roles for Amazon EC2
|
|
3. Use IAM roles for tasks if your application uses an ECS task definition
|
|
|
|
So, you need to provide access keys to activate option 1, or leave them blank to use the other ways to specify credentials.
|
|
|
|
Specifying a different `key_prefix`, you can assign different "folders" of the same bucket to different users. This is similar to a chroot directory for local filesystem. Each SFTP/SCP user can only access the assigned folder and its contents. The folder identified by `key_prefix` does not need to be pre-created.
|
|
|
|
SFTPGo uses multipart uploads and parallel downloads for storing and retrieving files from S3.
|
|
|
|
For multipart uploads you can customize the parts size and the upload concurrency. Please note that if the upload bandwidth between the client and SFTPGo is greater than the upload bandwidth between SFTPGo and S3 then the client should wait for the last parts to be uploaded to S3 after finishing uploading the file to SFTPGo, and it may time out. Keep this in mind if you customize these parameters.
|
|
|
|
The configured bucket must exist.
|
|
|
|
Some SFTP commands don't work over S3:
|
|
|
|
- `chtimes`, `chown` and `chmod` will fail. If you want to silently ignore these method set `setstat_mode` to `1` or `2` in your configuration file
|
|
- `truncate`, `symlink`, `readlink` are not supported
|
|
- opening a file for both reading and writing at the same time is not supported
|
|
- upload resume is not supported
|
|
- upload mode `atomic` is ignored since S3 uploads are already atomic
|
|
|
|
Other notes:
|
|
|
|
- `rename` is a two step operation: server-side copy and then deletion. So, it is not atomic as for local filesystem.
|
|
- We don't support renaming non empty directories since we should rename all the contents too and this could take a long time: think about directories with thousands of files: for each file we should do an AWS API call.
|
|
- For server side encryption, you have to configure the mapped bucket to automatically encrypt objects.
|
|
- A local home directory is still required to store temporary files.
|
|
- Clients that require advanced filesystem-like features such as `sshfs` are not supported.
|