在看了一堆文章後,不斷的嘗試與犯錯,甚至經歷把 server 搞掛了好一陣子,總算成功的把 AWS 的 CloudFront 服務連結到 S3 的檔案資料來做 CDN,現在想想要是自己英文夠好,說不定根本不用繞這麼一大圈來走。

目前記得的幾個重要步驟:

PART 1:建立 S3 bucket,並且設定 bucket policy,讓整個 bucket 內的檔案皆能被讀取,policy 內容大致如下:

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

PART 2:CloudFront 建立 Distribution,由於使用的 S3,目的只是用來存放各種檔案,所以選用 Web 類型

Step 1. 建立 Web 類型的 Distribution


Step 2. 選擇要連結的 S3 bucket 名稱,並且記得把 Restrict Bucket Access 選成 yes, 並且指定好 identity 並自動去更新 S3 的 policy


Stpe 3. S3 更新 policy 後,大概會長這樣

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3UTXKOK3ZE5H"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

Step 4. 接下來的設定,我採用預設的條件,接著指定個 CNAME,之後需要自行設定 domain name,這裡我採用 cdn 當sub-domain

Step 5. 按下建立後,等待一段處理的時間,當狀態從 InProgress 變成 Deployed,這期間可以先去網域提供商,設定好自己的 CNAME

Step 6. 以我自己為例,我目前的 domain 是使用 Namecheap 申請管理的,所以先查好 cloudfront 原本提供的 domain name,在設定到自己網域名稱的 CNAME 內

Step 7. 最後上傳個檔案到 S3 測試是否成功,上傳後,找出 S3 上的網址

https://s3-ap-northeast-1.amazonaws.com/your-bucket-name/object-key
將 s3-region.amazionaws.com/your-bucket-name 改成 cdn.your.domain
https://cdn.your.domain/object-key
文章標籤
創作者介紹

每天都有新鮮事

soarlin 發表在 痞客邦 PIXNET 留言(0) 人氣()