To connect SFTPGo to AWS, you need to specify credentials, a bucket and a region. Here is the list of available AWS 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 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.
AWS SDK has different options for credentials. More Detail. We support:
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 virtual 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 virtual folder and its contents. The virtual 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 SFTP client and SFTPGo is greater than the upload bandwidth between SFTPGo and S3 then the SFTP client have to wait for the upload of the last parts to S3 after it ends the file upload 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:
symlink and chtimes will failchown and chmod are silently ignoredatomic is ignored since S3 uploads are already atomicOther notes:
rename is a two step operation: server-side copy and then deletion. So, it is not atomic as for local filesystem.