S3 バケットと IAM ロールの作成
このページでは、適切な権限を持つ Bring-Your-Own-Cloud (BYOC) プロジェクトのルートストレージを作成および設定する手順について説明します。
Zilliz BYOC は現在 General Availability で利用可能です。アクセス方法および実装の詳細については、Zilliz Cloud の営業担当までお問い合わせください。
S3 バケットのベストプラクティス
プロジェクトのデプロイ時に指定するバケットは、そのプロジェクト内で作成されるクラスターのルートストレージとして使用されます。S3 バケットを作成する前に、以下のベストプラクティスを確認してください。
-
S3 バケットは、プロジェクトのデプロイと同じ AWS リージョン内に存在する必要があります。
-
プロジェクト内のすべてのクラスターは、プロジェクトのデプロイ時に作成された S3 バケットを共有します。Zilliz Cloud では、そのプロジェクト専用の S3 バケットを使用し、他のサービスやリソースと共有しないことを推奨します。
手順
AWS コンソールを使用してバケットとロールを作成できます。代替手段として、Zilliz Cloud が提供する Terraform スクリプトを使用して、AWS 上の Zilliz Cloud プロジェクト向けインフラストラクチャをブートストラップすることもできます。詳細については、Terraform Provider を参照してください。
ステップ 1: S3 バケットを作成する
このステップでは、BYOC プロジェクトのデプロイ用に AWS 上で S3 バケットを作成します。既存の S3 バケットを使用したい場合は、そのバケットが BYOC プロジェクトと同じリージョン内にあることを確認してください。作成後、Zilliz Cloud コンソールの Storage settings にある Bucket にバケット名を入力します。
管理者権限を持つユーザーとして AWS コンソールにログインし、S3 サービスに移動します。
General purpose bucket タブで、Create bucket をクリックします。
Bucket name にバケット名を入力し、他の設定はデフォルト値のままにします。
Create bucket をクリックします。
Zilliz Cloud console に戻り、Storage settings の Bucket にバケット名を貼り付けます。
ステップ 2: S3 バケットにアクセスするための IAM ロールを作成する
このステップでは、前のステップで作成した S3 バケットに Zilliz Cloud がユーザーに代わってアクセスできるようにするため、AWS 上で IAM ロールを作成します。
管理者権限を持つユーザーとして AWS Console にログインし、IAM ダッシュボードに移動します。
アカウント情報を展開し、AWS Account ID の前にあるコピーボタンをクリックします。
左側のサイドバーで Roles タブをクリックし、次に Create Role をクリックします。
Select trusted entity で、Custom trust policy タイルをクリックします。Common trust policy で、以下の trust JSON を Custom trust policy セクションのエディターに貼り付け、{accountId} を自身の AWS Account ID に置き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::{accountId}:oidc-provider/eks_oidc_url"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringLike": {
"eks_oidc_url:sub": [
"system:serviceaccount:milvus-*:milvus*",
"system:serviceaccount:loki:loki*",
"system:serviceaccount:index-pool:milvus*"
],
"eks_oidc_url:aud": "sts.amazonaws.com"
}
}
}
]
}
Next をクリックし、権限の追加はスキップします。
Name, review, and create ステップで、ロールに名前を付け、信頼されたエンティティを確認して、Create role をクリックします。
ロールが作成されたら、緑色のバーにある View role をクリックしてロールの詳細に移動します
ロールの ARN の前にあるコピーアイコンをクリックします。
Zilliz Cloud コンソールに戻り、Storage settings の IAM Role ARN にロール ARN を貼り付けます。
ステップ 3: 権限を追加する
このステップは AWS コンソール上でのみ実施します。このステップでは、ステップ 2 で作成したロールに対して inline policy を作成します。
作成したロールの詳細ページに移動します。Permissions policies セクションで Add permissions をクリックし、Create inline policy を選択します。
Specify permissions ページで、Policy editor セクションの JSON をクリックしてポリシーエディターを開きます。次に、以下の権限をコピーしてポリシーエディターに貼り付けます。
{bucketName} を ステップ 1 で作成したバケット名に置き換え、修正した policy JSON をコピーして AWS の Policy editor に貼り付ける必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::{bucketName}"
},
{
"Sid": "AllowS3ReadWrite",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::{bucketName}/*"
]
}
]
}