S3 バケットと IAM ロールの作成
このページでは、適切な権限を持つ Bring-Your-Own-Cloud (BYOC) プロジェクトのルートストレージを作成および設定する手順について説明します。
Zilliz BYOC は現在一般提供されています。アクセスおよび実装の詳細については、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 コンソールのストレージ設定でバケット名を入力します。
管理者権限を持つユーザーとして AWS コンソールにログインし、S3 サービスに移動します。
汎用バケットタブで、バケットの作成をクリックします。
バケット名にバケットの名前を入力し、他の設定はデフォルト値のままにします。
バケットの作成をクリックします。
Zilliz Cloud コンソールに戻り、ストレージ設定の下のバケットにバケット名を貼り付けます。
ステップ 2: S3 バケットにアクセスするための IAM ロールの作成
このステップでは、Zilliz Cloud が前のステップで作成した S3 バケットに代わってアクセスできるように、AWS で IAM ロールを作成します。
管理者権限を持つユーザーとしてAWS コンソールにログインし、IAMダッシュボードに移動します。
アカウント情報を展開し、AWS アカウント ID の前のコピーボタンをクリックします。
左側のサイドバーでロールタブをクリックし、次にロールの作成をクリックします。
信頼できるエンティティの選択で、カスタム信頼ポリシータイルをクリックします。共通信頼ポリシーで、以下の信頼 JSON をカスタム信頼ポリシーセクションのエディターに貼り付け、{accountId} をお使いのAWS アカウント 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"
}
}
}
]
}
次へをクリックし、権限の追加をスキップします。
名前を付けて確認し、作成ステップで、ロールに名前を付け、信頼されたエンティティを確認して、ロールの作成をクリックします。
ロールが作成されたら、緑色のバーにあるロールの表示をクリックしてロールの詳細ページへ移動します。
ロールのARNの横にあるコピーアイコンをクリックします。
Zilliz Cloud コンソールに戻り、ストレージ設定のIAM ロール ARNにロールの ARN を貼り付けます。
Step 3: Add permissions
このステップは AWS コンソールでのみ実行します。このステップでは、ステップ 2 で作成したロールに対してインラインポリシーを作成します。
作成したロールの詳細ページへ移動します。権限ポリシーセクションで権限の追加をクリックし、インラインポリシーの作成を選択します。
権限の指定ページで、ポリシーエディターセクションのJSONをクリックしてポリシーエディターを開きます。その後、以下の権限をコピーしてポリシーエディターに貼り付けます。
{bucketName} を ステップ 1 で作成したバケットの名前に置き換え、変更後のポリシー JSON をコピーして、AWS のポリシーエディターに貼り付ける必要があります。
{
"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}/*"
]
}
]
}