Skip to main content

CloudFront 被 S3 Static Website 轉址

CloudFront 被 S3 Static Website 轉址

碰過幾次了,筆記備忘 T_T 透過 CF URI 取 S3 Origin 的檔案時,正常是從 CF 回覆,但有時瀏覽器會被 307 (不確定是否總是 307) 轉到 S3。原因是 CF 介面自動帶入的是 global/us-standard endpont,取檔時會被導回 regional endpoint,CF 不執行這項轉址,而直接回覆給 requester,造成瀏覽器網址列變動。 除了將 bucket 開在 us-east-1 (us-standard) 之外,可將 CF Origin 改為 Regional Endpoint 解決。聽說 global endpoint 最終會解得出內容,但我從不想等待 🙂

API Gateway 錯誤訊息: Missing Authentication

API Gateway 錯誤訊息: Missing Authentication Token

API Gateway 對一般是 401 (unauthenticated) 與 404 (not found) 都使用這個錯誤訊息,不確定 403 (unauthorized) 是否如此;這次是 CF -> /api/* => APIGW,default => S3 碰到這個錯誤訊息,原因是 APIGW 期待的 URI 不正確。 再以 CF 將 /api 導至 APIGW 的 /prod 時,對 CF:/api/hello 的請求會被轉換成 APIGW:/prod/api/hello,而非 /prod/hello。

暴力猜測 AWS IAM Identity

暴力猜測 AWS IAM Identity

不知道這是 Feature 或 Bug,但在 AWS 裡可以透過 IAM Role Trust Relationship 與 S3 Bucket Policy (合理推測其它 Resource Policy 也行) 中的 Principal 區段,猜測其它帳號下的 IAM ARN 是否合法。 兩者行為略不一致: IAM Role: 會檢查 IAM ARN 是否合法,但授權對象被 hardcode 為對方帳號的 root。因此若寫 “Principal”: { “AWS”: “arn:aws:iam::123412341234:user/admin” }, 該帳號內所有透過 IAM Policy 賦權,允許對該 role 調用 sts:AssumeRole 的 Identity,都可以 Assume 成這個 IAM Role;或曰,取得對應的 Credential。 S3 Bucket […]

CloudFront 502 除錯

CloudFront 502 除錯

最近腦波弱,犯不少愚蠢錯誤 T_T 前陣子把這邊 (blog) 的 ELB 拆掉,也把 HTTP Certificate 從 ACM 換回 Letsencrypt,結果 CDN (CloudFront)  就炸了…. 今天趁出來開會,查了下 Manual 才發現,如果會 forward HTTP request header Host,則 CF 會要求 Origin Certificate 中 CN 或 Alt Name 包含該 host 才認可,否則會拒絕 (502)。隔壁篇也有 503 的除錯建議。 RTFM 非常關鍵,一定要熟記啊 T_T

Lambda Container Reuse

Lambda Container Reuse

透過測試程式碼,探討 AWS Lambda 使用與復用 (reuse) Container 的機轉。context.done() 會觸發 freeze() 排程,不檢查 EventLoop 因此下次復用時會執行前次留存的任務;4.3 的 callback() 則不觸發 freeze(),改由監控 event loop 控制排程,計算執行時間,並可能觸發 timeout 並阻止該 Container 被 Freeze。