Amazon S3 downloads index.html instead of serving

后端 未结 5 1216
感情败类
感情败类 2020-12-05 12:35

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

相关标签:
5条回答
  • 2020-12-05 13:09

    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.

    0 讨论(0)
  • 2020-12-05 13:19

    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)

    0 讨论(0)
  • 2020-12-05 13:23

    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.

    0 讨论(0)
  • 2020-12-05 13:25

    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

    0 讨论(0)
  • 2020-12-05 13:28

    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

    0 讨论(0)
提交回复
热议问题