[アップデート] Amazon Quick Sight に TopicV2 管理 API が追加され新しいトピックを API 経由で CRUD 操作できるようになりました

[アップデート] Amazon Quick Sight に TopicV2 管理 API が追加され新しいトピックを API 経由で CRUD 操作できるようになりました

Amazon QuickSightに新しいトピック管理API「TopicV2 API」が追加されました。複数データセットのリレーション定義やカスタムインストラクション設定が可能な新トピックをAPIから操作できるようになったので、実際に試してみました。
2026.08.03

いわさです。

Amazon Quick Sight には「トピック」という機能があります。
トピックはデータセットにビジネスコンテキストを定義し、自然言語で Q&A を行うためのスコープを設定する仕組みです。

現在トピックには従来のもの(Legacy)とプレビュー中の新しいトピックの 2 種類があります。
新しいトピックは 2026 年 7 月に「multi-dataset Topics」として公式ブログで紹介されたもので、複数データセットのリレーション定義やカスタムインストラクションの設定が可能です。

https://aws.amazon.com/blogs/machine-learning/build-a-unified-semantic-layer-across-datasets-with-multi-dataset-topics-in-amazon-quick/

既存の Topic API(create-topic など)は Legacy トピック専用で、新しいトピックを API 経由で管理する手段がありませんでした。
先日のアップデートで、新しいトピックを管理するための TopicV2 API が追加されました。

https://github.com/aws/aws-cli/commit/cf63472eeb250e12def06ce8d6209cf52e16d7fa

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

実際に確認してみる

では早速 AWS CLI から TopicV2 API を試してみましょう。

なお、この TopicV2 API は AWS CLI v2.36.14 で追加されたサブコマンドです。
バージョンが古い場合は aws update でアップデートしておきます。ちなみにaws updateはつい先日追加されていた待望のコマンドです。こいつは良い...

https://dev.classmethod.jp/articles/aws-cli-aws-update-command/

aws --version
aws-cli/2.36.14 Python/3.14.6 Darwin/25.5.0 update-exe/arm64

トピック一覧の取得(list-topics-v2)

まず list-topics-v2 で既存のトピック一覧を確認してみます。

aws quicksight list-topics-v2 \
  --aws-account-id 123456789012 \
  --profile quick-sandbox
{
    "TopicSummaryList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
            "TopicId": "cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
            "Name": "hoge0727topic"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/wXq62whKyxYP0Iz4hm3uA0xiNXqyBhm5",
            "TopicId": "wXq62whKyxYP0Iz4hm3uA0xiNXqyBhm5",
            "Name": "hoge0727ticket"
        }
    ],
    "Status": 200,
    "RequestId": "e1673fca-0489-4443-9fa5-bb9e97f7fcc7"
}

おートピックの一覧が取得できましたね!ここからわかりにくいのですが、これらはコンソール上で「LEGACY」の表記のない新しいトピックです!
レスポンスには ARN、TopicId、Name が含まれています。

トピックの詳細取得(describe-topic-v2)

特定のトピックの詳細を確認してみます。

aws quicksight describe-topic-v2 \
  --aws-account-id 123456789012 \
  --topic-id cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL \
  --profile quick-sandbox
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
    "TopicId": "cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
    "Topic": {
        "Name": "hoge0727topic",
        "Description": "",
        "DataSets": [
            {
                "DataSetArn": "arn:aws:quicksight:ap-northeast-1:123456789012:dataset/c40c60cf-3cba-443d-8f6e-cf27a469101c"
            }
        ],
        "DataSetRelations": []
    },
    "CustomInstructions": {
        "CustomInstructionsString": ""
    },
    "RequestId": "80bbda20-f5c6-4a32-a36c-3e7db241ba09"
}

TopicV2 の describe では、レガシートピックにはなかった DataSetRelationsCustomInstructions のフィールドが確認できますね。
DataSetRelations は複数データセット間の結合条件を定義するためのもので、CustomInstructions は回答生成に追加のガイダンスを与えるためのフィールドです。どちらも Quick コンソール上から設定できます。

トピックの検索(search-topics-v2)

トピック名による検索も可能です。

aws quicksight search-topics-v2 \
  --aws-account-id 123456789012 \
  --filters '[{"Operator":"StringLike","Name":"TOPIC_NAME","Value":"hoge"}]' \
  --profile quick-sandbox
{
    "TopicSummaryList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/wXq62whKyxYP0Iz4hm3uA0xiNXqyBhm5",
            "TopicId": "wXq62whKyxYP0Iz4hm3uA0xiNXqyBhm5",
            "Name": "hoge0727ticket"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
            "TopicId": "cSXQCFXAWUNCVssIvIRV44mbjxkZCNnL",
            "Name": "hoge0727topic"
        }
    ],
    "Status": 200,
    "RequestId": "f842a175-2a9c-44f5-9b96-a50dff03bdc0"
}

フィルターで OperatorStringEqualsStringLike を指定でき、Name には TOPIC_NAME のほか QUICKSIGHT_USERQUICKSIGHT_OWNER なども指定できるようです。

トピックの作成(create-topic-v2)

新しいトピックを作成してみます。

aws quicksight create-topic-v2 \
  --aws-account-id 123456789012 \
  --topic-id hogeTopicV2Blog \
  --topic '{"Name":"hoge-topicv2-blog","Description":"TopicV2 API blog test","DataSets":[{"DataSetArn":"arn:aws:quicksight:ap-northeast-1:123456789012:dataset/c40c60cf-3cba-443d-8f6e-cf27a469101c"}]}' \
  --profile quick-sandbox
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/hogeTopicV2Blog",
    "TopicId": "hogeTopicV2Blog",
    "RequestId": "333db647-3c7e-4716-9f77-f79e575a7778"
}

作成できました。
create-topic-v2 では --topic パラメータに Name、Description、DataSets を指定します。
オプションで --custom-instructions--folder-arns も指定可能です。

作成したトピックをコンソールで確認してみました。

EB1B382D-55C7-48AB-B85E-EC1422C4930A.png

TopicV2 API で作成したトピック(hoge-topicv2-blog)は Legacy バッジが付いておらず、新しいトピックとして認識されていることがわかります。
一方、従来の Topic API で作成したトピックには「Legacy」バッジが表示されています。

なお、list-topics(従来 API)と list-topics-v2 は互いに異なるトピックを返します。
TopicV2 で作成したトピックは従来の list-topics には表示されず、逆に Legacy トピックは list-topics-v2 には表示されません。

トピックの更新(update-topic-v2)

作成したトピックを更新してみます。
update-topic-v2 では --publish-option パラメータで DRAFTPUBLISH を指定できます。

aws quicksight update-topic-v2 \
  --aws-account-id 123456789012 \
  --topic-id hogeTopicV2Blog \
  --topic '{"Name":"hoge-topicv2-updated","Description":"Updated via TopicV2 API","DataSets":[{"DataSetArn":"arn:aws:quicksight:ap-northeast-1:123456789012:dataset/c40c60cf-3cba-443d-8f6e-cf27a469101c"}]}' \
  --publish-option DRAFT \
  --profile quick-sandbox
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/hogeTopicV2Blog",
    "TopicId": "hogeTopicV2Blog",
    "RequestId": "acd6a585-1dec-4d87-977b-4b6d0eeaadaa"
}

更新できました。
--publish-option DRAFT を指定することで、下書き状態のまま更新内容を保持できるようです。

パーミッションの確認(describe-topic-permissions-v2)

トピックのパーミッションも確認できます。

aws quicksight describe-topic-permissions-v2 \
  --aws-account-id 123456789012 \
  --topic-id hogeTopicV2Blog \
  --profile quick-sandbox
{
    "Status": 200,
    "TopicId": "hogeTopicV2Blog",
    "TopicArn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/hogeTopicV2Blog",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/cm-iwasa.takahito/cm-iwasa.takahito",
            "Actions": [
                "quicksight:DescribeTopic",
                "quicksight:PassTopic",
                "quicksight:DeleteTopic",
                "quicksight:UpdateTopic",
                "quicksight:DescribeTopicPermissions",
                "quicksight:UpdateTopicPermissions"
            ]
        }
    ],
    "RequestId": "e47ec676-eef9-4590-8662-3fc96eed9090"
}

パーミッションの構造は従来のリソースと同じパターンで、Principal と Actions の組み合わせで管理されています。
update-topic-permissions-v2 で GrantPermissions / RevokePermissions を指定してパーミッションの付与・剥奪も可能です。

トピックの削除(delete-topic-v2)

最後に、作成したテスト用トピックを削除します。

aws quicksight delete-topic-v2 \
  --aws-account-id 123456789012 \
  --topic-id hogeTopicV2Blog \
  --profile quick-sandbox
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:topic/hogeTopicV2Blog",
    "TopicId": "hogeTopicV2Blog",
    "RequestId": "b6e7501c-5683-4fdc-9487-1dd14b9c1001"
}

削除も問題なく完了しました。

さいごに

本日は Amazon Quick Sight に TopicV2 管理 API が追加されたので AWS CLI から確認してみました。

TopicV2 API は新しいトピック(プレビュー中)を操作するための API で、従来の Topic API(Legacy トピック用)とは完全に別のスコープで管理されています。
list-topicslist-topics-v2 は互いに異なるトピックを返し、TopicV2 で作成したトピックは Legacy 側には表示されません。
コンソール上では「Legacy」バッジが付かないトピックとして表示されることが確認できました。

トピックの IaC 管理や環境間の移行を自動化したい場合に活用できそうですね。
新しいトピック自体がまだプレビューなので、GA になったタイミングで改めて確認してみたい。

先日も社内勉強会で少し会話があったのですが、最近はビジネスプロセスの分析を行った上でエージェントにデータ分析を行わせるケースが増えてきたので、個人的にはトピックに再注目しています。

この記事をシェアする

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

関連記事