在Amazon S3 上架设静态网站

在s3简单使用文章中,简单的说道了s3的website功能。可以把s3的buckets当做一个静态网站来浏览,并做了一个简单的页面。

但是有2个问题没有解决。

1.域名问题。

像http://lixin.s3-website-ap-northeast-1.amazonaws.com/ 这么有长度的域名肯定不是友好的。如果你自己拥有一个域名,那么一定是希望弄个简单好记有意义的名字来访问。这时候你需要设置别名(cname)来访问。

2.访问权限问题。

之前文章的例子中,整站只有2个文件,我都是手动设置他们的属性为everyone可读。假使你的静态网站很多文件,那么手动设置不可能,得使用一个配置文件来全局设置才行。

首先,我在s3上新建了一个叫“lixin-log”的buckets,获得其地址http://lixin-log.s3-website-ap-northeast-1.amazonaws.com/ ,然后新建一个别名cname(log.lixin.me)指向这个地址,然后访问。发现以下错误。

404 Not Found

  • Code: NoSuchBucket
  • Message: The specified bucket does not exist
  • BucketName: log.lixin.me

错误显示,找不到一个叫做“log.lixin.me”的buckets。确实,我只新建了一个叫“lixin-log”的buckets。

从错误提示中,我们可以知道,使用别名映射的时候,你的buckets的名字应该和别名一致。即我使用一个叫做“log.lixin.me”的域名来访问s3,那么在s3上的buckets的名字就应该叫做“log.lixin.me”。域名对应buckets名。

 

当域名和buckets名字问题解决后,再次浏览,之前的404错误页面没有了,取而代之的是403页面。

403 Forbidden

  • Code: AccessDenied
  • Message: Access Denied

没有权限访问。因为现在里面的文件都还是私有的,没有配置everyone可读。这里不再是手动一个个的设置,而是使用Policy文件来设置。

Policy是一个json文本,在buckets属性的Permission选项卡里。

{
  "Id": "Policy1326378188459",
  "Statement": [
    {
      "Sid": "Stmt1326378181469",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::s3.lixin.me/*",
      "Principal": {
        "AWS": [
          "*"
        ]
      }
    }
  ]
}

上面就是一个简单的policy文件。大致意思就是,允许*所有用户具有读取s3.lixin.me这个buckets下的所有文件。这样就把整个buckets当作可读的静态网站了。

 

原文出处

你可能感兴趣的:(在Amazon S3 上架设静态网站)