

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 Amazon Quick Sight 使用 Snowflake
<a name="connecting-to-snowflake"></a>

Snowflake 是一種 AI 資料雲端平台，提供包含資料倉儲和協作與資料科學和生成式 AI 的資料解決方案。Snowflake 是具有多個 AWS 認證的[AWS 合作夥伴](https://partners.amazonaws.com/partners/001E000000d8qQcIAI/Snowflake)，其中包括生成式 AI、Machine Learning、資料和分析和零售中的 AWS ISV 能力。

Amazon Quick Sight 提供兩種連線至 Snowflake 的方式：使用您的 Snowflake 登入憑證或 OAuth 用戶端憑證。參閱下列各節，了解這兩種連線方法。

**Topics**
+ [使用登入憑證建立與 Snowflake 的 Quick Sight 資料來源連線](#create-connection-to-snowflake)
+ [使用OAuth用戶端憑證建立與 Snowflake 的 Quick Sight 資料來源連線](#create-connection-to-snowflake-oauth-credentials)

## 使用登入憑證建立與 Snowflake 的 Quick Sight 資料來源連線
<a name="create-connection-to-snowflake"></a>

 使用本節了解如何使用 Snowflake 登入憑證在 Quick Sight 和 Snowflake 之間建立連線。Quick Sight 和 Snowflake 之間的所有流量都由 SSL 啟用。

**在 Quick Sight 和 Snowflake 之間建立連線**

1. 開啟 [Quick 主控台](https://quicksight.aws.amazon.com/)。

1. 從左側導覽窗格中，選擇**資料**，然後選擇**建立**，然後選擇**新資料集**。

1. 選擇 **Snowflake** 資料來源卡片。

1. 在顯示的快顯視窗中，輸入下列資訊：

   1. 對於**資料來源名稱**，輸入 Snowflake 資料來源連線的描述性名稱。因為您可以透過與 Snowflake 的連線建立許多資料集，因此最好保持名稱簡單。

   1. 對於**連線類型**，選擇您正在使用的網路類型。如果您的資料是公開共用的，選擇**公共網路**。如果您的資料位於 VPC 內，選擇 **VPC**。若要在 Quick Sight 中設定 VPC 連線，請參閱 [在 Amazon Quick 中管理 VPC 連線](vpc-creating-a-connection-in-quicksight.md)。

   1. 對於**資料庫伺服器**，輸入 Snowflake 連線詳細資訊中指定的主機名稱。

1. 對於**資料庫名稱和倉儲**，輸入您想要連線的相應 Snowflake 資料庫和倉儲。

1. 對於**使用者名稱**和**密碼**，輸入您的 Snowflake 憑證。

在 Quick Sight 和 Snowflake 帳戶之間成功建立資料來源連線後，您就可以開始[建立資料集](creating-data-sets.md)包含 Snowflake 資料。

## 使用OAuth用戶端憑證建立與 Snowflake 的 Quick Sight 資料來源連線
<a name="create-connection-to-snowflake-oauth-credentials"></a>

您可以使用OAuth用戶端登入資料，透過 Quick Sight [ APIs](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html) 將 Quick Sight 帳戶與 Snowflake 連線。 *OAuth* 是一種標準授權通訊協定，通常用於具有進階安全需求的應用程式。當您使用 OAuth 用戶端登入資料連線到 Snowflake 時，您可以使用 Quick Sight APIs 和 Quick Sight UI 建立包含 Snowflake 資料的資料集。如需有關在 Snowflake 中設定 OAuth 的詳細資訊，請參閱 [Snowflake OAuth overview](https://docs.snowflake.com/en/user-guide/oauth-snowflake-overview)。

Quick Sight 支援`client credentials`OAuth授予類型。 OAuth用戶端登入資料用於取得machine-to-machine通訊的存取字符。此方法適用於用戶端需要存取託管在伺服器上的資源，而不需使用者介入的情形。

在 OAuth 2.0 的用戶端憑證流程中，有數種用戶端身分驗證機制可用來透過授權伺服器驗證用戶端應用程式。Quick Sight 支援以 Snowflake OAuth 為基礎的用戶端憑證，適用於下列兩種機制：
+ **權杖 (用戶端機密型 OAuth)**：密碼型用戶端身分驗證機制會與用戶端憑證搭配使用，以授予流程，進而使用授權伺服器進行身分驗證。此身分驗證機制需要將 OAuth 用戶端應用程式的 `client_id` 和 `client_secret` 儲存在 Secrets Manager 中。
+ **X509 (用戶端私有金鑰 JWT 型 OAuth)**：X509 憑證金鑰型解決方案為 OAuth 機制提供額外的安全層，其中包含用於身分驗證的用戶端憑證，而非用戶端機密。此方法主要由私有用戶端使用，私有用戶端可在兩個服務之間具有高度信任時，使用此方法對授權伺服器進行身分驗證。

Quick Sight 已驗證與下列身分提供者的OAuth連線：
+ OKTA
+ PingFederate

### 將 OAuth 憑證儲存至 Secrets Manager 中
<a name="create-connection-to-snowflake-oauth-store-credentials"></a>

OAuth 用戶端憑證適用於機器對機器的使用案例，並非為了互動而設計。若要在 Quick Sight 和 Snowflake 之間建立資料來源連線，請在 Secrets Manager 中建立新的秘密，其中包含用戶端OAuth應用程式的登入資料。使用新秘密建立的秘密 ARN 可用於在 Quick Sight 中建立包含 Snowflake 資料的資料集。如需在 Quick Sight 中使用 Secrets Manager 金鑰的詳細資訊，請參閱 [在 Quick 中使用 AWS Secrets Manager 秘密而非資料庫登入資料](secrets-manager-integration.md)。

您需要儲存在 Secrets Manager 中的憑證由您使用的 OAuth 機制決定。X509 型 OAuth 機密需要下列鍵值對：
+ `username`：連線至 Snowflake 時使用的 Snowflake 帳戶使用者名稱
+ `client_id`：OAuth 用戶端 ID
+ `client_private_key`：OAuth 用戶端私有金鑰
+ `client_public_key`：OAuth 用戶端憑證公有金鑰及其加密演算法 (例如 `{"alg": "RS256", "kid", "cert_kid"}`)

權杖型 OAuth 機密需要下列鍵值對：
+ `username`：連線至 Snowflake 時使用的 Snowflake 帳戶使用者名稱
+ `client_id`：OAuth 用戶端 ID
+ `client_secret`：OAuth 用戶端機密

### 使用 Quick Sight APIs 建立 Snowflake OAuth連線
<a name="create-connection-to-snowflake-oauth-example"></a>

在 Secrets Manager 中建立包含 Snowflake OAuth登入資料的秘密，並將您的 Quick 帳戶連線至 Secrets Manager 之後，您可以使用 Quick Sight APIs 和 SDK 在 Quick Sight 和 Snowflake 之間建立資料來源連線。下列範例會使用字符OAuth用戶端憑證建立 Snowflake 資料來源連線。

```
{
    "AwsAccountId": "AWSACCOUNTID",
    "DataSourceId": "UNIQUEDATASOURCEID",
    "Name": "NAME",
    "Type": "SNOWFLAKE",
    "DataSourceParameters": {
        "SnowflakeParameters": {
            "Host": "HOSTNAME",
            "Database": "DATABASENAME",
            "Warehouse": "WAREHOUSENAME",
            "AuthenticationType": "TOKEN",
            "DatabaseAccessControlRole": "snowflake-db-access-role-name",
            "OAuthParameters": {
              "TokenProviderUrl": "oauth-access-token-endpoint", 
              "OAuthScope": "oauth-scope",
              "IdentityProviderResourceUri" : "resource-uri",
              "IdentityProviderVpcConnectionProperties" : {
                "VpcConnectionArn": "IdP-VPC-connection-ARN" 
             }
        }
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": "VPC-connection-ARN-for-Snowflake"
    }
    "Credentials": {
        "SecretArn": "oauth-client-secret-ARN"
    }
}
```

如需有關 CreateDatasource API 操作的詳細資訊，請參閱 [CreateDataSource](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html)。

建立 Quick Sight 和 Snowflake 之間的連線並使用 Quick Sight APIs 或 SDK 建立資料來源後，新的資料來源會顯示在 Quick Sight 中。Quick Sight 作者可以使用此資料來源來建立包含 Snowflake 資料的資料集。顯示的資料表取決於 `CreateDataSource` API 呼叫傳遞的 `DatabaseAccessControlRole` 參數中所使用的角色。如果在建立資料來源連線時未定義此參數，則會使用預設的 Snowflake 角色。

在 Quick Sight 和 Snowflake 帳戶之間成功建立資料來源連線後，您就可以開始[建立資料集](creating-data-sets.md)包含 Snowflake 資料。