注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Foundryデータセット用のS3互換API

Foundryデータセット用のS3互換APIを使用すると、S3バケットとしてFoundryデータセットと対話することができます。APIを通じてデータセットがどのように動作するかを学び、セットアップガイドをご覧ください。

概要

Foundryは、Amazon Simple Storage Service (S3) API (外部リンク)の一部を公開し、S3ストレージサービスと対話する方法を知っているクライアントを使用して、Foundryデータセットと対話することができます。例えば、AWS CLI、AWS SDKs、Hadoop S3ファイルシステム、Cyberduckなどです。

Foundryデータセット用のS3互換API

S3 APIは完全に実装されていないため、すべてのS3の概念がFoundryの概念に自然にマッピングされるわけではありません。例えば、バケット(Foundryデータセットを表す)の作成や削除は現在サポートされておらず、APIを使用する前にFoundryでデータセットを作成する必要があります。しかし、大部分のファイルの読み/書き/削除ワークフローはサポートされており、マルチパートアップロードも含まれます。サポートされているS3アクションのリストについては、サポートされているアクションをご覧ください。

概念

このセクションでは、S3の概念がFoundryデータセットの概念にどのようにマッピングされるかを概説します。

S3バケットはFoundryデータセットに対応します

S3バケットFoundryデータセットに対応し、バケット名はFoundryデータセットの一意の識別子となります(例えば、ri.foundry.main.dataset.bafb7e96-84f1-4d23-a4a5-40b17c6912e7)。

S3オブジェクトキーFoundryデータセット内のファイルの論理パスに対応します(例えば、top-level-file.csvsubfolder/nested-file.csv)。

ブランチ

APIは、英数字の名前(a-zA-Z0-9のみを含む)を持つデータセットブランチに対応しています。ブランチを指定するには、ブランチ名をピリオドで区切ってデータセットのRIDに追加します:<dataset-rid>.<branch-name>。ブランチが指定されていない場合、デフォルトのブランチが使用されます。

例えば、RIDがri.foundry.main.dataset.bafb7e96-84f1-4d23-a4a5-40b17c6912e7のデータセットのmybranchブランチにアクセスするには、バケット名ri.foundry.main.dataset.bafb7e96-84f1-4d23-a4a5-40b17c6912e7.mybranchを使用します。

APIはブランチの作成をサポートしていません。指定されたブランチはデータセット上に既に存在している必要があります。

トランザクション管理

S3にはトランザクションの概念がないため、Foundryデータセットトランザクションは以下の振る舞いで自動的に処理されます:

  1. ユーザーがファイルを書き込んだり、削除したりすると、トランザクションが遅延して開始されます。
  2. APIは、複数のファイルを並行して書き込むか、複数のファイルを並行して削除することをサポートしています。ファイルは同じ開いているトランザクション内で変更され、書き込みはUPDATEトランザクションを使用し、削除はDELETEトランザクションを使用します。
  3. APIは並行した書き込みと削除をサポートしていません。これは、同時にUPDATEDELETEのトランザクションをアクティブにする必要があるからです。
  4. 書き込みや削除の後、短時間の非活動期間が経過すると、トランザクションは自動的にコミットされます。これにより、同じトランザクション内で複数のファイルをアップロードすることができ、非常に少ないファイルの多数のトランザクションを避けることができます。ファイルが継続的にアップロードされ、非活動期間がない場合など、トランザクションが無期限に開放されるのを避けるために、一定の時間が経過するとアクティブなアップロードがない場合にはトランザクションがコミットされます。ファイルが並行して継続的にアップロードされる場合、トランザクションはすべてのアップロードが完了するまで開放されたままになります。
  5. トランザクションが開いている状態で非活動期間中に読み取りリクエストが受け取られた場合、可能な場合にはUPDATEDELETEのトランザクションが直ちにコミットされます。これは、一般的にS3で期待される書き込み後の読み取りのセマンティクスを保持することを目指しています。ただし、開いているトランザクションへの書き込みリクエストがまだアクティブな状態で読み取りが試みられた場合、読み取りは最新のコミット済みビューから行われます。すべての書き込みや削除が完了した後にトランザクションがコミットすることを保証するために、新しい書き込みリクエストや削除リクエストの前に続けて読み取りリクエストを発行することができます。

以上の振る舞いを考えると、書き込み後の読み取りのセマンティクスは保証されません。しかし、可能な限りそれらを提供するためにすべての努力がなされます。

認証

APIを通じた接続は、アクセスキーIDとシークレットアクセスキーの資格情報を使用して認証されます。

静的資格情報

静的資格情報は、標準的なAWSアクセスキーIDとシークレットアクセスキーの資格情報と同様です。静的資格情報は長寿命で、Foundryの場合は、Foundryのコントロールパネルで登録されたサードパーティアプリケーションのサービスユーザーに関連付けられています。以下のセットアップガイドで、これらの資格情報を生成するための/io/s3/api/v2/credentials APIエンドポイントの使用方法について説明します。

静的なアクセスキーIDとシークレットアクセスキーを使用して、S3互換APIを介してデータセットに接続する場合、アクセスレベルは、サードパーティアプリケーションのサービスユーザーに付与されたアクセスによって決定されます。サードパーティアプリケーションのセットアップ時に以下のことを確認してください:

  1. サードパーティアプリケーションがクライアント資格情報を付与できるように設定されていて、サービスユーザーが作成されていること。
  2. サービスユーザーは、読み取りやファイルのリスト表示などの読み取り専用のワークフローの場合はプロジェクトにViewerロールを持っているか、ファイルの書き込みや削除などの読み書きワークフローの場合はプロジェクトにEditorロールを持っていること。

S3の資格情報は少なくとも1つのプロジェクトに制限されていることが必要です。新しい資格情報の生成時に、プロジェクトの制限が提供されます。

新しいV2エンドポイントの登録資格情報は、サードパーティアプリケーションのクライアントシークレットを必要としなくなりました。/io/s3/api/v2/credentialsエンドポイントのみを使用すべきです。以前に古いAPIを使用して登録した資格情報は、引き続き動作します。ただし、資格情報はもはやサードパーティアプリケーション上のプロジェクトの制限に紐付けられておらず、それらの制限の変更やクライアントシークレットのローテーションは、S3の資格情報を無効にしなくなりました。異なるプロジェクト制限を持つ資格情報が必要な場合は、V2エンドポイントで新しい資格情報セットを生成してください。

一時的な資格情報

長寿命の資格情報が必要なワークフローや、サービスユーザーにアクセスを紐付けることが有益な場合は、静的資格情報の使用をお勧めします。通常のFoundryユーザーとしてAPIに認証することを好む場合は、ユーザー認証トークンを一時的なS3資格情報と交換することをサポートしています。このトークンは、サードパーティアプリケーションOAuth2グラントの1つを通じても取得できます。

一時的な資格情報は、標準のAssumeRoleWithWebIdentity Security Token Service (STS) APIを使用して取得されます。私たちはWebIdentityTokenリクエストパラメーターが存在し、上記のように通常のFoundryトークンで設定されていることを必要とします。返される一時的な資格情報は、提供されたトークンと同じ範囲を持つことになります。資格情報の寿命を指定するためにDurationSecondsパラメーターを提供することができます。資格情報は最大1時間の寿命を持ち、一時的な資格情報を取得するために使用されたFoundryトークンの寿命を超えることはありません。

STS APIはhttps://<FOUNDRY_URL>/io/s3でアクセスできます。プログラム的にSTS資格情報を取得する場合は、このURLを標準のSTSクライアントや資格情報プロバイダーのエンドポイント設定に設定する必要があります。または、以下の例のように、curlや同等のツールを使用してAPIに直接アクセスすることもできます。<TOKEN>は有効なFoundryトークンに置き換える必要があります。

Copied!
1 2 3 # WebIdentityTokenを使用してAssumeRoleWithWebIdentityアクションを実行するためのcurlコマンド curl -X POST \ https://<FOUNDRY_URL>/io/s3?Action=AssumeRoleWithWebIdentity&WebIdentityToken=<トークン>

以下に示すように、XMLレスポンスでセッションの資格情報を受け取ります。これらの資格情報は、安全に保管する必要があります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <!-- XMLバージョンとエンコーディングを定義します --> <?xml version='1.0' encoding='UTF-8'?> <!-- AssumeRoleWithWebIdentityResponseという名前のエレメントを開始します --> <AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <!-- AssumeRoleWithWebIdentityResultという名前のエレメントを開始します --> <AssumeRoleWithWebIdentityResult> <!-- Credentialsという名前のエレメントを開始します --> <Credentials> <!-- AccessKeyIdという名前のエレメントを開始し、その値を定義します --> <AccessKeyId>PLTRLZZJE0...</AccessKeyId> <!-- SecretAccessKeyという名前のエレメントを開始し、その値を定義します --> <SecretAccessKey>2j3hKX4EDP...</SecretAccessKey> <!-- SessionTokenという名前のエレメントを開始し、その値を定義します --> <SessionToken>eyJwbG50ci...</SessionToken> <!-- Expirationという名前のエレメントを開始し、その値を定義します --> <Expiration>2023-08-30T10:55:08.841403951Z</Expiration> <!-- Credentialsエレメントを閉じます --> </Credentials> <!-- AssumeRoleWithWebIdentityResultエレメントを閉じます --> </AssumeRoleWithWebIdentityResult> <!-- AssumeRoleWithWebIdentityResponseエレメントを閉じます --> </AssumeRoleWithWebIdentityResponse>

一時的な資格情報を取得したら、以下のセットアップガイドのステップ4に進み、S3クライアントの設定方法について説明します。サードパーティのアプリケーションに関する手順はすべて無視してください。S3クライアントを設定する際には、セッショントークン、アクセスキーID、シークレットアクセスキーを提供する必要があります。

パススタイルURLアクセス

APIは、パススタイル (外部) バケットアクセスのみをサポートしています。バケットのURLは https://<FOUNDRY_URL>/io/s3/<bucket-name>/<key-name> の形式となります。

Foundryの用語では、https://<FOUNDRY_URL>/io/s3/<dataset-rid>/<logical-filepath> となります。

バーチャルホストスタイルバケットアクセス(バケット名がURLのサブドメインに含まれる)は現在サポートされていません。

署名付きURL

putObject 操作に対して、署名付きURLがサポートされています。

セットアップガイド

以下の手順に従って、S3クライアントからAPIへの接続を設定します。

  1. Foundryでサードパーティアプリケーションを登録する
  2. サードパーティアプリケーションのサービスユーザーに権限を付与する
  3. S3アクセスキーIDとシークレットアクセスキーを生成する
  4. S3クライアントを設定する

特定のS3クライアントの設定例を表示する

ステップ 1: Foundryでサードパーティアプリケーションを登録する

S3互換APIの資格情報を取得するためには、まずFoundryのコントロールパネルで作成されたサードパーティアプリケーションのクライアントIDとシークレットを取得する必要があります:

  1. Foundryのコントロールパネルを開きます。
  2. サイドバーのサードパーティアプリケーションを選択します。
  3. 新規アプリケーションを選択し、次のパラメーターでセットアップウィザードを完了します:
    • クライアントタイプ: 機密クライアントを選択します。
    • 認証グラントタイプ: クライアント認証グラントを有効にします。
  4. サマリーページの右下にあるアプリケーションを登録を選択します。
  5. 完了画面でクライアントIDを記録します。これは後のステップで必要になります。次にアプリケーションの使用を有効にするを選択し、トグルスイッチを有効にします。

概念:認証を確認して、プロジェクト制限の要件と動作、生成された資格情報の範囲を理解します。

ステップ 2: サードパーティアプリケーションのサービスユーザーに権限を付与する

前のステップでサードパーティアプリケーションを作成したとき、Foundryは自動的にサービスユーザーを作成しました。S3 APIを通じてデータセットにアクセスするには、このサービスユーザーが関連するプロジェクトとマーキングに十分な権限を持っている必要があります。

サービスユーザーの権限を設定するには:

  1. サービスユーザーの名前とIDを見つけます。これらの詳細は、アプリケーションの"アプリケーションの管理"ページにあります。認証グラントタイプ > クライアント認証グラント > サービスユーザーの下にあります。
  2. サービスユーザーに権限を付与します。プロジェクトとマーキングに直接ユーザーを追加するか、それらの権限を付与されたグループにユーザーを追加します。

サービスユーザーにプロジェクトの権限を付与する際、S3 APIを通じて読み込みのみを行う場合はViewerロールを選択し、書き込みを行う場合はEditorロールを付与します。

ステップ 3: S3アクセスキーIDとシークレットアクセスキーを生成する

資格情報を生成するには、コントロールパネルの組織でUser experience administratorロールが必要です。

以下のターミナルコマンドを実行すると(curlまたはPowershellを使用)、アクセスキーIDとシークレットアクセスキーが表示されます。<TOKEN>をユーザーアカウントのアクティブなトークンに、<CLIENT_ID>を前のステップで生成したサードパーティアプリケーションのクライアントIDに置き換えます。さらに、<PROJECT_RID>を資格情報がアクセス可能なプロジェクトのRIDに置き換える必要があります。projectRestrictionsの値は複数のプロジェクトを取ることができ、必要に応じてさらにプロジェクトRIDをリストに追加できます。

オプション 1: curl

Copied!
1 2 3 4 5 6 7 8 # 以下のコマンドは、新しいクレデンシャルを作成するためのものです。 # curlを使用してPOSTリクエストを送信します。 curl -X POST \ # POSTリクエストを指定します。 -H "Authorization: Bearer <TOKEN>" \ # トークンを用いた認証情報をヘッダーに含めます。 -H "Content-type: application/json" \ # データ形式としてJSONを指定します。 --data '{"clientId":"<CLIENT_ID>","projectRestrictions":["<PROJECT_RID>"]}' \ # 送信するデータを指定します。ここではclientIdとprojectRestrictionsを指定しています。 https://<FOUNDRY_URL>/io/s3/api/v2/credentials # 送信先のURLを指定します。

オプション 2: Powershell (Windows)

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 # 認証用とデータ形式指定用のヘッダーを定義します $headers = @{ "Authorization" = "Bearer <TOKEN>" # 認証トークン "Content-type" = "application/json" # データ形式はJSON } # POSTリクエストのボディを定義します $body = @{ "clientId" = "<CLIENT_ID>" # クライアントID "projectRestrictions" = @("<PROJECT_RID>") # プロジェクトID } | ConvertTo-Json # JSON形式に変換します # Invoke-WebRequestを用いてPOSTリクエストを送ります Invoke-WebRequest -Uri "https://<FOUNDRY_URL>/io/s3/api/v2/credentials" -Method POST -Headers $headers -Body $body

このリクエストの応答で受け取ったアクセスキーとシークレットキーを安全に保管してください。これらの資格情報をクライアントに設定する必要があります。第三者アプリケーションのクライアントIDとシークレットではありません。

組織の指定

デフォルトでは、/v2/資格情報 エンドポイントは認証ユーザーが自身の Organization 内の第三者アプリケーションの資格情報を生成していると想定しています。第三者アプリケーションが別の組織に存在する場合は、URLのクエリパラメーターとして組織IDを指定します:https://<FOUNDRY_URL>/io/s3/api/v2/資格情報?organizationRid=<ORGANIZATION_ID>

資格情報の取り消し

アクセスキーとシークレットアクセスキーを取り消す必要がある場合は、以下のエンドポイントを呼び出し、<ACCESS_KEY_ID>を取り消したいアクセスキーIDに置き換えます:

Copied!
1 2 3 4 5 6 # curlコマンドを使用してDELETEリクエストを送信します # AuthorizationヘッダにはBearerトークンを含めます # このコマンドは、特定のアクセスキーIDを持つ認証情報を削除するためのものです curl -X DELETE \ -H "Authorization: Bearer <TOKEN>" \ https://<FOUNDRY_URL>/io/s3/api/v2/credentials/<ACCESS_KEY_ID>

ステップ 4: S3 クライアントの設定

S3 クライアントを設定するには、以下の設定パラメーターを設定する必要があります。これらが一般的な S3 クライアントでどのように設定されるべきかの詳細は、以下の を参照してください。

名前説明
ホスト名 / エンドポイントhttps://<FOUNDRY_URL>/io/s3クライアントが接続すべきホスト名(AWS でホストされているネイティブ S3 バケットの場合は s3.amazonaws.com)。
リージョンfoundryリージョンは、V4署名検証 プロセスの一部として使用されるため、foundry に設定する必要があります。クライアントが標準の AWS リージョンのみを使用できる場合は、us-east-1 を使用してください。
資格情報アクセスキー ID とシークレットアクセスキー、およびオプションでセッショントークン上記で説明したように生成された 静的 または 一時的な 資格情報。
パススタイルアクセスtrueAPI は パススタイル バケットアクセスのみをサポートし、バーチャルホストスタイルのバケットアクセスはサポートしていません。
バケット名(オプション)ri.foundry.main.dataset.<uuid>各 Foundry データセットは別々の S3 バケットとしてアクセス可能で、バケット名はデータセットの RID となります。

サポートされている操作

次の S3 操作(外部)がサポートされています:

クライアントの設定例

上述したように、クライアント/SDK/コネクタはパススタイルのバケットアクセスを使用するように設定する必要があります。クライアントがパススタイルのバケットアクセスをサポートしていない場合、現在この API との互換性はありません。 例えば、S3A Hadoop クライアント(外部)では、fs.s3a.path.style.access フラグを使用して設定できます。

一時的な資格情報 を使用している場合は、AWS セッションアクセストークンも設定してください。詳細については、関連する AWS クライアントのドキュメンテーションを参照してください。例えば、AWS CLI(外部)を使用している場合は、AWS_SESSION_TOKEN 環境変数を設定してください。

AWS CLI

アクセスキー ID とシークレットアクセスキーがあれば、AWS CLI を設定する準備が整いました。以下のコマンドを実行し、アクセスキー ID、シークレットアクセスキー、およびリージョンを入力します。

$ aws configure --profile foundry
AWS Access Key ID [None]: <ACCESS_KEY_ID>  # AWSアクセスキーIDを入力してください
AWS Secret Access Key [None]: <SECRET_ACCESS_KEY>  # AWSシークレットアクセスキーを入力してください
Default region name [None]: foundry  # デフォルトのリージョン名を入力してください
Default output format [None]:  # デフォルトの出力フォーマットを入力してください(必要に応じて)

これで、foundry プロファイルのコマンドを実行できるようになりました。例えば:

Copied!
1 2 # AWS コマンドラインインターフェースを使用して、Foundry の特定のエンドポイントとデータセットにアクセスします。 aws --profile foundry --endpoint-url https://<FOUNDRY_URL>/io/s3 s3 ls s3://<DATASET_RID>

最近のリリース (外部) で AWS CLI が更新され、profile設定の一部として endpoint-url を設定できるようになりました。以下に示すのは、~/.aws/config に設定されている foundry プロファイルの例です。endpoint_url プロパティを使用してプロファイルを設定する場合、aws コマンドを使用する際に --endpoint-url 引数を含める必要はなくなります。代わりに、--profile だけで十分です。

Copied!
1 2 3 4 5 6 [profile foundry] region = foundry endpoint_url = https://<FOUNDRY_URL>/io/s3 # プロファイル名: foundry # リージョン: foundry # エンドポイントURL: https://<FOUNDRY_URL>/io/s3 (FOUNDRY_URLは実際のURLに置き換えてください)

AWS CLI一時的な資格情報を使用するには、AWS STSのAssumeRoleWithWebIdentity呼び出しをCLIで設定する方法を説明している(外部)AWSのドキュメンテーションに従ってください。以下に示すのは、~/.aws/configで設定されるfoundryプロファイルのサンプルです。この設定を使用すると、環境変数(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN)や~/.aws/credentialsに資格情報を設定する必要はありません。

Copied!
1 2 3 4 5 [profile foundry] region = foundry # リージョンを指定します。ここでは "foundry" と指定しています。 endpoint_url = https://<FOUNDRY_URL>/io/s3 # エンドポイントのURLを指定します。"<FOUNDRY_URL>"は適切なURLに置き換えてください。 web_identity_token_file = ~/.foundry/web-identity.token # Web IDのトークンファイルの場所を指定します。 role_arn=xxxxxxxxxxxxxxxxxxxx # ロールのARN (Amazon Resource Name) を指定します。"xxxxxxxxxxxxxxxxxxxx"は適切なARNに置き換えてください。

上記の例では、有効な Foundry トークンが ~/.foundry/web-identity.token のファイルに格納されていることを前提としています。このファイルが適切にセキュアで、リークのリスクがない場合にのみ、このアプローチをお勧めします。role_arn プロパティは使用されませんが、AWS CLI のバリデーションのために提供し、少なくとも 20 文字以上である必要があります。例では、xxxxxxxxxxxxxxxxxxxx をプレースホルダーとして使用しています。この設定を使用するには、上記で説明したように --endpoint-url を使用するのではなく、~/.aws/configendpoint_url を設定する必要があります。

AWS SDK for Python (Boto3)

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import boto3 import pandas as pd # boto3 クライアントを作成 s3 = boto3.client( 's3', aws_access_key_id="<ACCESS_KEY_ID>", aws_secret_access_key="<SECRET_ACCESS_KEY>", # session_token="<SESSION_TOKEN>", 一時的な認証情報を使用する場合のみ必要 endpoint_url="https://<FOUNDRY_URL>/io/s3", region_name="foundry" ) # S3 バケットとオブジェクトのキーを設定 bucket = 'ri.foundry.main.dataset.<uuid>' key = 'iris.csv' # オブジェクトを取得して、pandas のデータフレームに読み込む obj = s3.get_object(Bucket=bucket, Key=key) df = pd.read_csv(obj['Body']) # データフレームを出力 print(df)

Boto3 のドキュメントの S3 セクション (外部)を参照して、Boto3 を使用して S3 互換ソースに接続する方法の詳細を確認してください。

Spark

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from pyspark.sql import SparkSession hostname = "https://<subdomain>.palantircloud.com/io/s3" access_key_id = "<ACCESS_KEY_ID>" secret_access_key = "<SECRET_ACCESS_KEY>" # データセットRIDが有効なホスト名として解析できることを確認 dataset_rid = "ri.foundry.main.dataset.<uuid>".replace('.', '-') # SparkSessionの作成 spark_session = ( SparkSession.builder .config("fs.s3a.access.key", access_key_id) # アクセスキーIDの設定 .config("fs.s3a.secret.key", secret_access_key) # シークレットアクセスキーの設定 # .config("fs.s3a.session.token", session_token) 一時的な認証情報を使用する場合に必要 .config("fs.s3a.endpoint", hostname) # エンドポイントの設定 .config("fs.s3a.endpoint.region", "foundry") # エンドポイントのリージョンの設定 .config("fs.s3a.path.style.access", "true") # パススタイルアクセスの設定 .getOrCreate() # SparkSessionの取得または作成 ) # parquetファイルの読み込み df = spark_session.read.parquet(f"s3a://{dataset_rid}/") df.show() # データフレームの表示

詳細については、Spark のドキュメンテーション を参照し、Spark を S3 と一緒に使用する方法をご覧ください。

バケット名に '.' が含まれていると、Hadoop AWS クライアントを使用する際に問題が発生することがあります。"bucket is null/empty" というエラーメッセージが表示される場合があります。これが発生すると、データセットの RID は有効なホスト名として解析できません。回避策として、データセット RID の '.' を '-' に置き換えることができます。

Cyberduck

  1. 次のプロファイルをダウンロードします: Foundry S3.cyberduckprofile

  2. プロファイルファイルをダブルクリックして開き、Cyberduck にプロファイルを登録します。

  3. Cyberduck がユーザーのために作成したデフォルトのブックマークに次の接続プロパティを設定します:

    • Server: https://<subdomain>.palantircloud.com
    • Access Key ID: <ACCESS_KEY_ID>
    • Secret Access Key: <SECRET_ACCESS_KEY>
    • Path: (under More Options) ri.foundry.main.dataset.<uuid>
  4. ブックマークの設定ウィンドウを閉じます。

  5. ブックマークをダブルクリックして接続を開きます。

S3 互換のソースに接続する方法についての詳細は、Cyberduck のドキュメンテーション (外部) を参照してください。

Google Storage Transfer Service

Google Cloud の Storage Transfer Service (外部) は、Foundry を S3 互換ソース (外部) として扱うことができます。以下の手順に従って、Foundry のデータセットから Cloud Storage バケットにデータを転送できます。

  1. Google Cloud の指示に従って、エージェントプールと転送エージェントを設定します。

  2. 転送ジョブを作成し、ソースタイプ として S3 互換のオブジェクトストレージ を選択します。次に、ステップ (1) で作成したエージェントプールを選択し、以下の設定が適用されていることを確認します:

    • Bucket: ri.foundry.main.dataset.<uuid>.
    • Endpoint: https://<FOUNDRY_URL>/io/s3
    • Signing region: foundry
    • Signing process: Signature Version 4 (SigV4)
    • Addressing-style: Path-style requests
    • Network protocol: HTTPS
    • Listing API version: ListObjectsV2 転送ジョブの Cloud Storage バケットの宛先、スケジュール、設定の設定を完成させます。

Apache NiFi

Apache NiFi を使用して、Foundry データセット内のファイルを読み書きすることができます。以下の例は、PutS3Object プロセッサータイプを書き込み用に設定する方法を示しています:

  • Object Key: データセット内の論理的なファイルパス path/to/file.csv
  • Bucket: データセット RID、例えば ri.foundry.main.dataset.<uuid>
  • Access Key ID: <ACCESS_KEY_ID>
  • Secret Access Key: <SECRET_ACCESS_KEY>
  • Region: "US East (N. Virginia)" これは us-east-1 に対応します
  • Use Path Style Access: true
  • Endpoint Override URL: https://<FOUNDRY_URL>/io/s3

PutS3Object プロセッサーや他の S3 互換ソースをサポートするプロセッサーについての詳細は、Apache NiFi のドキュメンテーション (外部) を参照してください。

Airbyte

Airbyte (外部) の S3 デスティネーションに対するサポートは、Foundry データセットにファイルを書き込むために使用できます。以下のデスティネーション設定を設定します:

  • Destination type: S3
  • S3 Key ID: <ACCESS_KEY_ID>
  • S3 Access Key: <SECRET_ACCESS_KEY>
  • S3 Bucket Name: ri.foundry.main.dataset.<uuid>
  • S3 Bucket Path: 有効なサブディレクトリパス。Airbyte は、このサブディレクトリにファイルを書き込みます。
  • S3 Bucket Region: us-east-1
  • Output Format: Airbyte の全ての出力形式は Foundry データセットと互換性があります。
  • Endpoint: https://<FOUNDRY_URL>/io/s3

詳細と設定オプションについては、Airbyte の S3 デスティネーション (外部) のドキュメンテーションを参照してください。