close
在看了一堆文章後,不斷的嘗試與犯錯,甚至經歷把 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
文章標籤
全站熱搜
留言列表