使用Terraform可以在來源站點返回至ESA的響應上添加、刪除或變更HTTP回應標頭,例如按請求動態回寫CORS頭。
安裝Terraform並配置許可權
在本地安裝和配置Terraform
您可以參考安裝和配置Terraform,在本地使用Terraform。
由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化許可權需求的RAM使用者的AccessKey。具體操作方式請參見建立AccessKey。
建立環境變數,用於存放身份認證資訊。
在AccessKey管理頁面上建立和查看您的AccessKey。
若無對應環境變數,在執行terraform模板時無法確認身份資訊,將會導致調用失敗。
使用線上服務(免安裝和許可權配置)
如果您不想安裝Terraform,可以直接使用線上服務Cloud Shell。
阿里雲Cloud Shell是一款協助您營運的免費產品,預裝了Terraform的組件,並配置好身份憑證(Credentials)。因此您可直接在Cloud Shell中運行Terraform的命令。更多資訊,請參見使用Terraform快速建立資源。
通過Cloud Shell使用Terraform時,由於其銷毀特性會導致資料丟失,因此建議您使用Cloud Shell做簡單、快速的操作,例如調試。更多使用限制,請參見使用限制。
涉及的資源
配置入站回應標頭修改規則
建立一個名為
main.tf的設定檔,然後將以下代碼複製到設定檔中,用於為網站建立入站回應標頭修改規則(來源站點到ESA)。# 1. 查詢已有網站資訊 data "alicloud_esa_sites" "default" { site_name = "{{DOMAIN}}" # 替換為您已接入邊緣安全加速的網站網域名稱 } # 2. 修改入站回應標頭(來源站點到邊緣安全加速):在匹配 Origin 的請求響應中回寫 Access-Control-Allow-Origin resource "alicloud_esa_http_incoming_response_header_modification_rule" "example" { site_id = data.alicloud_esa_sites.default.sites[0].site_id rule_name = "cors-mirror-origin-example" rule_enable = "on" rule = "(http.request.headers[\"origin\"] in {\"http://www.example.com\" \"https://www.example.com\" \"http://image.example.com\" \"https://image.example.com\"})" response_header_modification { operation = "add" name = "Access-Control-Allow-Origin" value = "http.request.headers[\"origin\"]" type = "dynamic" } }進入設定檔所在目錄,執行如下命令,初始化Terraform環境。
terraform init執行如下命令,驗證Terraform文法與配置。
terraform validate執行如下命令,預覽執行結果。
terraform plan執行如下命令,執行Terraform指令碼。
terraform apply依據提示輸入
yes確認執行即可。
驗證結果
執行 terraform show 命令
您可以在工作目錄中,使用以下命令查詢 Terraform 已建立資源的詳細資料:
terraform show登入控制台查看
在ESA控制台選擇網站管理,在網站列單擊目標網站。
在左側導覽列,選擇。在對應子功能頁查看已建立的規則及配置。
(可選)清理資源
當您不再需要上述通過Terraform建立或管理的資源時,請運行terraform destroy命令以釋放資源。
terraform destroy相關參考
response_header_modification.operation 說明
Terraform 的 alicloud_esa_http_incoming_response_header_modification_rule資源中,response_header_modification 內 operation 取值如下表所示。
取值 | 含義 | 說明 |
| 添加 | 新增響應標題。 |
| 刪除 | 刪除指定名稱的響應標題。 |
| 變更 | 修改已有響應標題的值。 |
response_header_modification.type 說明
type 表示標題取值為靜態字串還是動態運算式。
取值 | 含義 | 說明 |
| 靜態 |
|
| 動態 |
|