跳转到主要内容

英特尔云数据连接器

项目描述

云数据连接器

Intel: AI Python License security: bandit security: SNYK security: BDBA security: Checkmarks


概述


云数据连接器 是一个连接到 AzureML、Azure Blob、GCP 存储和 AWS 存储S3的工具。目标是提供一个集中式云管理器,并提供易于集成的文档。

有关更多详细信息,请访问 云数据连接器 GitHub存储库。

硬件要求


硬件应符合云服务的要求。

如何使用


该软件包包含以下模块

软件包组件
cloud_data_connector.aws
cloud_data_connector.gcp
cloud_data_connector.azure

每个模块都能与其对应的云服务进行连接、下载和上传操作。

开始使用 云数据连接器


强烈建议使用虚拟环境以确保正确操作,例如

conda create -n venv python=3.10 -c conda-forge
conda activate venv

您可以使用以下方式安装软件包

python -m pip install cloud-data-connector

请遵循特定模块的文档进行用例、示例。

  1. cloud_data_connector/azure/README.md
  2. cloud_data_connector/azure/AzureML.md
  3. cloud_data_connector/aws/README.md
  4. cloud_data_connector/gcp/README.md

开始使用 云数据连接器 Azure


摘要

英特尔(Intel)的云数据连接器 AzureML工具允许用户遵循简单的流程在本地进行模型训练,并将上传任务上传到AzureML,配置作业、工作流、上传模型或训练脚本。Azure的数据连接器是一个连接到Azure Blob和Azure机器学习工具的工具。

要求

此工具需要Azure云账户和一个活跃的Azure ML工作空间。

身份验证

使用Azure进行身份验证需要安装Azure CLI

>az login

此命令加载证书以使用简单身份验证方法登录。

存储

所有Azure ML工作空间都有一个存储blob,使用此工具可以连接到Azure Blob或Azure ML存储。

Azure ML

Azure ML是一种连接数据源并使用Azure基础设施在生产中部署模型以进行模型训练的服务。

数据连接器提供了一种连接到Azure ML工作空间并上传配置文件的工具。

示例

blob连接器

    from cloud_data_connector.azure import connect
    connection_string_sample = """
        DefaultEndpointsProtocol=http;
        AccountName=<YOUR_ACCOUNT_NAME>;
        AccountKey=<YOUR_ACCOUNT_KEY>;
        BlobEndpoint=http://127.0.0.1:10000/
        devstoreaccount1;
        QueueEndpoint=http://127.0.0.1:10001/
        devstoreaccount1;
        TableEndpoint=http://127.0.0.1:10002/
        devstoreaccount1;
       """
    connector = connect(connection_string=connection_string_sample)

如何获取连接字符串

Azure Connection String Sample

您也可以使用Azure CLI获取连接字符串

>az storage account show-connection-string --name <storageAccount> --resource-group <resourceGroup> --subscription <subscription>

或者

>az storage account show-connection-string --name <storageAccount> 
  • 此过程在WSL中不适用

blob上传

    from cloud_data_connector.azure import Uploader

    uploader = Uploader(connector= connector)
    uploader.upload(
        'sample.txt',
        blob_container_name='sample_container'
    )

blob下载器

    from cloud_data_connector.azure import Downloader

    downloader = Downloader(connector=connector)
    downloader.download()

在此查看示例

开始使用云数据连接器 AWS


云数据连接器 AWS S3

云数据连接器AWS S3允许您连接到S3存储桶并列出内容,下载和上传文件。

访问S3存储桶

要访问S3存储桶,您需要注册AWS账户并创建访问密钥。

访问密钥由访问密钥ID和秘密访问密钥组成,用于签名您对AWS发出的程序性请求。

如何获取您的访问密钥ID和秘密访问密钥

  1. https://console.aws.amazon.com/iam/上打开IAM控制台。
  2. 在导航菜单中,选择“用户”。
  3. 选择您的IAM用户名。
  4. 打开“安全凭证”选项卡,然后选择“创建访问密钥”。
  5. 要查看新的访问密钥,请选择“显示”。您的凭证如下
    • 访问密钥ID:my_access_key
    • 秘密访问密钥:my_secret_key

使用环境变量为AWS账户配置设置

您必须使用环境变量配置您的AWS凭证。

默认情况下,您需要以下环境变量。

  • AWS_ACCESS_KEY_ID:您的AWS账户的访问密钥。
  • AWS_SECRET_ACCESS_KEY:您的AWS账户的秘密密钥。

您可以在此处添加更多配置设置。例如,您可以设置AWS_SESSION_TOKEN,仅在您使用临时凭证时需要。

用法

您需要导入DataConnector类。

from cloud_data_connector.aws.connector import Connector

连接器类有一个connect()方法,它创建一个AWS S3对象,默认情况下,此函数将使用您环境中保存的凭证创建S3连接器。

connector = Connector()

调用connect()方法,这将返回一个S3的连接对象。

conection_object = connector.connect()

导入Downloader类并使用connect()函数返回的连接对象。

from cloud_data_connector.aws.downloader import Downloader

downloader = Downloader(conection_object)

Downloader类有两个方法

  • list_blobs(container_obj):获取存储桶中对象列表的函数。
  • download(container_obj, data_file, destiny):从S3存储桶中下载文件的函数。

使用list_blobs(container_obj)方法列出存储桶的内容是第一步。指定以下参数。

  • container_obj:要列出的存储桶名称。
from cloud_data_connector.aws.downloader import Downloader

downloader = Downloader(conection_object)

list_blobs = downloader.list_blobs('MY_BUCKET_NAME')
print(list_blobs)

要下载文件,请使用download(container_obj, data_file, destiny)方法,并指定以下参数。

  • container_obj:要从中下载的存储桶名称。
  • data_file:要从中下载的文件名称。
  • destiny:要下载到的文件路径。
from cloud_data_connector.aws.downloader import Downloader

downloader = Downloader(conection_object)
file_name = "path/to_file.csv"
downloader.download(bucket_name, file_name, 'path/to_destiny.csv')

您可以通过导入 Uploader 类并使用 upload 方法将文件从本地机器发送到存储桶。您需要将连接器对象添加到 Uploader 构造函数中。

from cloud_data_connector.aws.uploader import Uploader
from cloud_data_connector.aws.connector import Connector

connector = Connector()
conection_object = connector.connect()
uploader = Uploader(conection_object)

指定 upload 函数中的下一个参数。

  • container_obj:上传到的存储桶名称。
  • data_file:要上传的文件路径。
  • object_name:要上传的文件名称。
from cloud_data_connector.aws.uploader import Uploader

uploader = Uploader(conection_object)
uploader.upload(bucket_name, 'path/to_local_file.csv', 'path/to_object_name.csv')

列出存储桶中的对象

# import the dataconnector package
from cloud_data_connector.aws.connector import Connector
from cloud_data_connector.aws.downloader import Downloader

# specify a S3 bucket name
bucket_name = 'MY_BUCKET_NAME'
# create a connector
connector = Connector()
# connect to aws using default AWS access keys
# connect() method uses the configurations settings for AWS account
conection_object = connector.connect()
# list files from bucket
# create a downloader to list files
downloader = Downloader(conection_object)
# use the list_blobs function
list_blobs = downloader.list_blobs(bucket_name)
# list_blobs functions returns all objects in bucket
print(list_blobs)

下载文件

# import the dataconnector package
from cloud_data_connector.aws.connector import Connector
from cloud_data_connector.aws.downloader import Downloader

# specify a S3 bucket name
bucket_name = 'MY_BUCKET_NAME'
# create a connector
connector = Connector()
# connect to aws using default aws access keys
conection_object = connector.connect()
# download a file from bucket
# create a Downloader object using a connector object
downloader = Downloader(conection_object)
# specify the object name to download
file_name = "path/to_file.csv"
# download the object
downloader.download(bucket_name, file_name, 'path/to_destiny.csv')

上传文件

# import dataconnector package
from cloud_data_connector.aws.connector import Connector
from cloud_data_connector.aws.uploader import Uploader

# specify a S3 bucket name
bucket_name = 'MY_BUCKET_NAME'
# create a connector
connector = Connector()
# connect to aws using default aws access keys
conection_object = connector.connect()
# Upload a file
# create a uploader object using a connection object
uploader = Uploader(conection_object)
# upload a file
uploader.upload(bucket_name, 'path/to_local_file.csv', 'path/to_object_name.csv')



开始使用 Cloud Data Connector GCP


GCP 权限

要启用 GCP 中的权限以使用存储和 BigQuery,从左侧导航菜单中,在 Google Cloud 内,转到 "APIs & Services > Library" 并搜索并启用

  • 云存储
  • Google Cloud Storage JSON API
  • BigQuery API

您需要一个认证工具:OAuth 或服务帐户之一

OAuth

要启用 OAuth2,从左侧导航菜单转到 "APIs & Services > Credentials" 并选择 "+ CREATE CREDENTIALS"。从三个可用选项中选择 "OAuth client ID"。在创建 ID 时,必须提供 "Application type" 和名称,在此情况下选择 "Application type" 中的 "Desktop app" 并输入您喜欢的名称。一旦创建 ID,将弹出一个窗口显示 Client ID 和 Secret;选择 "DOWNLOAD JSON" 并将 JSON 文件存储在安全的地方。

服务帐户

要启用服务帐户,从左侧导航菜单转到 "APIs & Services > Credentials" 并选择 "+ CREATE CREDENTIALS"。从三个可用选项中选择 "Service account"。在 "Service account details" 中提供服务帐户名称和 ID,并选择 "CREATE AND CONTINUE"。在 "Grant this service account access to project" 中选择角色:"Cloud Storage > Storage Admin" 和 "BigQuery > BigQuery Admin"。定义角色后,按 "Done"。通过选择 "Service Accounts" 中的服务电子邮件选择创建的服务帐户,转到 "KEYS",从那里您可以为此帐户创建一个新密钥(它将提供 JSON 文件)。

安装到 Docker 容器中

要在 Docker 容器中运行数据连接器,请执行以下命令,并根据需要更改选项

docker run  -it  --name <container_name> --net=host -v <path to frameworks.ai.models.intel-mode.data-connector>:/workspace/model-zoo --env HTTPS_PROXY=$HTTPS_PROXY --env no_proxy=$no_proxy --env HTTP_PROXY=$HTTP_PROXY --env http_proxy=$http_proxy  --entrypoint bash conda/miniconda3:latest

在 Docker 容器内部设置源以激活 conda

source /usr/local/bin/activate

要安装 requirements.txt 文件,首先必须创建 conda 环境

conda create -n cloud_data_connector python=3.9 -y && \
conda activate cloud_data_connector

要运行连接器的 GCP 部分,必须安装 GCP CLI。在容器内部运行以下命令是安装 CLI 存储库的简单方法

apt-get update && \
apt-get install apt-transport-https ca-certificates gnupg curl gpg -y && \
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg  add - && apt-get update -y && apt-get install google-cloud-cli -y

如果不支持 apt-key 命令,请使用以下命令代替

apt-get update && \
apt-get install apt-transport-https ca-certificates gnupg curl gpg -y && \
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | tee /usr/share/keyrings/cloud.google.gpg && apt-get update -y && apt-get install google-cloud-sdk -y

要初始化 CLI,您必须有一个 GCP 帐户。运行以下命令,接受登录请求,在网页浏览器中打开提供的链接

gcloud init

一旦进入浏览器,GCP 将要求访问帐户的权限;允许权限并将提供的验证码复制到 gcloud CLI 中。在提供验证码时,选择所需的云项目。

要为库提供对 OAuth 的访问权限,请运行

gcloud auth application-default login

在网页浏览器中打开提供的链接。GCP 将要求访问帐户的权限;允许权限并将提供的验证码复制到 gcloud CLI 中。

转到 cloud_data_connector 目录,升级 pip 包并安装 requirements.txt

cd /workspace/model-zoo/cloud_data_connector
pip install --upgrade pip wheel setuptools
pip install -r cloud_data_connector/gcp/requirements.txt 

运行代码示例

要在容器和 VS code 中运行代码片段,必须将 OAuth 要使用的端口添加到已转发端口列表中。打开 OUTPUT 终端(Ctrl + Shift + U),转到 PORTS 并选择 "Add Port"。

为了提供在Google Cloud中获得的OAuth JSON密钥,必须将文件内容分配给“CLIENT_SECRETS”环境变量。它还可以从包含变量的“.env”文件中获取。要从“.env”文件中使用,需要安装“python-dotenv”,并且文件必须位于“load_dotenv()”可以找到的位置。dotenv可以在执行脚本的目录中找到“.env”文件,例如,对于下面提供的示例,可以将“.env”文件添加到<base_path_to_model_zoo>/cloud_data_connector/cloud_data_connector/samples/gcp/目录中。

pip install python-dotenv

为了提供为服务帐户获得的JSON密钥,如果要通过服务帐户访问存储或BigCloud,必须提供样本脚本的文件路径。

为了测试GCP存储,必须创建一个存储桶。转到“云存储 > 存储桶”,然后选择“创建”。在那里,您需要提供创建存储桶的几个选项(例如,存储桶的名称将命名为“dataconnector_data_bucket”),对于下面的示例,可以使用默认值。

要测试GCP存储,有一个位于<base_path_to_model_zoo>/cloud_data_connector/cloud_data_connector/samples/gcp/storage.py的脚本。要从OAuth数据连接器的基路径运行它。

python -m samples.gcp.storage -o

对于服务帐户

python -m samples.gcp.storage -p <project_name> -c <credentials_path>

用户必须使用标志(-p)提供项目名称,并使用标志(-c)提供凭据的JSON文件的本地路径。

要测试GCP BigQuery,有一个位于<base_path_to_model_zoo>/cloud_data_connector/cloud_data_connector/samples/gcp/bigquery.py的脚本。要从OAuth数据连接器的基路径运行它。

python -m samples.gcp.bigquery -o

对于服务帐户

python -m samples.gcp.bigquery -p <project_name> -c <credentials_path>

用户必须使用标志(-p)提供项目名称,并使用标志(-c)提供凭据的JSON文件的本地路径。

支持


如果您对此包有任何问题或问题,请联系支持团队。Cloud Data Connector拥有Apache许可证,如LICENSE文件所示。高于当前实施版本的依赖项处于beta测试阶段,应谨慎使用。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

cloud_data_connector-1.0.3.tar.gz (26.5 kB 查看哈希值)

上传时间

构建分布

cloud_data_connector-1.0.3-py3-none-any.whl (42.9 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面