Bring your own bucket (BYOB)
6 minute read
Bring your own bucket (BYOB) を使用すると、W&B の Artifacts やその他の関連する機密データを、お客様の クラウド または オンプレミス の インフラストラクチャー に保存できます。専用クラウド または SaaS Cloud の場合、お客様の バケット に保存する データ は、W&B が管理する インフラストラクチャー にコピーされません。
- W&B SDK / CLI / UI とお客様の バケット 間の通信は、事前署名付き URL を使用して行われます。
- W&B は、W&B Artifacts を削除するためにガベージコレクション プロセス を使用します。詳細については、Artifacts の削除 を参照してください。
- バケット を構成する際にサブパスを指定して、W&B が バケット のルートにあるフォルダーにファイルを保存しないようにすることができます。これは、組織の バケット ガバナンス ポリシーへの準拠を向上させるのに役立ちます。
中央データベースに保存されるデータと バケット に保存されるデータ
BYOB 機能を使用する場合、特定の種類の データ は W&B 中央データベースに保存され、他の種類の データ はお客様の バケット に保存されます。
データベース
- ユーザー 、 Teams、Artifacts、Experiments、および Projects の メタデータ
- Reports
- Experiment ログ
- システム メトリクス
バケット
- Experiment ファイルと メトリクス
- Artifact ファイル
- メディア ファイル
- Run ファイル
設定オプション
ストレージ バケット を構成できる スコープ は、インスタンス レベル または Team レベル の 2 つです。
- インスタンス レベル: 組織内で関連する 権限 を持つ ユーザー は、インスタンス レベルのストレージ バケット に保存されているファイルに アクセス できます。
- Team レベル: W&B Team の メンバー は、Team レベルで構成された バケット に保存されているファイルに アクセス できます。Team レベルのストレージ バケット を使用すると、機密性の高い データ や厳格なコンプライアンス要件を持つ Teams に対して、より優れた データ アクセス制御と データ 分離が可能になります。
インスタンス レベルで バケット を構成することも、組織内の 1 つまたは複数の Teams に対して個別に構成することもできます。
たとえば、組織に Kappa という Team があるとします。組織 (および Team Kappa) は、デフォルトでインスタンス レベルのストレージ バケット を使用します。次に、Omega という Team を作成します。Team Omega を作成するときに、その Team の Team レベルのストレージ バケット を構成します。Team Omega によって生成されたファイルは、Team Kappa からは アクセス できません。ただし、Team Kappa によって作成されたファイルは、Team Omega から アクセス できます。Team Kappa の データを分離する場合は、Team レベルのストレージ バケット を構成する必要があります。
可用性マトリックス
次の表は、さまざまな W&B サーバー デプロイメント タイプ における BYOB の可用性を示しています。X
は、その機能が特定の デプロイメント タイプ で利用できることを意味します。
W&B サーバー デプロイメント タイプ | インスタンス レベル | Team レベル | 追加情報 |
---|---|---|---|
専用クラウド | X | X | インスタンス および Team レベルの BYOB は、Amazon Web Services、Google Cloud Platform、および Microsoft Azure で利用できます。Team レベルの BYOB の場合、同じ クラウド または別の クラウド 内の クラウド ネイティブ ストレージ バケット、または クラウド または オンプレミス の インフラストラクチャー でホストされている MinIO などの S3 互換のセキュア ストレージに接続できます。 |
SaaS Cloud | 適用外 | X | Team レベルの BYOB は、Amazon Web Services と Google Cloud Platform でのみ利用できます。W&B は、Microsoft Azure のデフォルトのストレージ バケット と唯一のストレージ バケット を完全に管理します。 |
自己管理 | X | X | インスタンス レベルの BYOB は、インスタンス がお客様によって完全に管理されているため、デフォルトです。自己管理 インスタンス が クラウド にある場合、Team レベルの BYOB 用に、同じ クラウド または別の クラウド 内の クラウド ネイティブ ストレージ バケット に接続できます。インスタンス または Team レベルの BYOB のいずれかに対して、MinIO などの S3 互換のセキュア ストレージを使用することもできます。 |
Team レベルの BYOB 向けのクロス クラウド または S3 互換ストレージ
専用クラウド または 自己管理 インスタンス の Team レベルの BYOB 用に、別の クラウド 内の クラウド ネイティブ ストレージ バケット 、または MinIO などの S3 互換ストレージ バケット に接続できます。
クロス クラウド または S3 互換ストレージの使用を有効にするには、W&B インスタンス の GORILLA_SUPPORTED_FILE_STORES
環境 変数を使用して、次のいずれかの形式で、関連する アクセス キー を含むストレージ バケット を指定します。
専用クラウド または 自己管理 インスタンス で Team レベルの BYOB 用に S3 互換ストレージを構成する
次の形式でパスを指定します。
s3://<accessKey>:<secretAccessKey>@<url_endpoint>/<bucketName>?region=<region>?tls=true
region
パラメータ は必須です。ただし、W&B インスタンス が AWS にあり、W&B インスタンス ノード で構成された AWS_REGION
が S3 互換ストレージ用に構成された リージョン と一致する場合は除きます。
専用クラウド または 自己管理 インスタンス で Team レベルの BYOB 用にクロス クラウド ネイティブ ストレージを構成する
W&B インスタンス とストレージ バケット の場所固有の形式でパスを指定します。
GCP または Azure の W&B インスタンス から AWS の バケット へ:
s3://<accessKey>:<secretAccessKey>@<s3_regional_url_endpoint>/<bucketName>
GCP または AWS の W&B インスタンス から Azure の バケット へ:
az://:<urlEncodedAccessKey>@<storageAccountName>/<containerName>
AWS または Azure の W&B インスタンス から GCP の バケット へ:
gs://<serviceAccountEmail>:<urlEncodedPrivateKey>@<bucketName>
詳細については、W&B サポート (support@wandb.com) までお問い合わせください。
W&B プラットフォーム と同じ クラウド 内の クラウド ストレージ
ユースケース に基づいて、Team または インスタンス レベルでストレージ バケット を構成します。ストレージ バケット のプロビジョニングまたは構成方法は、Azure の アクセス メカニズムを除き、構成されているレベルに関係なく同じです。
W&B では、必要な アクセス メカニズムと関連する IAM 権限 とともにストレージ バケット をプロビジョニングするために、W&B が管理する Terraform モジュール を使用することを推奨します。
- AWS
- GCP
- Azure - インスタンス レベル BYOB または Team レベル BYOB
-
KMS キー をプロビジョニングします。
W&B では、S3 バケット 上の データを 暗号化および復号化するために、KMS キー をプロビジョニングする必要があります。キー の使用タイプは
ENCRYPT_DECRYPT
である必要があります。次の ポリシー を キー に割り当てます。{ "Version": "2012-10-17", "Statement": [ { "Sid" : "Internal", "Effect" : "Allow", "Principal" : { "AWS" : "<Your_Account_Id>" }, "Action" : "kms:*", "Resource" : "<aws_kms_key.key.arn>" }, { "Sid" : "External", "Effect" : "Allow", "Principal" : { "AWS" : "<aws_principal_and_role_arn>" }, "Action" : [ "kms:Decrypt", "kms:Describe*", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource" : "<aws_kms_key.key.arn>" } ] }
<Your_Account_Id>
と<aws_kms_key.key.arn>
を適宜置き換えます。SaaS Cloud または 専用クラウド を使用している場合は、
<aws_principal_and_role_arn>
を対応する 値 に置き換えます。- SaaS Cloud:
arn:aws:iam::725579432336:role/WandbIntegration
- 専用クラウド:
arn:aws:iam::830241207209:root
この ポリシー は、AWS アカウント に キー へのフル アクセス を許可し、W&B プラットフォーム をホストする AWS アカウント に必要な 権限 も割り当てます。KMS キー ARN の記録を保持します。
- SaaS Cloud:
-
S3 バケット をプロビジョニングします。
次の手順に従って、AWS アカウント で S3 バケット をプロビジョニングします。
-
任意の名前で S3 バケット を作成します。オプションで、すべての W&B ファイルを保存するためのサブパスとして構成できるフォルダーを作成します。
-
バケット の バージョン管理 を有効にします。
-
前のステップの KMS キー を使用して、サーバー 側の 暗号化 を有効にします。
-
次の ポリシー で CORS を構成します。
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "HEAD", "PUT" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "ETag" ], "MaxAgeSeconds": 3600 } ]
-
W&B プラットフォーム をホストする AWS アカウント に必要な S3 権限 を付与します。これには、お客様の クラウド インフラストラクチャー または ユーザー の ブラウザー 内の AI ワークロード が バケット への アクセス に使用する 事前署名付き URL を生成するための 権限 が必要です。
{ "Version": "2012-10-17", "Id": "WandBAccess", "Statement": [ { "Sid": "WAndBAccountAccess", "Effect": "Allow", "Principal": { "AWS": "<aws_principal_and_role_arn>" }, "Action" : [ "s3:GetObject*", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions", "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:PutObject", "s3:GetBucketCORS", "s3:GetBucketLocation", "s3:GetBucketVersioning" ], "Resource": [ "arn:aws:s3:::<wandb_bucket>", "arn:aws:s3:::<wandb_bucket>/*" ] } ] }
<wandb_bucket>
を適宜置き換え、 バケット 名の記録を保持します。専用クラウド を使用している場合は、インスタンス レベルの BYOB の場合に備えて、 バケット 名を W&B Team と共有します。任意の デプロイメント タイプ の Team レベルの BYOB の場合は、Team の作成中に バケット を構成します。SaaS Cloud または 専用クラウド を使用している場合は、
<aws_principal_and_role_arn>
を対応する 値 に置き換えます。- SaaS Cloud:
arn:aws:iam::725579432336:role/WandbIntegration
- 専用クラウド:
arn:aws:iam::830241207209:root
- SaaS Cloud:
-
詳細については、AWS 自己管理 ホスティング ガイド を参照してください。
-
GCS バケット をプロビジョニングします。
次の手順に従って、GCP プロジェクト で GCS バケット をプロビジョニングします。
-
任意の名前で GCS バケット を作成します。オプションで、すべての W&B ファイルを保存するためのサブパスとして構成できるフォルダーを作成します。
-
ソフト削除を有効にします。
-
オブジェクト の バージョン管理 を有効にします。
-
暗号化 タイプ を
Google-managed
に設定します。 -
gsutil
で CORS ポリシー を設定します。これは UI では実行できません。 -
cors-policy.json
というファイルをローカルに作成します。 -
次の CORS ポリシー をファイルにコピーして保存します。
[ { "origin": ["*"], "responseHeader": ["Content-Type"], "exposeHeaders": ["ETag"], "method": ["GET", "HEAD", "PUT"], "maxAgeSeconds": 3600 } ]
-
<bucket_name>
を正しい バケット 名に置き換え、gsutil
を実行します。gsutil cors set cors-policy.json gs://<bucket_name>
-
バケット の ポリシー を確認します。
<bucket_name>
を正しい バケット 名に置き換えます。gsutil cors get gs://<bucket_name>
-
-
SaaS Cloud または 専用クラウド を使用している場合は、W&B プラットフォーム にリンクされている GCP サービス アカウント に
Storage Admin
ロール を付与します。- SaaS Cloud の場合、アカウント は
wandb-integration@wandb-production.iam.gserviceaccount.com
です。 - 専用クラウド の場合、アカウント は
deploy@wandb-production.iam.gserviceaccount.com
です。
バケット 名の記録を保持します。専用クラウド を使用している場合は、インスタンス レベルの BYOB の場合に備えて、 バケット 名を W&B Team と共有します。任意の デプロイメント タイプ の Team レベルの BYOB の場合は、Team の作成中に バケット を構成します。
- SaaS Cloud の場合、アカウント は
-
Azure Blob Storage をプロビジョニングします。
インスタンス レベルの BYOB の場合、この Terraform モジュール を使用していない場合は、次の手順に従って Azure サブスクリプション で Azure Blob Storage バケット をプロビジョニングします。
-
任意の名前で バケット を作成します。オプションで、すべての W&B ファイルを保存するためのサブパスとして構成できるフォルダーを作成します。
-
BLOB とコンテナー のソフト削除を有効にします。
-
バージョン管理 を有効にします。
-
バケット で CORS ポリシー を構成します。
UI から CORS ポリシー を設定するには、BLOB ストレージに移動し、
[設定] -> [リソース共有 (CORS)]
までスクロールして、次のように設定します。パラメータ 値 許可される オリジン *
許可される メソッド GET
、HEAD
、PUT
許可される ヘッダー *
公開される ヘッダー *
最大年齢 3600
-
-
ストレージ アカウント の アクセス キー を生成し、ストレージ アカウント 名とともに記録を保持します。専用クラウド を使用している場合は、安全な共有メカニズムを使用して、ストレージ アカウント 名と アクセス キー を W&B Team と共有します。
Team レベルの BYOB の場合、W&B では、必要な アクセス メカニズムと 権限 とともに Azure Blob Storage バケット をプロビジョニングするために、Terraform を使用することを推奨します。専用クラウド を使用する場合は、インスタンス の OIDC 発行者 URL を指定します。Team の作成中に バケット を構成する ために必要な詳細をメモしておきます。
- ストレージ アカウント 名
- ストレージ コンテナー 名
- マネージド ID クライアント ID
- Azure テナント ID
W&B で BYOB を構成する
GORILLA_SUPPORTED_FILE_STORES
環境 変数を使用してストレージ バケット を指定する必要があります。W&B Team を作成するときに Team レベルでストレージ バケット を構成するには:
-
[Team 名] フィールドに Team の名前を入力します。
-
[ストレージ タイプ] オプションで [外部ストレージ] を選択します。
-
ドロップダウンから [新しい バケット ] を選択するか、既存の バケット を選択します。
複数の W&B Teams が同じ クラウド ストレージ バケット を使用できます。これを有効にするには、ドロップダウンから既存の クラウド ストレージ バケット を選択します。
-
[クラウド プロバイダー] ドロップダウンから、 クラウド プロバイダーを選択します。
-
[名前] フィールドにストレージ バケット の名前を入力します。専用クラウド または Azure 上の 自己管理 インスタンス がある場合は、[アカウント 名] フィールドと [コンテナー 名] フィールドに値を入力します。
-
(オプション) オプションの [パス] フィールドに バケット サブパスを入力します。W&B が バケット のルートにあるフォルダーにファイルを保存しないようにする場合は、これを行います。
-
(AWS バケット を使用している場合はオプション) [KMS キー ARN] フィールドに KMS 暗号化 キー の ARN を入力します。
-
(Azure バケット を使用している場合はオプション) [テナント ID] フィールドと [マネージド ID クライアント ID] フィールドに値を入力します。
-
(SaaS Cloud ではオプション) Team の作成時に Team メンバー を招待します。
-
[Team を作成] ボタンを押します。

バケット への アクセス に問題がある場合、または バケット の 設定 が無効な場合、ページの下部に エラー または 警告 が表示されます。
専用クラウド または 自己管理 インスタンス の インスタンス レベルの BYOB を構成するには、W&B サポート (support@wandb.com) までお問い合わせください。
[i18n] feedback_title
[i18n] feedback_question
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.