【问题标题】:AWS S3 static bucket hosting-Internal Server ErrorAWS S3 静态存储桶托管-内部服务器错误
【发布时间】:2018-06-20 22:41:21
【问题描述】:

我设置了一个 AWS S3 存储桶来使用我自己的 URL 托管一个静态网站。存储桶和里面的文件的所有权限都是公开的。我通过打开 index.html 页面的公共链接确认了这一点。当我输入我的 URL (ianpritchard.com) 时,我收到一个内部服务器错误。我将日志记录在存储桶上,并看到我的请求被拒绝访问。有谁知道为什么?我确实在我的托管区域中设置了 A 记录。

<Error> 
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>xxx</RequestId>
  <HostId> xxxx </HostId>
</Error> 

存储桶策略在这里 -

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::xxxx/"
        }
    ]
}

【问题讨论】:

  • 发布日志。使用存储桶策略公开? ACL?
  • @Kashyap 谢谢你的帮助。日志在这里(x 字符是我的混淆)- AccessDenied Access Deniedxxx xxxx 存储桶策略在这里 - { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "”、“动作”:“s3:GetObject”、“资源”:“arn:aws:s3:::xxxx/” } ] }
  • 访问被拒绝错误,它用于哪个 S3 对象/资源?
  • 它没有在日志中说,但我认为它将用于 ianpritchard.com 存储桶中的 index.html。不过,它可以通过其面向公众的 URL 访问。
  • @Kashyap 一个可能的线索。当我查看 AWS 控制台中的注册域页面时,我看到了来自我原来的托管公司(ns1.netfirms.com 和 ns2.netfirms.com)的名称服务器。在 DNS 部分中,NS 记录显示了正确的 Route 53 名称服务器。这会导致这个问题吗?有什么我可以尝试看看是否可以纠正的吗?重命名域名页面名称服务器?

标签: amazon-web-services web amazon-s3 static


【解决方案1】:

您的设置问题是您的 IP 指向的是公司 IP 而不是 AWS。

AWS 为托管域提供了一个干净的设置程序,

https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html

分 4 步。

开始之前

Step 1: Register a Domain
Step 2: Create and Configure Buckets and Upload Data
Step 3: Add Alias Records for example.com and www.example.com
Step 4: Testing

希望对你有帮助。

【讨论】:

  • 谢谢@Kannaiyan。我完成了所有这些步骤——我有一个指向 ianprtchard.com 的 A 记录(我的站点和我的公共存储桶的名称)指向 AWS 存储桶,还有一个指向 ianpritchard 的 www.ianpritchard.com 的 A 记录。 com。这些记录看起来与我直接在 Route 53 上注册的站点的记录完全相同(而不是从其他注册商转移域)。
【解决方案2】:

你的策略看起来很奇怪,资源应该是xxx/*,主体应该是*:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"publicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::xxxx/*"]
    }
  ]
}

看到一些example here

不确定为什么/如何获得index.html,请发布您的 index.html 页面的公共链接:

【讨论】:

  • 谢谢@Kashyap。 index.html 的 URL 是 s3.amazonaws.com/ianpritchard.com/index.html 当我剪切并粘贴到 StackOverflow 中时,它会删除我的星号,但该政策确实看起来您如何建议 AWS 中的委托人和资源。
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 2017-12-29
  • 2021-12-05
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多