One thing I wanted to make sure is that the urls of my website would not contain the .html extension. For example, compare the URL of the page you're viewing now with the alternative
It turns out that arranging this is easier said than done. The thing is that Amazon tries to infer the MIME type of the content based on the file extension. This means that a file called s3cmd.html would be served with the HTTP header
Content-Type: text/html. When the file extension is lacking, the S3 static server sets the Content-Type header to the default
True, the MIME type can easily be overridden on a file-by-file basis by manually setting it via the Amazon Console. However, this can be a laborous task if you serve many files, and it is something I definitely do not want to worry about every time I upload files to my bucket.
Luckily, there are tools available that allow you to upload files to your bucket from your command line, and that allow you to set the MIME type while you're at it. I decided to install a tool called s3cmd. First, install s3cmd.
git clone https://github.com/s3tools/s3cmd.git cd s3cmd/ python setup.py install
Now, to check whether the program was installed successfully, run
s3cmd --version. After s3cdm is installed correctly, it is time to configure it with your Amazon S3 keys. First, run
s3cmd --configure. Supply it the keys that can be found on Amazon's security credentials page. Then walk through the configuration wizard - you will be asked to enter an enctryption key, specify the path to the GPG program, and whether you want to use to transfer your data over the TLS protocol. Finally you will be asked whether you want to save your settings. Your settings will be saved in
It is easy to do some basic nagivation through your buckets. You'll see I have two buckets, and that the first one contains a file called index.html.
$ s3cmd ls s3://markteisman.com s3://www.markteisman.com $ s3cmd ls s3://markteisman.com 2013-08-15 20:22 8713 s3://markteisman.com/index.html
Now, to upload a file at
$HOME/articles/s3cmd (i.e. this article) while setting the MIME type to
text/html, enter the following command:
s3cmd put --acl-public --mime-type=text/html \ $HOME/articles/s3cmd \ s3://markteisman.com
That was it. This should be enough to get you started.