이 문서에서는 Azure Machine Learning Services에서 해당 데이터를 사용할 수 있도록 Azure 외부에 있는 데이터 원본에 연결하는 방법을 알아봅니다. Azure 연결은 키 자격 증명 모음 프록시 역할을 하며, 연결과의 상호 작용은 Azure Key Vault와의 직접적인 상호 작용입니다. Azure Machine Learning 연결은 사용자 이름 및 암호 데이터 리소스를 키 자격 증명 모음에 비밀로 안전하게 저장합니다. 키 자격 증명 모음 RBAC는 이러한 데이터 리소스에 대한 액세스를 제어합니다. 이러한 데이터 가용성을 위해 Azure는 다음과 같은 외부 원본에 대한 연결을 지원합니다.
Snowflake DB
Amazon S3
Azure SQL DB
Important
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
Azure Machine Learning 연결은 연결을 만드는 동안 전달된 자격 증명을 Workspace Azure Key Vault에 안전하게 저장합니다. 연결은 추가 사용을 위해 키 자격 증명 모음 스토리지 위치의 자격 증명을 참조하세요. 자격 증명이 키 자격 증명 모음에 저장된 후에는 직접 처리할 필요가 없습니다. YAML 파일에 자격 증명을 저장할 수 있는 옵션이 있습니다. CLI 명령이나 SDK가 이를 재정의할 수 있습니다. 보안 위반으로 인해 자격 증명이 유출될 수 있으므로 YAML 파일에 자격 증명 스토리지를 사용하지 않는 것이 좋습니다.
참고 항목
성공적인 데이터 가져오기를 위해서는 SDK용 최신 azure-ai-ml 패키지(버전 1.5.0 이상)와 ml 확장(버전 2.15.1 이상)을 설치했는지 확인하세요.
이전 SDK 패키지 또는 CLI 확장이 있는 경우 이전 패키지를 제거하고 탭 섹션에 표시된 코드를 사용하여 새 패키지를 설치하세요. 여기에 표시된 SDK 및 CLI 지침을 따릅니다.
이 YAML 파일은 Snowflake DB 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
# my_snowflakedb_connection.yaml
$schema: http://azureml/sdk-2-0/Connection.json
type: snowflake
name: my-sf-db-connection # add your datastore name here
target: jdbc:snowflake://<myaccount>.snowflakecomputing.com/?db=<mydb>&warehouse=<mywarehouse>&role=<myrole>
# add the Snowflake account, database, warehouse name and role name here. If no role name provided it will default to PUBLIC
credentials:
type: username_password
username: <username> # add the Snowflake database user name here or leave this blank and type in CLI command line
password: <password> # add the Snowflake database password here or leave this blank and type in CLI command line
CLI에서 Azure Machine Learning 연결을 만듭니다.
옵션 1: YAML 파일에서 사용자 이름과 암호 사용
az ml connection create --file my_snowflakedb_connection.yaml
옵션 2: 명령줄에서 사용자 이름과 암호 재정의
az ml connection create --file my_snowflakedb_connection.yaml --set credentials.
username="<username>" credentials.
password="<password>"
from azure.ai.ml import MLClient
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration
# If using username/password, the name/password values should be url-encoded
import urllib.parse
username = urllib.parse.quote(os.environ["SNOWFLAKEDB_USERNAME"], safe="")
password = urllib.parse.quote(os.environ["SNOWFLAKEDB_PASSWORD"], safe="")
target= "jdbc:snowflake://<myaccount>.snowflakecomputing.com/?db=<mydb>&warehouse=<mywarehouse>&role=<myrole>"
# add the Snowflake account, database, warehouse name and role name here. If no role name provided it will default to PUBLIC
name= <my_snowflake_connection> # name of the connection
wps_connection = WorkspaceConnection(name= name,
type="snowflake",
target= target,
credentials= UsernamePasswordConfiguration(username=username, password=password)
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
이 YAML 파일은 OAuth를 사용하는 Snowflake DB 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
# my_snowflakedb_connection.yaml
name: snowflake_service_principal_connection
type: snowflake
# Add the Snowflake account, database, warehouse name, and role name here. If no role name is provided, it will default to PUBLIC.
target: jdbc:snowflake://<myaccount>.snowflakecomputing.com/?db=<mydb>&warehouse=<mywarehouse>&scope=<scopeForServicePrincipal>
credentials:
type: service_principal
client_id: <client-id> # The service principal's client id
client_secret: <client-secret> # The service principal's client secret
tenant_id: <tenant-id> # The Microsoft Entra ID tenant id
CLI에서 Azure Machine Learning 연결을 만듭니다.
az ml connection create --file my_snowflakedb_connection.yaml
명령줄에서 YAML 파일의 정보를 재정의할 수도 있습니다.
az ml connection create --file my_snowflakedb_connection.yaml --set credentials.client_id="my-client-id" credentials.client_secret="my-client-secret" credentials.tenant_id="my-tenant-id"
Python SDK를 사용하면 YAML 파일에 저장된 연결 정보를 로드하여 연결을 만들 수 있습니다. 선택적으로 값을 재정의할 수 있습니다.
YAML 파일을 사용하지 않고 Python 스크립트에서 연결 정보를 직접 지정할 수도 있습니다.
from azure.ai.ml import MLClient
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import ServicePrincipalConfiguration
target= "jdbc:snowflake://<myaccount>.snowflakecomputing.com/?db=<mydb>&warehouse=<mywarehouse>&role=<myrole>"
# add the Snowflake account, database, warehouse name and role name here. If no role name provided it will default to PUBLIC
name= <my_snowflake_connection> # name of the connection
auth = ServicePrincipalConfiguration(client_id="<my-client-id>", client_secret="<my-client-secret>", tenant_id="<my-tenant-id>")
wps_connection = WorkspaceConnection(name= name,
type="snowflake",
target=target,
credentials=auth
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
참고 항목
서비스 주체(OAuth용)를 사용하여 Snowflake DB 연결을 만드는 것은 Azure CLI 또는 Python SDK를 통해서만 가능합니다.
이 YAML 스크립트는 Azure SQL DB 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
# my_sqldb_connection.yaml
$schema: http://azureml/sdk-2-0/Connection.json
type: azure_sql_db
name: my-sqldb-connection
target: Server=tcp:<myservername>,<port>;Database=<mydatabase>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30
# add the sql servername, port addresss and database
credentials:
type: sql_auth
username: <username> # add the sql database user name here or leave this blank and type in CLI command line
password: <password> # add the sql database password here or leave this blank and type in CLI command line
CLI에서 Azure Machine Learning 연결을 만듭니다.
옵션 1: YAML 파일의 사용자 이름/암호 사용
az ml connection create --file my_sqldb_connection.yaml
옵션 2: YAML 파일에서 사용자 이름과 암호 재정의
az ml connection create --file my_sqldb_connection.yaml --set credentials.
username="<username>" credentials.
password="<password>"
from azure.ai.ml import MLClient
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration
# If using username/password, the name/password values should be url-encoded
import urllib.parse
username = urllib.parse.quote(os.environ["MYSQL_USERNAME"], safe="")
password = urllib.parse.quote(os.environ["MYSQL_PASSWORD"], safe="")
target= "Server=tcp:<myservername>,<port>;Database=<mydatabase>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
# add the sql servername, port address and database
name= <my_sql_connection> # name of the connection
wps_connection = WorkspaceConnection(name= name,
type="azure_sql_db",
target= target,
credentials= UsernamePasswordConfiguration(username=username, password=password)
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
from azure.ai.ml import MLClient
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import AccessKeyConfiguration
target=<mybucket> # add the s3 bucket details
name=<my_s3_connection> # name of the connection
wps_connection=WorkspaceConnection(name=name,
type="s3",
target= target,
credentials= AccessKeyConfiguration(access_key_id="XXXJ5kL6mN7oP8qR9sT0uV1wX2yZ3aB4cXXX",acsecret_access_key="C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w")
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)