1.在 CloudFront 控制台中,创建新的分配

对于 origin 部分,origin domain 选择对应的S3存储桶

2.创建OAC(Origin access control)也就是源访问控制;

3.填写名称和描述,保留默认设置也可以,点击"Create"

4.创建完成后会提醒:You must update the S3 bucket policy,CloudFront will provide you with the policy statement after creating the distribution.

创建完分配后,CloudFront 将为您提供策略,需要把提供的策略放进s3中

5.可以先暂时保留 cloudfront 默认配置,创建分配;

6.创建完成后,会有提醒“复制策略”

7.来到 s3存储桶策略,把 OAC 生成的策略放入该策略中:

需要注意的是,如果我们只想给通过cloudfront 让其他人访问某些目录下的资源,其他目录的资源依旧是vpc之间代码访问或者内网访问。

"Resource": "arn:aws:s3:::shawn-uat/*",需要对这个路径进行修改,指定允许通过cdn访问的目录,如下面策略所示指定了桶的 pic1和 pic2目录下的文件可以通过 cdn 访问;
{
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "AllowCloudFrontServicePrincipal",
                "Effect": "Allow",
                "Principal": {
                    "Service": "cloudfront.amazonaws.com"
                },
                "Action": "s3:GetObject",
                "Resource": [
                "arn:aws:s3:::shawn-uat/pic1/",
                "arn:aws:s3:::shawn-uat/pic2/"
                ],
                "Condition": {
                    "StringEquals": {
                      "AWS:SourceArn": "arn:aws:cloudfront::893420598334:distribution/E1Y22YBY7JPKJ6"
                    }
                }
            }
        ]
      }

8.测试访问路径:
https://d31k00r8qiux4n.cloudfront.net/pic1/boat.jpg    (pic1路径下可访问)


https://d31k00r8qiux4n.cloudfront.net/pic2/cloud.jpg    (pic2路径下可访问)


https://d31k00r8qiux4n.cloudfront.net/pic3/tokyo.jpg     (pic3路径下报错,不可访问)