カスタムタスクでネットワークアクセスを有効にする¶
カスタムタスクからパブリックネットワークへのアクセスを設定できるようになりました。 このページのコード例では、資格情報を持つAPIエンドポイントを使用してネットワークアクセスを確保する二値推定タスクを紹介しています。
資格情報IDの取得¶
ネットワークアクセスを設定する前に、資格情報IDを指定する必要があります。 独自の資格情報を設定した後、DataRobotのユーザープロフィールを開き、資格情報管理を選択します。
資格情報を選択します。 選択すると、資格情報IDをコピーできます。 IDはURLの/credentials-management/
に続く文字列です。
資格情報の設定¶
model-metadata.yaml
に資格情報を追加する方法については、以下の例を参照してください。 DRUMリポジトリにあるサンプルファイルにアクセスできます。 typeSchema
はDRUMリポジトリの別の例からコピーしたものです。
name: 13_python_credentials_and_internet_access
type: training
environmentID: 5e8c889607389fe0f466c72d
targetType: binary
# These must be actual DataRobot credentials that the author owns
userCredentialSpecifications:
- key: MY_CREDENTIAL # A legal POSIX env var key
valueFrom: 655270e368a555f026e2512d # A credential ID from DataRobot for which you are the owner
reminder: my super-cool.com/api api-token # Optional: any string value that you for a reminder
typeSchema:
input_requirements:
- field: data_types
condition: IN
value:
- NUM
- field: number_of_columns
condition: NOT_LESS_THAN
value: 2
- field: sparse
condition: EQUALS
value: SUPPORTED
# This requirement is only ignored because this is an example using test data
パブリックIPアドレスへのアクセスを有効にする¶
カスタムタスク内からネットワークにアクセスするには、カスタムタスクバージョンでoutgoingNetworkPolicy
フィールドを使用して明示的に有効にする必要があります。 新しいバージョンは、別のものを指定しない限り、前のバージョンのoutgoingNetworkPolicy
を継承します。 これを行うには、REST APIを使用する必要があります。
本機能の提供について
カスタムタスクのネットワークアクセスには、DataRobotの早期アクセスPythonクライアントを使用する必要があります。 早期アクセスクライアントは、pip install datarobot_early_access
を使ってインストールできます。
from datarobot.enums import CustomTaskOutgoingNetworkPolicy
task_version = dr.CustomTaskVersion.create_clean(
custom_task_id=custom_task_id,
base_environment_id=execution_environment.id,
folder_path=custom_task_folder,
outgoing_network_policy=CustomTaskOutgoingNetworkPolicy.PUBLIC,
)
詳細については、Pythonクライアントのドキュメントを参照してください。
DRUMでローカルにテストする¶
DRUMで資格情報を使ってテストしたい場合は、シークレット用のディレクトリを作成し、そこにすべてのシークレットを置くことで、偽のデータを作成できます。 DRUMリポジトリでこの例を参照できます。
コマンド例¶
drum fit -cd task_templates/2_estimators/13_python_credentials_and_internet_access/ \
--input tests/testdata/10k_diabetes.csv --target-type binary --target readmitted \
--user-secrets-mount-path task_templates/2_estimators/13_python_credentials_and_internet_access/ \
--verbose --logging-level info --show-stacktrace
シークレットの詳細¶
各シークレットファイルには、同名の対応する資格情報が必要です。 シークレットファイルの内容は、いずれかのシークレットオブジェクトにキャストできるJSON文字列である必要があります。 すべてのシークレットオブジェクトがcustom_model_runner/datarobot_drum/custom_task_interfaces/user_secrets.py
にあります。 シークレットの回答にはcredential_type
が含まれている必要があります。これは、datarobot_drum.custom_task_interfaces.user_secrets.SecretType
の別名です。ただし、値はすべて英小文字である必要があります(SecretType.SNOWFLAKE_KEY_PAIR_USER_ACCOUNT
は{"credential_type": "snowflake_key_pair_user_account"}
に対応します)。
例:
@dataclass(frozen=True)
class SnowflakeKeyPairUserAccountSecret(AbstractSecret):
username: Optional[str]
private_key_str: Optional[str]
passphrase: Optional[str] = None
config_id: Optional[str] = None
次のようになります。
{
"credential_type": "snowflake_key_pair_user_account",
"username": "bob@bob.com",
"private_key_str": "shhhhhhhh"
}