HTTP

HTTP 連接器可連線至 HTTP 服務,並允許您使用以 HTTP 為基礎的 API。此外,這個連結器也支援透過自訂設定建立 SSL/TLS 連線,並支援各種驗證機制,例如 OAuth 2.0 用戶端憑證授權、基本驗證和摘要驗證。

事前準備

使用 HTTP 連接器前,請先完成下列工作:

  • 在 Google Cloud 專案中:
    • 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
    • roles/connectors.admin IAM 角色授予設定連線器的使用者。
    • 將下列 IAM 角色授予要用於連接器的服務帳戶:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。詳情請參閱「建立服務帳戶」。

    • 啟用下列服務:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如要瞭解如何啟用服務,請參閱「啟用服務」。

    如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。

設定連接器

連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:

  1. Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。

    前往「連線」頁面

  2. 按一下「+ 建立新連線」,開啟「建立連線」頁面。
  3. 在「位置」部分中,選擇連線位置。
    1. 區域:從下拉式清單中選取位置。

      如需所有支援的地區清單,請參閱「位置」一文。

    2. 點選「下一步」
  4. 在「連線詳細資料」部分,完成下列步驟:
    1. 連接器:從可用連接器的下拉式清單中選取「HTTP」
    2. 連接器版本:從可用版本的下拉式清單中選取連接器版本。
    3. 在「連線名稱」欄位中,輸入連線執行個體的名稱。

      連線名稱必須符合下列條件:

      • 連線名稱可使用英文字母、數字或連字號。
      • 字母必須為小寫。
      • 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
      • 連結名稱不得超過 49 個字元。
    4. 視需要輸入連線執行個體的「Description」(說明)
    5. 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為 Error
    6. 服務帳戶:選取具備必要角色的服務帳戶。
    7. 如要檢查連線狀態,請在「狀態檢查」欄位中指定端點網址。網址也可以包含端點附件 IP 位址。預設狀態為有效。
    8. 視需要設定「連線節點設定」

      • 節點數量下限:輸入連線節點數量下限。
      • 節點數量上限:輸入連線節點數量上限。

      節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。

    9. 使用 Proxy:選取核取方塊,為連線設定 Proxy 伺服器。
      1. 按一下「+ 新增目的地」
      2. 選取「目的地類型」
        • 主機位址:指定目的地的主機名稱或 IP 位址。

          如要建立與後端的私人連線,請按照下列步驟操作:

    10. 選用:按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
    11. 如要使用 SSL,請選取「啟用 SSL」。系統隨即顯示 SSL 設定詳細資料。
      1. 選取信任儲存區類型。可以是「公開」、「私人」或「不安全連線」
      2. 根據信任存放區選取項目,選取顯示的憑證。
      3. 如果您使用自行簽署的憑證或私有信任存放區憑證,請以 PEM (隱私強化郵件) 格式將根憑證儲存為 Secret Manager 密鑰,然後在「自訂信任存放區」中選取所需密鑰。
      4. 如果您使用 mTLS,請在「金鑰儲存區」部分選取金鑰儲存區憑證。
      5. 視需要選取 TLS 版本。
      6. 輸入支援的加密套件。輸入多個密碼編譯套件,並以半形逗號分隔值。詳情請參閱「支援的密碼編譯套件」。
    12. 按一下「下一步」
  5. 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
    1. 目的地類型:選取目的地類型
      • 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
      • 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。

      如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。

      如要輸入其他目的地,請按一下「+ 新增目的地」

    2. 點選「下一步」
  6. 在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
    1. 選取「驗證類型」並輸入相關詳細資料。

      HTTP 連線支援下列驗證類型:

    2. 如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。

    3. 點選「下一步」
  7. 檢查:檢查連線和驗證詳細資料。
  8. 按一下 [Create] (建立)

設定驗證機制

根據要使用的驗證方式輸入詳細資料。

  • 自訂驗證

    在執行「連線器」工作期間,可以將自訂授權詳細資料新增為要求標頭。

  • OAuth 2.0 - 用戶端憑證授權
    • 用戶端 ID:用於驗證 HTTP 要求的用戶端 ID。
    • 用戶端密鑰:Secret Manager 密鑰,內含用於驗證 HTTP 要求的用戶端密鑰。
    • 存取權杖的要求格式:從驗證伺服器擷取存取權杖時,要求中使用的格式。 選取 body 將用戶端 ID 和密碼做為要求主體傳遞,或選取 header 將兩者做為編碼標頭傳遞。
    • 權杖要求路徑:要附加至驗證伺服器網址的要求路徑,用於擷取存取權杖網址。
    • 預設到期時間:存取權杖的預設到期時間 (以秒為單位)。如果存取權杖回應沒有到期時間,系統就會使用這個時間。如未提供值,權杖會在 6 小時後重新整理。
  • 基本驗證
    • 使用者名稱:用於發出 HTTP 要求的使用者名稱。
    • 密碼:Secret Manager 密鑰,內含所提供使用者名稱的相關聯密碼。
  • 摘要驗證
    • 使用者名稱:用於發出 HTTP 要求的使用者名稱。
    • 密碼:Secret Manager 密鑰,內含所提供使用者名稱的相關聯密碼。
  • OAuth 2.0 - 授權碼
    • 用戶端 ID: 外部應用程式提供的用戶端 ID。
    • 範圍: 外部應用程式支援的權限範圍。
    • 用戶端密鑰: 選取 Secret Manager 密鑰。 設定這項授權前,您應該已建立 Secret Manager 密鑰。
    • 密鑰版本: 用戶端密鑰的 Secret Manager 密鑰版本。
    • 如果後端伺服器支援,可以視需要啟用 PKCE (用於程式碼交換的金鑰證明)。
    • 授權網址: 輸入外部應用程式的授權網址。
    • 存取權杖網址: 輸入外部應用程式的存取權杖取得網址。

    如果是 Authorization code 驗證類型,建立連線後,您應執行幾個額外步驟來設定驗證。詳情請參閱建立連結後需執行的額外步驟

  • 服務帳戶

    選取這個選項,即可使用您在設定這個連線時,於前幾個步驟中提供的服務帳戶進行驗證。請確認您已提供具備相關 IAM 角色和權限的服務帳戶,以進行驗證。

    • 範圍:從下拉式選單中選取所需的 OAuth 2.0 範圍。詳情請參閱存取範圍
  • 服務帳戶 ID 權杖驗證

    選取這個選項,即可使用您在上一個步驟中提供的服務帳戶所產生的 ID 權杖進行驗證。這項驗證會使用 JSON Web Tokens (JWT) 進行驗證。ID 權杖提供者會使用服務帳戶簽署及核發 JWT,以進行驗證。

    • 目標對象:輸入 JWT 的預期收件者。
    • 標頭名稱:輸入要用於 HTTP 標頭的產生 ID 權杖標頭名稱。如未指定這個欄位的值,預設會將鍵值設為 Authorization
  • API 金鑰驗證

    選取這個選項,即可使用 API 金鑰進行驗證。

    • API 金鑰:選取 API 金鑰的 Secret Manager 密鑰。
    • 密鑰版本:選取密鑰版本。
    • API 金鑰參數名稱:輸入 API 金鑰的參數名稱。API 金鑰會以鍵/值組合的形式傳送至後端伺服器。您在此輸入的值,將做為先前所選 API 金鑰的鍵名。
    • API 金鑰位置:選取要在要求中加入 API 金鑰的位置。

支援的加密套件

傳輸層安全標準 (TLS) 版本 支援的加密套件
1.2
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
1.3
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_GCM_SHA256

建立連結後需執行的其他步驟

如果您選取 OAuth 2.0 - Authorization code 進行驗證,建立連線後必須執行下列額外步驟:

  1. 在「連線」頁面中,找出新建立的連線。

    請注意,新連接器的「狀態」會顯示「需要授權」

  2. 按一下「需要授權」

    系統隨即會顯示「編輯授權」窗格。

  3. 將「重新導向 URI」值複製到外部應用程式。
  4. 驗證授權詳細資料。
  5. 按一下「Authorize」

    授權成功後,「連線」頁面的連線狀態會設為「有效」

重新授權授權碼

如果您使用 Authorization code 驗證類型,且已在後端 HTTP 應用程式中進行任何設定變更,則必須重新授權 HTTP 連線。如要重新授權連結,請按照下列步驟操作:

  1. 在「連線」頁面中,按一下所需連線。

    系統隨即會開啟連線詳細資料頁面。

  2. 按一下「編輯」即可編輯連結詳細資料。
  3. 在「驗證」部分中,確認「OAuth 2.0 - 授權碼」詳細資料。

    視需要進行必要變更。

  4. 按一下 [儲存]。系統會將您帶往連線詳細資料頁面。
  5. 在「驗證」部分中,按一下「編輯授權」。系統會顯示「Authorize」(授權) 窗格。
  6. 按一下「Authorize」

    如果授權成功,「連線」頁面的連線狀態會設為「有效」

實體、作業和動作

所有整合連接器都會為所連應用程式的物件提供抽象層。您只能透過這個抽象化程序存取應用程式的物件。抽象化會以實體、作業和動作的形式呈現。

  • 實體: 實體可以視為已連結應用程式或服務中的物件,或是屬性集合。實體的定義因連接器而異。舉例來說,在資料庫連接器中,資料表是實體;在檔案伺服器連接器中,資料夾是實體;在訊息系統連接器中,佇列是實體。

    不過,連接器可能不支援或沒有任何實體,在這種情況下,Entities 清單會是空白。

  • 作業: 作業是指您可以在實體上執行的活動。您可以對實體執行下列任一操作:

    從可用清單中選取實體,系統會產生該實體可用的作業清單。如需作業的詳細說明,請參閱 Connectors 工作的實體作業。 不過,如果連接器不支援任何實體作業,系統就不會在 Operations 清單中列出這些不支援的作業。

  • 動作: 動作是透過連接器介面提供給整合的第一類函式。動作可讓您變更一或多個實體,且因連接器而異。一般來說,動作會有一些輸入參數和輸出參數。不過,連接器可能不支援任何動作,此時 Actions 清單會是空白。

系統限制

HTTP 連接器每秒可處理 100 筆交易 (每個節點),並節流任何超出此限制的交易。根據預設,Integration Connectors 會為連線分配 2 個節點 (以提高可用性)。

如要瞭解 Integration Connectors 適用的限制,請參閱「限制」一文。

支援的動作

HTTP 連接器支援下列動作:

HttpRequest 動作

HTTP 連接器保證至少會嘗試一次將要求傳送至設定的端點。這項服務受應用程式整合服務水準協議 (SLA) 規範。下表說明 HttpRequest 動作的輸入和輸出參數。

HttpRequest 動作的輸入參數

參數名稱 資料類型 必填 說明
網址 結構 您要傳送要求的 網址。 網址格式為 <scheme>://<netloc>/<path>;<params>?<query>#<fragment>。 如果您提供 netloc,系統會覆寫連線建立期間提供的主機名稱。
方法 字串 HTTP 要求方法,例如 GET、POST、DELETE 或 PUT。預設值為 GET。
標頭 結構 HTTP 要求標頭。
內文 字串 HTTP 要求主體。
RequestHasBytes 布林值 是否以位元組形式傳送要求。如果設為 true,您必須在 Body 參數中,以 Base64 編碼字串的形式傳送要求。預設值為 false
ResponseHasBytes 布林值 是否要以位元組形式接收回應。如果設為 true,您會在 ResponseBody 輸出參數中收到 Base64 編碼字串形式的回應。預設值為 false
HttpVersion 字串 提出要求時要使用的 HTTP 版本。支援的值為 1.1 和 2。 如果您指定版本 2,系統會進行 ALPN (應用層協定協商) 協商,如果伺服器不支援版本 2,則會使用版本 1.1。預設值為 2。
ResponseFormat 字串 指定連接器回應的格式。支援的值為 v1v2。預設值為 v1

v1 回應範例:

[{
"ResponseBody": "{\n \"status\": 200\n}"
}, {
"StatusCode": 200.0
}, {
"HttpVersion": "2"
}, {
"ResponseHeaders": {
":status": "200",
"content-length": "19"
}
}]

第 2 版回應範例:

[{
"ResponseBody": "{\n \"status\": 200\n}",
"StatusCode": 200.0,
"HttpVersion": "2",
"ResponseHeaders": {
":status": "200",
"content-length": "19"
}
}]
FailOnError 布林值 指定後端應用程式發生錯誤時的連線行為。
  • true - 擲回例外狀況。後端擲回的例外狀況會傳播至連線的回應。
  • false - 不會擲回例外狀況。但會在回應中傳回錯誤代碼和錯誤訊息。

預設值為 true

逾時 整數 HTTP 要求的逾時值 (以秒為單位)。允許的最大值為 150 秒。

HttpRequest 動作的輸出參數

參數名稱 資料類型 說明
ResponseBody 字串 收到 HTTP 伺服器的回應。
StatusCode 整數 從 HTTP 伺服器收到的狀態碼。
HttpVersion 字串 為 HTTP 要求協商的版本。
ResponseHeaders 結構 HTTP 回應標頭,形式為 key,value 配對。

範例

本節中的範例說明下列作業:

  • 設定要求酬載
  • 傳送位元組內容
  • 取得位元組內容

下表列出範例情境,以及「連線器」工作中的對應設定:

工作 設定
設定要求酬載
  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 HttpRequest 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
        "path": "post",
        "query": "example=A&sort=value",
        "fragment": "exampleFragment"
      },
      "Method": "POST",
      "Headers": {
        "Accept": ["application/json", "application/xml"],
        "a": "b"
      },
      "Body": "{\"thisIsRequestJSON\":\"someValue\"}"
    }
  4. 按一下 [儲存]

這個範例會對 https://httpbin.org/post?example=A&=value#exampleFragment 網址發出 POST 要求。 由於酬載中提供 netloc,因此會覆寫連線建立期間提供的主機名稱。

傳送位元組內容

如要傳送位元組 (例如檔案) 內容,請將 RequestHasBytes 要求屬性設為 true,並將 body 屬性設為要傳送的 Base64 編碼字串,如下列範例所示。

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 HttpRequest 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
      },
      "Method": "POST",
      "Headers": {
        "Accept": ["application/json", "application/xml"],
        "a": "b"
      },
      "Body": "SGVsbG8gV29ybGQ=",
      "RequestHasBytes":true
    }
  4. 按一下 [儲存]

這個範例會向 httpbin.org 伺服器發出 POST 要求,並在要求主體中以 Base64 編碼字串的形式傳送檔案內容。伺服器可以決定如何處理檔案內容。

取得位元組內容

如要從伺服器取得位元組 (以 Base64 字串形式),您必須將 ResponseHasBytes 請求屬性設為 true,如下列範例所示:

  1. 在「Configure connector task」對話方塊中,按一下 Actions
  2. 選取 HttpRequest 動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "Url": {
        "scheme": "https",
        "netloc": "httpbin.org",
      },
      "Method": "GET",
      "ResponseHasBytes":true
    }
  4. 按一下 [儲存]

這個範例會對 httpbin.org 伺服器發出 GET 要求,並在要求主體中將 ResponseHasBytes 設為 true

錯誤代碼

本節說明使用 HTTP 連線時可能會收到的錯誤訊息。

錯誤訊息 原因
連線至 HTTP 伺服器時發生錯誤 HTTP 連線無法與伺服器建立連線,因為 SSL 交握失敗或 HTTP 伺服器端點不正確。
收到 HTTP 伺服器的錯誤回應 您嘗試連線的 HTTP 伺服器傳回狀態碼為 4xx 或 5xx 的錯誤回應。回應範例:
{
  "error": {
    "code": 400,
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "metadata": {
          "Body": "{\"thisIsResponseJSON\":\"someValue\"}"
          "Error": "Error response received from the HTTP server",
          "Headers": "{\":status\":[\"400\"], \"access-control-allow-credentials\":[\"true\"]}",
          "StatusCode": "400",
          "connection_type": "Http"
        }
      }
    ],
    "message": "Unable to execute HTTP Request",
    "status": "FAILED_PRECONDITION"
  }
}
擷取存取權杖時發生錯誤 擷取 OAuth Client Credentials Grant 驗證類型的存取權杖時發生錯誤。
摘要驗證錯誤 連接器執行階段尚未收到摘要驗證,或驗證類型不受支援。

使用 Terraform 建立連線

您可以使用 Terraform 資源建立新連線。

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

如要查看用於建立連線的 Terraform 範本範例,請參閱範本範例

使用 Terraform 建立這項連線時,您必須在 Terraform 設定檔中設定下列變數:

參數名稱 資料類型 必填 說明
proxy_enabled BOOLEAN 選取這個核取方塊,即可為連線設定 Proxy 伺服器。

在整合中使用的 HTTP 連線

建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。

  • 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
  • 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。

向 Google Cloud 社群尋求協助

如要發布問題及討論這個連接器,請前往 Cloud 論壇的 Google Cloud 社群。

後續步驟