적용 대상:
Azure CLI ml 확장 v2(현재)
Python SDK azure-ai-ml v2(현재)
이 문서에서는 Azure Machine Learning Services에서 해당 데이터를 사용할 수 있도록 Azure 외부에 있는 데이터 원본에 연결하는 방법을 알아봅니다. Azure 연결은 키 자격 증명 모음 프록시 역할을 하며, 연결과의 상호 작용은 Azure Key Vault와의 직접적인 상호 작용입니다. Azure Machine Learning 연결은 사용자 이름 및 암호 데이터 리소스를 키 자격 증명 모음에 비밀로 안전하게 저장합니다. 키 자격 증명 모음 RBAC는 이러한 데이터 리소스에 대한 액세스를 제어합니다. 이러한 데이터 가용성을 위해 Azure는 다음과 같은 외부 원본에 대한 연결을 지원합니다.
- 스노우플레이크 DB
- Amazon S3
- Azure SQL DB
중요합니다
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 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 지침을 따릅니다.
코드 버전
az extension remove -n ml
az extension add -n ml --yes
az extension show -n ml #(the version value needs to be 2.15.1 or later)
pip uninstall azure-ai-ml
pip install azure-ai-ml
pip show azure-ai-ml #(the version value needs to be 1.5.0 or later)
Snowflake DB 연결 만들기
이 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>"
옵션 1: YAML 파일에서 연결 로드
from azure.ai.ml import MLClient, load_workspace_connection
ml_client = MLClient.from_config()
wps_connection = load_workspace_connection(source="./my_snowflakedb_connection.yaml")
wps_connection.credentials.username="<username>"
wps_connection.credentials.password="<password>"
ml_client.connections.create_or_update(workspace_connection=wps_connection)
옵션 2: Python 스크립트에서 WorkspaceConnection() 사용
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)
Azure Machine Learning 스튜디오로 이동합니다.
왼쪽 탐색의 자산 아래에서 데이터를 선택합니다. 그런 다음 데이터 연결 탭을 선택합니다. 그런 다음 이 스크린샷에 표시된 대로 만들기를 선택합니다.
연결 만들기 창에서 스크린샷에 표시된 대로 값을 입력합니다. 범주로 Snowflake를 선택하고 인증 형식으로 사용자 이름 암호를 선택합니다. 이 형식으로 대상 텍스트 상자 값을 지정하고 <> 문자 사이에 특정 값을 입력해야 합니다.
jdbc:snowflake://myaccount.snowflakecomputing.com/?db=mydb&warehouse=mywarehouse&role=myrole
관련 작업 영역과 연결된 키 자격 증명 모음에 자격 증명을 안전하게 저장하려면 저장을 선택합니다. 이 연결은 데이터 가져오기 작업을 실행할 때 사용됩니다.
OAuth를 사용하는 Snowflake DB 연결 만들기
이 섹션에서는 OAuth를 사용하여 인증하는 Snowflake DB 연결을 만드는 방법을 설명합니다.
중요합니다
이 섹션의 단계를 따르기 전에 먼저 클라이언트를 대신하여 OAuth 토큰을 발급하도록 Azure를 구성해야 합니다. 이 구성은 OAuth 연결에 필요한 서비스 주체를 만듭니다. 연결을 만들려면 다음 정보가 필요합니다.
- 클라이언트 ID: 서비스 주체의 ID
- 클라이언트 암호: 서비스 주체의 비밀
- 테넌트 ID: Microsoft Entra ID 테넌트의 ID
이 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 파일에 저장된 연결 정보를 로드하여 연결을 만들 수 있습니다. 선택적으로 값을 재정의할 수 있습니다.
from azure.ai.ml import MLClient, load_workspace_connection
ml_client = MLClient.from_config()
wps_connection = load_workspace_connection(source="./my_snowflakedb_connection.yaml")
wps_connection.credentials_client_id="my-client-id"
wps_connection.credentials.client_secret="my-client-secret"
wps_connection.credentials.tenant_id="my-tenant-id"
ml_client.connections.create_or_update(workspace_connection=wps_connection)
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를 통해서만 가능합니다.
Azure SQL DB 연결 만들기
이 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>"
옵션 1: YAML 파일에서 연결 로드
from azure.ai.ml import MLClient, load_workspace_connection
ml_client = MLClient.from_config()
wps_connection = load_workspace_connection(source="./my_sqldb_connection.yaml")
wps_connection.credentials.username="<username>"
wps_connection.credentials.password="<password>"
ml_client.connections.create_or_update(workspace_connection=wps_connection)
옵션 2: WorkspaceConnection() 사용
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)
Azure Machine Learning 스튜디오로 이동합니다.
왼쪽 탐색의 자산 아래에서 데이터를 선택합니다. 그런 다음 데이터 연결 탭을 선택합니다. 그런 다음 이 스크린샷에 표시된 대로 만들기를 선택합니다.
연결 만들기 창에서 스크린샷에 표시된 대로 값을 입력합니다. 범주로 AzureSqlDb를 선택하고 인증 형식으로 사용자 이름 암호를 선택합니다. 이 형식으로 대상 텍스트 상자 값을 지정하고 <> 문자 사이에 특정 값을 입력해야 합니다.
Server=tcp:<myservername>,<포트>; Database=<mydatabase>; Trusted_Connection=False; Encrypt=True; 연결 시간 제한=30
Amazon S3 연결 만들기
다음 YAML 파일을 사용하여 Amazon S3 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
# my_s3_connection.yaml
$schema: http://azureml/sdk-2-0/Connection.json
type: s3
name: my_s3_connection
target: <mybucket> # add the s3 bucket details
credentials:
type: access_key
access_key_id: bbbbbbbb-1c1c-2d2d-3e3e-444444444444 # add access key id
secret_access_key: H4iJ5kL6mN7oP8qR9sT0uV1wX2yZ3a # add access key secret
CLI에서 Azure Machine Learning 연결을 만듭니다.
az ml connection create --file my_s3_connection.yaml
옵션 1: YAML 파일에서 연결 로드
from azure.ai.ml import MLClient, load_workspace_connection
ml_client = MLClient.from_config()
wps_connection = load_workspace_connection(source="./my_s3_connection.yaml")
ml_client.connections.create_or_update(workspace_connection=wps_connection)
옵션 2: Python 스크립트에서 WorkspaceConnection() 사용
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)
Azure Machine Learning 스튜디오로 이동합니다.
왼쪽 탐색의 자산 아래에서 데이터를 선택합니다. 그런 다음 데이터 연결 탭을 선택합니다. 그런 다음 이 스크린샷에 표시된 대로 만들기를 선택합니다.
연결 만들기 창에서 스크린샷에 표시된 대로 값을 입력합니다. 범주로 S3을 선택하고 인증 형식으로 사용자 이름 암호를 선택합니다. 이 형식으로 대상 텍스트 상자 값을 지정하고 <> 문자 사이에 특정 값을 입력해야 합니다.
<과녁>
데이터가 아닌 연결
다음 연결 형식을 사용하여 Git에 연결할 수 있습니다.
- Python 피드
- Azure Container Registry (애저 컨테이너 레지스트리)
- API 키를 사용하는 연결
이러한 연결은 데이터 연결이 아니지만 코드에서 사용하기 위해 외부 서비스에 연결하는 데 사용됩니다.
Git (기트 - 버전 관리 도구)
다음 YAML 파일 중 하나를 사용하여 Git 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
PAT(개인용 액세스 토큰)를 사용하여 연결:
#Connection.yml
name: test_ws_conn_git_pat
type: git
target: https://github.com/contoso/contosorepo
credentials:
type: pat
pat: dummy_pat
공용 리포지토리에 연결(자격 증명 없음):
#Connection.yml
name: git_no_cred_conn
type: git
target: https://https://github.com/contoso/contosorepo
CLI에서 Azure Machine Learning 연결을 만듭니다.
az ml connection create --file connection.yaml
다음 예제에서는 GitHub 리포지토리에 대한 Git 연결을 만듭니다. PAT(개인용 액세스 토큰)는 연결을 인증합니다.
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration, PatTokenConfiguration
name = "my_git_conn"
target = "https://github.com/myaccount/myrepo"
wps_connection = WorkspaceConnection(
name=name,
type="git",
target=target,
credentials=PatTokenConfiguration(pat="E3fH4iJ5kL6mN7oP8qR9sT0uV1wX2y"),
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
스튜디오에서는 Git 연결을 만들 수 없습니다.
Python 피드
다음 YAML 파일 중 하나를 사용하여 Python 피드에 대한 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
PAT(개인용 액세스 토큰)를 사용하여 연결:
#Connection.yml
name: test_ws_conn_python_pat
type: python_feed
target: https://test-feed.com
credentials:
type: pat
pat: dummy_pat
사용자 이름과 암호를 사용하여 연결:
name: test_ws_conn_python_user_pass
type: python_feed
target: https://test-feed.com
credentials:
type: username_password
username: <username>
password: <password>
공용 피드에 연결(자격 증명 없음):
name: test_ws_conn_python_no_cred
type: python_feed
target: https://test-feed.com3
CLI에서 Azure Machine Learning 연결을 만듭니다.
az ml connection create --file connection.yaml
다음 예제에서는 Python 피드 연결을 만듭니다. PAT(개인용 액세스 토큰) 또는 사용자 이름과 암호는 연결을 인증합니다.
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration, PatTokenConfiguration
# If using username/password, the name/password values should be url-encoded
# import urllib.parse
# username = urllib.parse.quote(os.environ["FEED_USERNAME"], safe="")
# password = urllib.parse.quote(os.environ["FEED_PASSWORD"], safe="")
name = "my_pfeed_conn"
target = "https://iJ5kL6mN7.core.windows.net/mycontainer"
wps_connection = WorkspaceConnection(
name=name,
type="python_feed",
target=target,
#credentials=UsernamePasswordConfiguration(username=username, password=password),
credentials=PatTokenConfiguration(pat="<PatTokenConfiguration>"),
#credentials=None
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
스튜디오에서는 Python 피드 연결을 만들 수 없습니다.
컨테이너 레지스트리
다음 YAML 파일 중 하나를 사용하여 Azure Container Registry에 대한 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
CLI에서 Azure Machine Learning 연결을 만듭니다.
az ml connection create --file connection.yaml
다음 예제에서는 Azure Container Registry 연결을 만듭니다.
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 = os.environ["REGISTRY_USERNAME"]
password = os.environ["REGISTRY_PASSWORD"]
name = "my_acr_conn"
target = "https://iJ5kL6mN7.core.windows.net/mycontainer"
wps_connection = WorkspaceConnection(
name=name,
type="container_registry",
target=target,
credentials=UsernamePasswordConfiguration(username=username, password=password),
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
스튜디오에서는 Azure Container Registry 연결을 만들 수 없습니다.
API 키
다음 예제에서는 API 키 연결을 만듭니다.
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration, ApiKeyConfiguration
name = "my_api_key"
target = "https://L6mN7oP8q.core.windows.net/mycontainer"
wps_connection = WorkspaceConnection(
name=name,
type="apikey",
target=target,
credentials=ApiKeyConfiguration(key="9sT0uV1wX"),
)
ml_client.connections.create_or_update(workspace_connection=wps_connection)
일반 컨테이너 레지스트리
GenericContainerRegistry 작업 영역 연결을 사용하여 이미지 빌드에 대해 Nexus 또는 Artifactory와 같은 외부 레지스트리를 지정할 수 있습니다. 환경 이미지는 지정된 레지스트리에서 푸시되고 제공되며 이전 캐시는 무시됩니다.
다음 YAML 파일을 사용하여 연결을 만듭니다. 적절한 값을 업데이트해야 합니다.
#myenv.yml
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
type: python_feed
conda_file: conda_dep.yml
description: Environment created from a Docker image plus Conda environment
#conda_dep.yml
name: project_environment
dependencies:
- python=3.10
- pip:
- azureml-defaults
channels:
- anaconda
- conda-forge
#connection.yml
name: ws_conn_generic_container_registry
type: container_registry
target: https://test-registry.com
credentials:
type: username_password
username: <username>
password: <password>
#hello_world_job.yml
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment: azureml:<env name>@latest
자격 증명을 사용하여 YAML 파일에서 연결을 만듭니다.
az ml connection create --file connection.yaml --credentials username=<username> password=<password> --resource-group my-resource-group --workspace-name my-workspace
환경 만들기
az ml environment create --name my-env --version 1 --file my_env.yml --conda-file conda_dep.yml --image mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04 --resource-group my-resource-group --workspace-name my-workspace
환경이 성공적으로 만들어졌는지 확인할 수 있습니다.
az ml environment show --name my-env --version 1 --resource-group my-resource-group --workspace-name my-workspace
다음 예제에서는 일반 Container Registry 연결을 만듭니다.
import os
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Environment
from azure.ai.ml.entities import WorkspaceConnection
from azure.ai.ml.entities import UsernamePasswordConfiguration
from azureml.core.conda_dependencies import CondaDependencies
from azure.ai.ml import command
username = os.environ["REGISTRY_USERNAME"]
password = os.environ["REGISTRY_PASSWORD"]
# Enter details of AML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"
ml_client = MLClient( DefaultAzureCredential(), subscription_id, resource_group, workspace)
credentials = UsernamePasswordConfiguration(username=username, password=password)
# Create GenericContainerRegistry workspace connection for a generic registry
ws_connection = WorkspaceConnection(name="<name>", target="<target>", type="GenericContainerRegistry", credentials=credentials)
ml_client.connections.create_or_update(ws_connection)
# Create an environment
env_docker_conda = Environment(image="<base image>", conda_file="<yml file>", name="docker-image-plus-conda-example", description="Environment created from a Docker image plus Conda environment.")
ml_client.environments.create_or_updat(env_docker_conda)
job = command(command="echo 'hello world'", environment=env_docker_conda,display_name="v2-job-example")
returned_job = ml_client.create_or_update(job)
Azure Machine Learning 스튜디오로 이동합니다.
왼쪽 탐색 영역의 관리에서 연결을 선택한 다음, 만들기를 선택합니다.
기타 리소스 종류에서 *일반 컨테이너 레지스트리
를 선택합니다.
필수 정보를 입력한 다음, 연결 추가
를 선택합니다.
관련 콘텐츠
데이터 연결(Snowflake DB, Amazon S3 또는 Azure SQL DB)을 사용하는 경우 다음 문서에서 자세한 정보를 제공합니다.