Learn more at s3.scality.com
In order to contribute, please follow the Contributing Guidelines.
Building and running the S3 Server requires node.js 4.2 or greater and npm 2.7 or greater. Up-to-date versions can be found at Nodesource.
git clone https://github.com/scality/S3.gitGo to the ./S3 folder,
npm installnpm startThis starts an S3 server on port 8000. The default access key is accessKey1 with a secret key of verySecretKey1.
By default the metadata files will be saved in the localMetadata directory and the data files will be saved in the localData directory within the ./S3 directory on your machine. These directories have been pre-created within the repository. If you would like to save the data or metadata in different locations of your choice, you must specify them. So, when starting the server:
export S3DATAPATH="/s3/myFavoriteDataPath"
export S3METADATAPATH="/s3/myFavoriteMetadataPath"
npm startnpm run mem_backendThis starts an S3 server on port 8000. The default access key is accessKey1 with a secret key of verySecretKey1.
You can run the unit tests with the following command:
npm testYou can run the linter with:
npm run lintYou can run local functional tests with:
npm run mem_backend &
npm run ft_testIf you want to specify an endpoint (other than localhost), you need to add it to your config.json:
"regions": {
"localregion": ["localhost"],
"specifiedregion": ["myhostname.com"]
},Note that our S3server supports both:
- path-style: http://myhostname.com/mybucket
- hosted-style: http://mybucket.myhostname.com
However, hosted-style requests will not hit the server if you are using an ip address for your host. So, make sure you are using path-style requests in that case. For instance, if you are using the AWS SDK for JavaScript, you would instantiate your client like this:
const s3 = new aws.S3({
endpoint: 'http://127.0.0.1:8000',
s3ForcePathStyle: true,
});If using s3cmd as a client to S3 be aware that v4 signature format is buggy in s3cmd versions < 1.6.1.
