[アップデート] AWS CloudFormation が Amazon S3 のベクトルバケットをサポートしました
いわさです。
今年の 7 月に安価なベクトルストレージを提供できるサービスとして Amazon S3 Vectors というサービスがプレビューで登場しました。
この S3 Vectors ですが、本日時点ではコンソールで操作できないことが多く AWS CLI などで変更管理しなければいけないことも多かったのですが CloudFormation はまだサポートされていませんでした。
実は先日のアップデートで密かに CloudFormation が S3 Vectors をサポートしていまして、少し管理しやすくなりました。
S3 Vectors 自体東京リージョンはまだなのですが、バージニア北部リージョンで少し触ってみましたので紹介します。

サポートされたのは以下の3つのリソースです。
- AWS::S3Vectors::VectorBucket
- AWS::S3Vectors::VectorBucketPolicy
- AWS::S3Vectors::Index
特にバケットポリシーについてはこれまでコンソールから全くさわれなくて AWS CLI で設定するしかなかったので嬉しいと思います。
他にもバケットやインデックスの設定変更や削除もコンソールから出来なかったのが CloudFormation スタックで管理できるのはありがたい。
バケット
AWS::S3Vectors::VectorBucketでバケットの作成ができます。
最低限の設定だと以下だけで OK です。オプションで KMS の指定もできます。
AWSTemplateFormatVersion: 2010-09-09
Description: ---
Resources:
HogeBucket:
Type: AWS::S3Vectors::VectorBucket
Properties:
VectorBucketName: hoge1102bucket
このテンプレートでスタックを作成すると次のようにバケットが作成されました。

コンソールからバケット詳細情報は確認できないので、AWS CLI を使って確認してみると、暗号化の構成はデフォルトの SSE-S3 が設定されていることが確認できました。
% aws s3vectors get-vector-bucket --vector-bucket-name hoge1102bucket --region us-east-1 --profile hoge
{
"vectorBucket": {
"vectorBucketName": "hoge1102bucket",
"vectorBucketArn": "arn:aws:s3vectors:us-east-1:123456789012:bucket/hoge1102bucket",
"creationTime": "2025-11-02T05:43:13+09:00",
"encryptionConfiguration": {
"sseType": "AES256"
}
}
}
バケットポリシー
続いてバケットポリシーです。
上記手順でバケットを作成した時点ではバケットポリシーは何も設定されておらず、AWS CLI で確認してみると次のように何も設定されていないよと言われます。
% aws s3vectors get-vector-bucket-policy --vector-bucket-name hoge1102bucket --region us-east-1 --profile hoge
An error occurred (NotFoundException) when calling the GetVectorBucketPolicy operation: The specified vector bucket policy could not be found
AWS::S3Vectors::VectorBucketPolicyを使って設定してみましょう。
汎用バケットのバケットポリシーと同じでポリシードキュメントを記述するだけです。
AWSTemplateFormatVersion: 2010-09-09
Description: ---
Resources:
HogeBucket:
Type: AWS::S3Vectors::VectorBucket
Properties:
VectorBucketName: hoge1102bucket
HogePolicy:
Type: AWS::S3Vectors::VectorBucketPolicy
Properties:
VectorBucketArn: !GetAtt HogeBucket.VectorBucketArn
Policy:
Version: "2012-10-17"
Statement:
- Action: "s3vectors:*"
Effect: Allow
Resource:
- !GetAtt HogeBucket.VectorBucketArn
Principal:
AWS: "arn:aws:iam::123456789012:root"
上記デプロイ後に再度 AWS CLI から確認してみると次のようにバケットポリシーが設定されていることを確認できました。
% aws s3vectors get-vector-bucket-policy --vector-bucket-name hoge1102bucket --region us-east-1 --profile hoge
{
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":\"s3vectors:*\",\"Resource\":\"arn:aws:s3vectors:us-east-1:123456789012:bucket/hoge1102bucket\"}]}"
}
ベクトルインデックスの作成
S3 Vectors ではバケット作成のみではなく、ベクトルインデックスの作成も必要になります。
バケット作成直後は次のようにベクトルインデックスは存在しない状態です。

AWS::S3Vectors::Indexで作成しましょう。
指定可能なのは概ねマネジメントコンソール上から新規作成した時の内容と同じなのですが、DataTypeだけは指定しないと思います。ここは本日時点ではfloat32のみ指定可能です。
AWSTemplateFormatVersion: 2010-09-09
Description: ---
Resources:
HogeBucket:
Type: AWS::S3Vectors::VectorBucket
Properties:
VectorBucketName: hoge1102bucket
HogePolicy:
Type: AWS::S3Vectors::VectorBucketPolicy
Properties:
VectorBucketArn: !GetAtt HogeBucket.VectorBucketArn
Policy:
Version: "2012-10-17"
Statement:
- Action: "s3vectors:*"
Effect: Allow
Resource:
- !GetAtt HogeBucket.VectorBucketArn
Principal:
AWS: "arn:aws:iam::123456789012:root"
HogeIndex:
Type: AWS::S3Vectors::Index
Properties:
VectorBucketArn: !GetAtt HogeBucket.VectorBucketArn
IndexName: hoge1102index
Dimension: 1
DataType: float32
DistanceMetric: cosine
MetadataConfiguration:
NonFilterableMetadataKeys:
- Hoge1
- Hoge2
スタック作成後ベクトルインデックスが存在していることを確認しました。

スタックを削除する
最後に、これまで S3 Vectors 関係のリソースは AWS CLI でひとつづつ削除する必要があったのですが、CloudFormation でスタック管理できるようになったことで削除のライフサイクルも管理しやすくなりました。
先程デプロイしたスタックを削除してみます。

S3 ベクトルバケットやら一式もきれいに削除できました。良いですね。

ただし、今回は空のバケットだったのできれいに削除が出来ました。
ベクトルバケットも汎用バケットと同じで、バケットが空じゃない場合はバケットの削除には失敗します。必要に応じてDeletionPolicyの利用を検討しましょう。
さいごに
本日は AWS CloudFormation が Amazon S3 のベクトルバケットをサポートしたので使ってみました。
これまで AWS CLI でのみ管理できる領域があったので、CloudFormation で管理できるようになったのは嬉しいです。この感じだと CDK もサポートされるか。






