注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Python 関数から外部ソースに API 呼び出しを行うことは可能ですが、そのためには追加の設定が必要です。この設定および外部ソースの使用方法については以下に詳述します。
この機能を使用するには、関数をデプロイする必要があり、サーバーレス Python 関数では使用できません。
デフォルトでは、Python 関数は外部 API を呼び出すことが許可されていません。Python 関数から外部システムを呼び出せるようにするには、Data Connectionで Foundry が外部システムに接続できるようにソースを設定する必要があります。
Python 関数がユーザーのソースの外部システムに安全に接続するためには、ソースがエクスポートを有効にするように設定され、Code Repositories にソースをインポートすることが許可されている必要があります。これらの設定は、Data Connection でソースに移動し、Connection settings セクションを開くことで行えます。ここには Code import configuration タブがあり、ソースに API 名がまだない場合は API 名を設定することもできます。この API 名はコード内でソースをリファレンスするために使用されます。
Python 関数から API 呼び出しを行うには、まず Python 関数リポジトリでリソースインポートサイドバーを使用してソースをインポートする必要があります。インポート後、関数にソースのアクセス権を与えるには、@function
デコレータの sources
パラメーターにソースの API 名を追加します。
ソースがインポートされ、関数デコレータで宣言されると、そのソースが表すシステムに外部 API 呼び出しを行うことができます。
以下にその例を示します:
Copied!1 2 3 4 5 6 7 8 9 10 11
from functions.api import function from functions.sources import get_source @function(sources=["<SOURCE API NAME>"]) def my_external_function(name: str) -> str: source = get_source("<SOURCE API NAME>") # データソースを取得 url = source.get_https_connection().url # HTTPS接続のURLを取得 client = source.get_https_connection().get_client() # HTTPSクライアントを取得 response = client.get(url) # URLに対してGETリクエストを送信 return response.txt # レスポンスのテキストを返す
関数を公開した後、Pipeline BuilderやWorkshopで外部呼び出しを行うために使用できます。
関数のライブプレビューでは現在API呼び出しを行うことはできません。関数を公開してテストする必要があります。
組み込みの接続オブジェクトの get_https_connection()
メソッドを使用してソース属性にアクセスできます。以下の例は、上記の例でソースのベースURLを取得する方法を示しています。
Copied!1 2
url = get_source("<SOURCE API NAME>").get_https_connection().url # ソースAPI名を指定してソースを取得し、HTTPS接続を確立してURLを取得します
次の構文を使用して、ソースに保存されている追加のシークレットや資格情報にもアクセスできます。
Copied!1 2 3
secret = get_source("<SOURCE API NAME>").get_secret("<SECRET API NAME>") # `get_source` 関数を使って、指定されたソースAPIからデータソースを取得し、 # `get_secret` メソッドを用いて、指定されたシークレットAPIからシークレットを取得します。
REST API を提供するソースに対しては、ソースオブジェクトを使用して組み込み HTTPS クライアントと対話できます。このクライアントは、サーバーまたはクライアント証明書を含むソースで指定された詳細で事前に構成されているため、外部システムへのリクエストを開始できます。
Copied!1 2 3 4 5 6 7
connection = get_source("<SOURCE API NAME>").get_https_connection() client = connection.get_client() response = client.get(connection.url) # connection 変数に <SOURCE API NAME> から HTTPS 接続を取得 # client 変数に接続からクライアントを取得 # response 変数にクライアントを使用して接続のURLからデータを取得
現在、HTTPS クライアントを提供していない限り、資格情報以外のソース属性にアクセスすることはできません。たとえば、PostgreSQL source で hostname
やその他の非秘密属性にアクセスすることはできません。