[アップデート] Amazon Quick のナレッジベースを API から作成・更新できるようになりました

[アップデート] Amazon Quick のナレッジベースを API から作成・更新できるようになりました

Amazon QuickのナレッジベースをAPI経由で作成・更新できるようになったので、CreateKnowledgeBaseとUpdateKnowledgeBase APIをAWS CLIで試してみました。
2026.07.12

いわさです。

Amazon Quick のナレッジベースは、S3 バケットや Web ページなどの外部データをインデックスに取り込み、データ分析の際に参照できるようにする機能です。

https://dev.classmethod.jp/articles/quick-manageasset-knowledgebase-space/

先日の記事でナレッジベースの管理 API(一覧表示、詳細確認、検索、削除、権限管理)が追加されたことを紹介しましたが、この時点ではナレッジベースの作成はコンソールからしか行えない状態でした。

今回、CreateKnowledgeBaseUpdateKnowledgeBase の 2 つの API が追加され、API 経由でナレッジベースの作成と設定更新ができるようになりました。

https://github.com/aws/aws-cli/commit/305c68ef3fa68a15cdd8f50d9e7077c0e1ff8877

今回こちらを確認してみたので紹介します。

AWS CLI で create-knowledge-base を試してみる

今回は AWS CLI(v2.35.21)を使って S3 データソースのナレッジベースを作成してみます。
前回の記事で紹介した管理 API の詳細についてはそちらを参照してください。

データソースの作成

create-knowledge-base にはデータソースの ARN が必要なので、まず S3_KNOWLEDGE_BASE タイプのデータソースを作成します。

aws quicksight create-data-source \
  --aws-account-id 123456789012 \
  --data-source-id iwasa-kb-datasource-20260712 \
  --name "iwasa-kb-test" \
  --type S3_KNOWLEDGE_BASE \
  --data-source-parameters '{"S3KnowledgeBaseParameters":{"BucketUrl":"s3://my-kb-bucket/"}}'
{
    "Status": 202,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:datasource/iwasa-kb-datasource-20260712",
    "DataSourceId": "iwasa-kb-datasource-20260712",
    "CreationStatus": "CREATION_IN_PROGRESS",
    "RequestId": "b7e6835e-47f7-4375-8714-2fdea3fc868e"
}

数秒で CREATION_SUCCESSFUL になりました。

ナレッジベースの作成

では本題の create-knowledge-base を実行してみます。
必須パラメータは --aws-account-id--knowledge-base-id--name--data-source-arn--knowledge-base-configuration の 5 つです。

--knowledge-base-configuration には templateConfiguration.template としてデータソースの接続情報やフィルター設定を JSON で指定します。

aws quicksight create-knowledge-base \
  --aws-account-id 123456789012 \
  --knowledge-base-id iwasa-kb-20260712 \
  --name "iwasa-test-kb" \
  --data-source-arn "arn:aws:quicksight:ap-northeast-1:123456789012:datasource/iwasa-kb-datasource-20260712" \
  --knowledge-base-configuration '{
    "templateConfiguration": {
      "template": {
        "type": "S3V2",
        "connectionConfiguration": {
          "bucketName": "my-kb-bucket",
          "bucketOwnerAccountId": "123456789012"
        },
        "filterConfiguration": {
          "inclusionPatterns": [],
          "exclusionPatterns": [],
          "inclusionPrefixes": [],
          "exclusionPrefixes": [],
          "maxFileSizeInMegaBytes": "10240"
        }
      }
    }
  }'
{
    "Status": 202,
    "KnowledgeBaseArn": "arn:aws:quicksight:ap-northeast-1:123456789012:knowledge-base/iwasa-kb-20260712",
    "KnowledgeBaseId": "iwasa-kb-20260712",
    "CreationStatus": "CREATING",
    "RequestId": "3e0ebad0-a0ff-4dbb-ab74-c4211b393454"
}

レスポンスの CreationStatusCREATING になっています。
30 秒ほど待ってから describe-knowledge-base で確認してみると、ステータスが ACTIVE に変わっていました。

aws quicksight describe-knowledge-base \
  --aws-account-id 123456789012 \
  --knowledge-base-id iwasa-kb-20260712
{
    "Status": 200,
    "KnowledgeBase": {
        "KnowledgeBaseArn": "arn:aws:quicksight:ap-northeast-1:123456789012:knowledge-base/iwasa-kb-20260712",
        "KnowledgeBaseId": "iwasa-kb-20260712",
        "Name": "iwasa-test-kb",
        "Status": "ACTIVE",
        "DataSourceArn": "arn:aws:quicksight:ap-northeast-1:123456789012:datasource/iwasa-kb-datasource-20260712",
        "KnowledgeBaseConfiguration": {
            "templateConfiguration": {
                "template": {
                    "type": "S3V2",
                    "filterConfiguration": {
                        "inclusionPatterns": [],
                        "maxFileSizeInMegaBytes": "10240",
                        "inclusionPrefixes": [],
                        "exclusionPatterns": [],
                        "exclusionPrefixes": []
                    },
                    "connectionConfiguration": {
                        "bucketName": "my-kb-bucket",
                        "bucketOwnerAccountId": "123456789012"
                    }
                }
            }
        },
        "AccessControlConfiguration": {
            "isACLEnabled": false
        },
        "Type": "S3_KNOWLEDGE_BASE",
        "CreatedAt": "2026-07-12T05:48:55+09:00",
        "UpdatedAt": "2026-07-12T05:49:56.783000+09:00",
        "LatestIngestionSummary": {
            "IngestionId": "8ff1bf60-062a-41c8-bbb0-d1b732dc713c",
            "IngestionStatus": "RUNNING",
            "StartTime": "2026-07-12T05:49:43+09:00"
        }
    },
    "RequestId": "4e727ed8-c0d7-4724-bd19-4e0be2e2ddc5"
}

ナレッジベースが作成され、初回のインジェスション(データ同期)も自動的に開始されていることがわかります。
ちなみに、本日時点ではインジェスションを手動でトリガーする API は AWS CLI に実装されていないようです。
今回の create-knowledge-base では作成時に自動で同期が走るので、好きなタイミングで同期したい場合はナレッジベースを再作成するという手もあるかもしれません。

コンソールのナレッジベース一覧画面を確認してみると、CLI から作成したナレッジベースが表示されていました。
ステータスも Available、Sync status も Completed になっています。

701AA6B9-3D5C-4E80-B62E-7AD6A88DBC36.png

なお、--knowledge-base-configurationtemplate フィールドはドキュメント型(自由形式の JSON マップ)なのですが、空のオブジェクト {}null を渡すとバリデーションエラーになります。
公式ドキュメントにはこの辺の具体的な構造が記載されていないため、既存のナレッジベースを describe-knowledge-base で確認して参考にするのが良さそうです。

ナレッジベースの更新

続いて update-knowledge-base を試します。
名前と説明を更新してみましょう。

aws quicksight update-knowledge-base \
  --aws-account-id 123456789012 \
  --knowledge-base-id iwasa-kb-20260712 \
  --name "iwasa-test-kb-updated" \
  --description "API経由で更新テスト"
{
    "Status": 202,
    "KnowledgeBaseArn": "arn:aws:quicksight:ap-northeast-1:123456789012:knowledge-base/iwasa-kb-20260712",
    "KnowledgeBaseId": "iwasa-kb-20260712",
    "RequestId": "6a875523-4d31-4e4f-8b57-4ad811615218"
}

更新直後はステータスが UPDATING になり、しばらくすると ACTIVE に戻ります。
describe-knowledge-base で確認すると、名前と説明が反映されていました。

{
    "Name": "iwasa-test-kb-updated",
    "Description": "API経由で更新テスト",
    "Status": "ACTIVE"
}

メディア抽出設定(--media-extraction-configuration)も更新してみます。

aws quicksight update-knowledge-base \
  --aws-account-id 123456789012 \
  --knowledge-base-id iwasa-kb-20260712 \
  --media-extraction-configuration '{
    "imageExtractionConfiguration": {"imageExtractionStatus": "ENABLED"},
    "audioExtractionConfiguration": {"audioExtractionStatus": "DISABLED"},
    "videoExtractionConfiguration": {"videoExtractionStatus": "DISABLED"}
  }'
{
    "Status": 202,
    "KnowledgeBaseArn": "arn:aws:quicksight:ap-northeast-1:123456789012:knowledge-base/iwasa-kb-20260712",
    "KnowledgeBaseId": "iwasa-kb-20260712",
    "RequestId": "a9a20d70-8273-41f0-8dbc-4af5bac38c9b"
}

こちらも正常に更新できました。
更新後に describe-knowledge-base で確認すると、MediaExtractionConfiguration が指定どおりに反映されていることが確認できます。

{
    "MediaExtractionConfiguration": {
        "imageExtractionConfiguration": {
            "imageExtractionStatus": "ENABLED"
        },
        "audioExtractionConfiguration": {
            "audioExtractionStatus": "DISABLED"
        },
        "videoExtractionConfiguration": {
            "videoExtractionStatus": "DISABLED"
        }
    }
}

さいごに

本日は Amazon Quick に CreateKnowledgeBaseUpdateKnowledgeBase API が追加されたので、AWS CLI から実際にナレッジベースを作成・更新してみました。

前回の記事でナレッジベースの管理 API(一覧・参照・検索・削除・権限)が追加されたことを紹介しましたが、今回の作成・更新 API の追加でナレッジベースのライフサイクル全体を API で管理できるようになりました。
IaC やスクリプトでナレッジベースの作成を自動化したいケースでは活用できそうです。

ただ、--knowledge-base-configurationtemplate フィールドの構造が公式ドキュメントでまだ詳しく説明されていないのがちょっと困りどころです。
既存のナレッジベースを describe-knowledge-base で取得してそのまま参考にするのが今のところ確実かなと思います。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事