I\'ve set up Amazon S3 to serve my static site, speakeasylinguistics.com
. All of the DNS stuff seems to be working okay, because dig +recurse +trace www.s
Running curl -I against the url you posted gives the following result:
curl -I http://speakeasylinguistics.com.s3-website-us-east-1.amazonaws.com/
HTTP/1.1 200 OK
x-amz-id-2: DmfUpbglWQ/evhF3pTiXYf6c+gIE8j0F6mw7VmATOpfc29V5tb5YTeojC68jE7Rd
x-amz-request-id: E233603809AF9956
Date: Sun, 18 Aug 2013 07:58:55 GMT
Content-Disposition: attachment
Last-Modified: Sun, 18 Aug 2013 07:05:20 GMT
ETag: "eacded76ceb4831aaeae2805c892fa1c"
Content-Type: text/html
Content-Length: 2585
Server: AmazonS3
This line is the culprit:
Content-Disposition: attachment
If you are using the AWS console, I believe this can be changed by selecting the file in S3 and modifying its meta data by removing this property.
If you are using AWS S3 Bitbucket Pipelines Python, then add the parameter content_type as follow:
s3_upload.py
def upload_to_s3(bucket, artefact, bucket_key, content_type):
...
def main():
...
parser.add_argument("content_type", help="Content Type File")
...
if not upload_to_s3(args.bucket, args.artefact, args.bucket_key, args.content_type):
and modify bitbucket-pipelines.yml as follow:
...
- python s3_upload.py bucket_name file key content_type
...
Where content_type param can be one of following: MIME types (IANA media types)
If you are using Hashicorp Terraform you can specify the content-type
on an aws_s3_bucket_object as follows
resource "aws_s3_bucket_object" "index" {
bucket = "yourbucketnamehere"
key = "index.html"
content = "<h1>Hello, world</h1>"
content_type = "text/html"
}
This should serve your content appropriately in the browser.
if you guys are trying to upload it with Boto3 and python 3.7 or above try with
s3 = boto3.client('s3')
S3.upload_file(local_file,bucket,S3_file,ExtraArgs={'ContentType':'text/html'})
for update Content-Type
If you are doing this programmatically you can set the ContentType
and/or ContentDisposition
params in your upload.
[PHP Example]
$output = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => md5($share). '.html',
'ContentType' => 'text/html',
'Body' => $share,
));
putObject Docs