CLOVER🍀

That was when it all began.

LangChain MCP AdaptersとOllamaで、AWS MCP ServersのAWS Documentation MCP Serverを試す

これは、なにをしたくて書いたもの?

前に、LangChain MCP Adaptersを使ってMCPを試してみました。

LangChain MCP AdaptersとOllamaでMCP(Model Context Protocol)を試す - CLOVER🍀

この時はチュートリアルに習って簡単なMCPサーバーを作ってみましたが、今回はAWS MCP Serversを使ってみたいと思います。

AWS MCP Servers

AWS MCP ServersのWebサイトはこちら。

AWS MCP Servers

GitHubリポジトリーはこちら。

GitHub - awslabs/mcp: AWS MCP Servers — specialized MCP servers that bring AWS best practices directly to your development workflow

AWSによるブログエントリーはこちら。

Introducing AWS MCP Servers for code assistants (Part 1) | AWS Machine Learning Blog

AWS MCP Serversは、MCPが利用可能な場所ならどこでもAWSを最大限に活用できるように支援する特別なMCPサーバー
スイートであるとされています。

A suite of specialized MCP servers that help you get the most out of AWS, wherever you use MCP.

AWS MCP Servers 2025.4.2025171004時点で、提供されているMCPサーバーは以下のとおりです。

  • Core MCP Server
    • 他のAWS Labs MCP Serversを管理および調整するためのサーバー
  • AWS Documentation MCP Server
    • AWSドキュメントとベストプラクティスにアクセスするためのサーバー
      • AWSの公式検索APIを使ってドキュメントを検索する
      • AWSドキュメントページの推奨事項コンテンツを取得する
      • ドキュメントをMarkdown形式に変換する
  • Amazon Bedrock Knowledge Bases Retrieval MCP Server
    • Amazon Bedrock Knowdge Basesにアクセスするためのサーバー
      • Knowledge Basesとそのデータソースを発見する
      • 自然言語でKnowlege Basesにクエリーする
      • データソースで結果をフィルタリングする
      • 結果をリランクする
  • AWS CDK MCP Server
    • AWS CDKのベストプラクティスのためのサーバー
      • AWS CDKプロジェクトの分析と支援
      • CDKコンストラクトの推奨事項
      • Infrastructure as Codeのベストプラクティス
  • Cost Analysis MCP Server
    • AWSコスト分析用のサーバー
      • AWSコストを分析して視覚化する
      • 自然言語でコストデータを照会する
      • コストレポートと分析情報を生成する
  • Amazon Nova Canvas MCP Server
    • Amazon Nova Canvasを使用して画像を生成するサーバー
      • カスタマイズ可能なパラメーターによるテキストベースの画像生成
      • 特定のパレットを使用したカラーガイド画像生成
      • 生成された画像を保存するためのワークスペースインテグレーション
      • プロファイルを介したAWS認証
  • AWS Diagram MCP Server
    • PythonのdiagramsパッケージDSLを使用して、図をシームレスに作成するためのサーバー
      • Pythonコードを使用してプロフェッショナルな図を作成する
      • AWSアーキテクチャー、シーケンス図、フローチャート、クラス図のサポート
      • 図の外観、レイアウト、スタイルをカスタマイズする
      • 安全なダイアグラム生成を保証するコードスキャン
  • AWS Lambda MCP Server
    • コードを変更なしに、AWS Lambda関数をMCPツールとして選択、実行できるサーバー
      • このサーバーはMCPクライアントとAWS Lambda関数の間のブリッジとして機能し、基盤モデル(foundation models)がツールとしてAWS Lambda関数にアクセスおよび実行できるようにする
      • このサーバーを使用すると、たとえばパブリックネットワークアクセスを提供することなく、内部アプリケーションやデータベースなどのプライベートリソースにアクセスできるようになる
      • このアプローチにより、MCPクライアントは他のAWSサービス、プライベートネットワーク、パブリックインターネットを使用できるようになる
      • AWS Lambda関数の説明はMCPによってツールを説明するために使用され、関数がいつ(関数がなにを提供するのか?)、どのように(どのパラメーターが必要なのか?どのような構文なのか?)使用するのかについてFMにガイドする必要がある
  • AWS Terraform MCP Server
    • AWS Terraformのベストプラクティスのためのサーバー
      • セキュリティファーストのための開発フロー
      • Checkovとのインテグレーション
      • AWS ProviderおよびAWSCC Providerのドキュメントへアクセス
      • AWS-IA GenAIモジュール
      • Terraform Workspace実行

MCPサーバーのドキュメントは、Webサイトから見るのがよいでしょう。

AWS MCP Servers

今回はAWS Documentation MCP Serverを試してみたいと思います。

AWS Documentation MCP Server - AWS MCP Servers

AWS Documentation MCP Serverは、LangChain MCP Adaptersから使ってみます。

環境

今回の環境はこちら。

$ python3 --version
Python 3.12.3


$ uv --version
uv 0.6.14

Ollama。

$ bin/ollama serve


$ bin/ollama --version
ollama version is 0.6.5

準備

uvでプロジェクトを作成します。

$ uv init --vcs none langchain-aws-document-mcp-server
$ cd langchain-aws-document-mcp-server
$ rm main.py

依存ライブラリーなどの追加。

$ uv add langchain-mcp-adapters langgraph langchain-ollama
$ uv add awslabs.aws-documentation-mcp-server
$ uv add --dev mypy ruff

インストールされた依存関係の一覧。

$ uv pip list
Package                              Version
------------------------------------ ---------
annotated-types                      0.7.0
anyio                                4.9.0
awslabs-aws-documentation-mcp-server 0.1.1
beautifulsoup4                       4.13.4
certifi                              2025.1.31
charset-normalizer                   3.4.1
click                                8.1.8
h11                                  0.14.0
httpcore                             1.0.8
httpx                                0.28.1
httpx-sse                            0.4.0
idna                                 3.10
jsonpatch                            1.33
jsonpointer                          3.0.0
langchain-core                       0.3.54
langchain-mcp-adapters               0.0.9
langchain-ollama                     0.3.2
langgraph                            0.3.31
langgraph-checkpoint                 2.0.24
langgraph-prebuilt                   0.1.8
langgraph-sdk                        0.1.61
langsmith                            0.3.32
loguru                               0.7.3
markdown-it-py                       3.0.0
markdownify                          1.1.0
mcp                                  1.6.0
mdurl                                0.1.2
mypy                                 1.15.0
mypy-extensions                      1.0.0
ollama                               0.4.8
orjson                               3.10.16
ormsgpack                            1.9.1
packaging                            24.2
pydantic                             2.11.3
pydantic-core                        2.33.1
pydantic-settings                    2.9.1
pygments                             2.19.1
python-dotenv                        1.1.0
pyyaml                               6.0.2
requests                             2.32.3
requests-toolbelt                    1.0.0
rich                                 14.0.0
ruff                                 0.11.6
shellingham                          1.5.4
six                                  1.17.0
sniffio                              1.3.1
soupsieve                            2.6
sse-starlette                        2.2.1
starlette                            0.46.2
tenacity                             9.1.2
typer                                0.15.2
typing-extensions                    4.13.2
typing-inspection                    0.4.0
urllib3                              2.4.0
uvicorn                              0.34.2
xxhash                               3.5.0
zstandard                            0.23.0

pyproject.toml

[project]
name = "langchain-aws-document-mcp-server"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "awslabs-aws-documentation-mcp-server>=0.1.1",
    "langchain-mcp-adapters>=0.0.9",
    "langchain-ollama>=0.3.2",
    "langgraph>=0.3.31",
]

[dependency-groups]
dev = [
    "mypy>=1.15.0",
    "ruff>=0.11.6",
]

[tool.mypy]
strict = true
disallow_any_unimported = true
#disallow_any_expr = true
disallow_any_explicit = true
warn_unreachable = true
pretty = true

AWS Documentation MCP Serverはここで追加しています。

$ uv add awslabs.aws-documentation-mcp-server

LangChain MCP Adaptersを使い、作成したソースコードはこちら。

client.py

import asyncio
import sys

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent

from langchain_ollama import ChatOllama


async def run_client(question: str) -> None:
    model = ChatOllama(
        model="llama3.2:3b",
        temperature=0,
        base_url="http://localhost:11434",
    )

    server_params = StdioServerParameters(
        command="uv",
        args=["run", "awslabs.aws-documentation-mcp-server"],
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            tools = await load_mcp_tools(session)

            agent = create_react_agent(model, tools)
            agent_response = await agent.ainvoke({"messages": question})

            print(f"question: {question}")

            print()
            print("response:")
            print(agent_response)
            print()

            print("messages:")
            for message in agent_response["messages"]:
                print(f"  id: {message.id}")
                print("  content: ")
                print(f"    {message.content}")
                print()


if __name__ == "__main__":
    question = sys.argv[1]
    asyncio.run(run_client(question))

モデルはToolが使えるllama3.2:3bです。

    model = ChatOllama(
        model="llama3.2:3b",
        temperature=0,
        base_url="http://localhost:11434",
    )

また、コマンドライン引数で質問を受け付けるようにしていて、結果のメッセージはすべて標準出力に書き出すようにしています。

LangChain MCP AdaptersからAWS Documentation MCP Serverを使ってみる

では、LangChain MCP AdaptersからAWS Documentation MCP Serverを使ってみましょう。

AWS Documentation MCP Serverを単純に起動するなら、こうですね。

$ uv run awslabs.aws-documentation-mcp-server

AWS Documentation MCP Serverが実装しているToolは、read_documentationsearch_documentationrecommend
ようですね。

ドキュメントに書かれている例を質問してみましょう。
https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html ページのコンテンツを推奨してください」

$ uv run client.py 'recommend content for page https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html'

結果。

[04/19/25 19:52:29] INFO     Processing request of type ListToolsRequest                                                                                        server.py:534
[04/19/25 19:53:06] INFO     Processing request of type CallToolRequest                                                                                         server.py:534
[04/19/25 19:53:07] INFO     HTTP Request: GET                                                                                                                _client.py:1740
                             https://contentrecs-api.docs.aws.amazon.com/v1/recommendations?path=https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket
                             namingrules.html "HTTP/1.1 200 OK"
question: recommend content for page https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html

response:
{'messages': [HumanMessage(content='recommend content for page https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html', additional_kwargs={}, response_metadata={}, id='b4454058-3890-43b8-8732-2c781b4d4c7c'), AIMessage(content='', additional_kwargs={}, response_metadata={'model': 'llama3.2:3b', 'created_at': '2025-04-19T10:53:06.818909929Z', 'done': True, 'done_reason': 'stop', 'total_duration': 37692757519, 'load_duration': 19120570, 'prompt_eval_count': 1280, 'prompt_eval_duration': 35002260703, 'eval_count': 34, 'eval_duration': 2670682655, 'model_name': 'llama3.2:3b'}, id='run-b645aaaa-6640-4b07-a281-e0670b109a8d-0', tool_calls=[{'name': 'recommend', 'args': {'url': 'https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html'}, 'id': '421f4800-5289-4cf4-b0cf-d03d1b674b70', 'type': 'tool_call'}], usage_metadata={'input_tokens': 1280, 'output_tokens': 34, 'total_tokens': 1314}), ToolMessage(content='["{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html\\", \\"title\\": \\"What is Amazon S3?\\", \\"context\\": \\"Amazon S3 offers scalable object storage, enabling management of data lifecycle, access permissions, and processing via features like storage classes, lifecycle policies, access points, and Object Lambda.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html\\", \\"title\\": \\"Hosting a static website using Amazon S3\\", \\"context\\": \\"Enabling website hosting on Amazon S3 allows hosting static websites with static content and client-side scripts. Configure index document, custom error document, permissions, logging, redirects, and cross-origin resource sharing.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html\\", \\"title\\": \\"Tutorial: Configuring a static website using a custom domain registered with Route 53\\", \\"context\\": \\"Static website hosting configured with custom domain registered on Route 53, creating S3 buckets for content and redirects.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html\\", \\"title\\": \\"Tutorial: Configuring a static website on Amazon S3\\", \\"context\\": \\"Configure static website hosting, upload index and error documents, edit Block Public Access settings, add bucket policy allowing public access, test website endpoint, create S3 bucket.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html\\", \\"title\\": \\"Creating a general purpose bucket\\", \\"context\\": \\"Creating Amazon S3 general purpose bucket, configuring settings like versioning, encryption, Object Lock. Enabling bucket versioning, default encryption, S3 Object Lock. Creating bucket using AWS SDK, AWS CLI.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html\\", \\"title\\": \\"Retaining multiple versions of objects with S3 Versioning\\", \\"context\\": \\"S3 Versioning enables retaining multiple versions of objects, recovering from accidental deletion or overwrite, and managing object lifecycle. Versioning can be enabled, suspended on S3 buckets. MFA delete can be configured for versioned objects.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html\\", \\"title\\": \\"Naming Amazon S3 objects\\", \\"context\\": \\"Amazon S3 object key naming guidelines, UTF-8 encoding, safe characters, handling special characters, XML constraints, prefixes, delimiters, flat data model.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html\\", \\"title\\": \\"Locking objects with Object Lock\\", \\"context\\": \\"S3 Object Lock enables managing object retention, protecting objects from deletion, setting retention periods, applying legal holds, and configuring object lock.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html\\", \\"title\\": \\"Website endpoints\\", \\"context\\": \\"Explore hosting static websites on S3, accessing content via website endpoints, serving with CloudFront for HTTPS, using custom domains.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html\\", \\"title\\": \\"Configuring cross-origin resource sharing (CORS)\\", \\"context\\": \\"This document enables cross-origin resource sharing, configures CORS on S3 buckets, adds CORS configurations, edits JSON, manages CORS using AWS SDKs, sets configurations via REST APIs, retrieves configurations from buckets.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html\\", \\"title\\": \\"Managing the lifecycle of objects\\", \\"context\\": \\"S3 Lifecycle manages objects\' lifecycle, transitioning them to lower-cost storage classes, deleting expired objects. Rules define transition, expiration actions for existing, new objects. Monitor lifecycle rule effects.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html\\", \\"title\\": \\"Download and upload objects with presigned URLs\\", \\"context\\": \\"Presigned URLs grant time-limited access to S3 objects without updating bucket policies. They enable downloading, uploading, and limiting capabilities. Key aspects include expiration time, credential types, and network access restrictions.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html\\", \\"title\\": \\"Hosting a static website using Amazon S3\\", \\"context\\": \\"Intent: Host static website\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html\\", \\"title\\": \\"ListObjectsV2\\", \\"context\\": \\"Intent: Retrieve and list objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html\\", \\"title\\": \\"ListObjects\\", \\"context\\": \\"Intent: Retrieve and list objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html\\", \\"title\\": \\"What is Amazon S3?\\", \\"context\\": \\"Intent: Understand Amazon S3\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html\\", \\"title\\": \\"Examples of Amazon S3 bucket policies\\", \\"context\\": \\"Intent: Explore examples Amazon S3 bucket policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html\\", \\"title\\": \\"Policies and permissions in Amazon S3\\", \\"context\\": \\"Intent: Understand and implement policies and permissions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html\\", \\"title\\": \\"Tutorial: Configuring a static website using a custom domain registered with Route 53\\", \\"context\\": \\"Intent: Configure static website\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html\\", \\"title\\": \\"Troubleshoot access denied (403 Forbidden) errors in Amazon S3\\", \\"context\\": \\"Intent: Troubleshoot access denied (403 Forbidden) errors\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html\\", \\"title\\": \\"Locking objects with Object Lock\\", \\"context\\": \\"Intent: Configure and manage Object Lock\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html\\", \\"title\\": \\"Uploading objects\\", \\"context\\": \\"Intent: Upload and manage objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html\\", \\"title\\": \\"Replicating objects within and across Regions\\", \\"context\\": \\"Intent: Replicate objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html\\", \\"title\\": \\"Sharing objects with presigned URLs\\", \\"context\\": \\"Intent: Share objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html\\", \\"title\\": \\"How Amazon S3 works with IAM\\", \\"context\\": \\"Intent: Understand and configure IAM policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html\\", \\"title\\": \\"Deleting a bucket\\", \\"context\\": \\"Intent: Delete bucket\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html\\", \\"title\\": \\"Emptying a bucket\\", \\"context\\": \\"Intent: Delete bucket\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html\\", \\"title\\": \\"GetObject\\", \\"context\\": \\"Intent: Retrieve objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html\\", \\"title\\": \\"Controlling ownership of objects and disabling ACLs for your bucket\\", \\"context\\": \\"Intent: Control ownership and disable objects and ACLs\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html\\", \\"title\\": \\"Setting an S3 Lifecycle configuration on a bucket\\", \\"context\\": \\"Intent: Configure and manage S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingObjects.html\\", \\"title\\": \\"Amazon S3 objects overview\\", \\"context\\": \\"Intent: Understand and manage Amazon S3 objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html\\", \\"title\\": \\"Authenticating Requests (AWS Signature Version 4)\\", \\"context\\": \\"Intent: Authenticate requests\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html\\", \\"title\\": \\"Authenticating Requests: Using Query Parameters (AWS Signature Version 4)\\", \\"context\\": \\"Intent: Authenticate requests\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html\\", \\"title\\": \\"Authenticating Requests: Using the Authorization Header (AWS Signature Version 4)\\", \\"context\\": \\"Intent: Authenticate requests\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html\\", \\"title\\": \\"Security best practices for Amazon S3\\", \\"context\\": \\"Intent: Understand and implement Amazon S3\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html\\", \\"title\\": \\"Naming Amazon S3 objects\\", \\"context\\": \\"Intent: Name Amazon S3 objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html\\", \\"title\\": \\"Blocking public access to your Amazon S3 storage\\", \\"context\\": \\"Intent: Block public access Amazon S3 storage\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html\\", \\"title\\": \\"PutObject\\", \\"context\\": \\"Intent: Upload objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html\\", \\"title\\": \\"Uploading objects with presigned URLs\\", \\"context\\": \\"Intent: Upload objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-upload-object.html\\", \\"title\\": \\"Uploading an object using multipart upload\\", \\"context\\": \\"Intent: Upload objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html\\", \\"title\\": \\"Best practices design patterns: optimizing Amazon S3 performance\\", \\"context\\": \\"Intent: Optimize Amazon S3\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html\\", \\"title\\": \\"Step 1: Create your first S3 bucket\\", \\"context\\": \\"Intent: Create S3 bucket\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html\\", \\"title\\": \\"Elements of a CORS configuration\\", \\"context\\": \\"Intent: Configure and manage CORS settings\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/EnableWebsiteHosting.html\\", \\"title\\": \\"Enabling website hosting\\", \\"context\\": \\"Intent: Enable and configure website hosting\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html\\", \\"title\\": \\"Examples of S3 Lifecycle configurations\\", \\"context\\": \\"Intent: Explore examples of configuring S3 Lifecycle configurations\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html\\", \\"title\\": \\"Uploading and copying objects using multipart upload\\", \\"context\\": \\"Intent: Upload and copy objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html\\", \\"title\\": \\"Copying, moving, and renaming objects\\", \\"context\\": \\"Intent: Upload and copy objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html\\", \\"title\\": \\"Transitioning objects using Amazon S3 Lifecycle\\", \\"context\\": \\"Intent: Transition objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html\\", \\"title\\": \\"Organizing objects in the Amazon S3 console by using folders\\", \\"context\\": \\"Intent: Organize objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html\\", \\"title\\": \\"Download and upload objects with presigned URLs\\", \\"context\\": \\"Intent: Download and upload objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html\\", \\"title\\": \\"Example 2: Bucket owner granting cross-account bucket permissions\\", \\"context\\": \\"Intent: Grant cross-account permissions S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html\\", \\"title\\": \\"CreateBucket\\", \\"context\\": \\"Intent: Configure and manage S3 bucket\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html\\", \\"title\\": \\"Configuring cross-origin resource sharing (CORS)\\", \\"context\\": \\"Intent: Configure cross-origin resource sharing (CORS)\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html\\", \\"title\\": \\"Website endpoints\\", \\"context\\": \\"Intent: Configure and manage website endpoints\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html\\", \\"title\\": \\"Tutorial: Configuring a static website on Amazon S3\\", \\"context\\": \\"Intent: Configure and manage static website\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects.html\\", \\"title\\": \\"Restoring an archived object\\", \\"context\\": \\"Intent: Retrieve archived objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html\\", \\"title\\": \\"Querying Amazon S3 Inventory with Amazon Athena\\", \\"context\\": \\"Intent: Query Amazon S3 Inventory\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html\\", \\"title\\": \\"Identity and Access Management for Amazon S3\\", \\"context\\": \\"Intent: Manage access Identity and Access Management\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html\\", \\"title\\": \\"Configuring MFA delete\\", \\"context\\": \\"Intent: Configure and manage MFA delete\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html\\", \\"title\\": \\"CopyObject\\", \\"context\\": \\"Intent: Copy object\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html\\", \\"title\\": \\"Amazon S3 multipart upload limits\\", \\"context\\": \\"Intent: Understand and manage Amazon S3 multipart upload limits\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html\\", \\"title\\": \\"Buckets overview\\", \\"context\\": \\"Intent: Understand and manage buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html\\", \\"title\\": \\"Walkthrough: Configuring a bucket for notifications (SNS topic or SQS queue)\\", \\"context\\": \\"Intent: Configure and manage bucket notifications\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html\\", \\"title\\": \\"Checking object integrity\\", \\"context\\": \\"Intent: Verify integrity objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects-retrieval-options.html\\", \\"title\\": \\"Understanding archive retrieval options\\", \\"context\\": \\"Intent: Understand and implement archive retrieval options\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html\\", \\"title\\": \\"Deleting object versions from a versioning-enabled bucket\\", \\"context\\": \\"Intent: Delete object versions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html\\", \\"title\\": \\"Configuring fast, secure file transfers using Amazon S3 Transfer Acceleration\\", \\"context\\": \\"Intent: Configure and manage file transfers\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html\\", \\"title\\": \\"Protecting data with encryption\\", \\"context\\": \\"Intent: Block public access data\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html\\", \\"title\\": \\"Protecting data with server-side encryption\\", \\"context\\": \\"Intent: Block public access data\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html\\", \\"title\\": \\"Configuring IAM policies for using access points\\", \\"context\\": \\"Intent: Configure IAM policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html\\", \\"title\\": \\"Bucket quotas, restrictions, and limitations\\", \\"context\\": \\"Intent: Understand and manage bucket quotas, restrictions, and limitations\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_PresignedUrl_section.html\\", \\"title\\": \\"Create a presigned URL for Amazon S3 using an AWS SDK\\", \\"context\\": \\"Intent: Generate presigned URLs\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html\\", \\"title\\": \\"Using server-side encryption with AWS KMS keys (SSE-KMS)\\", \\"context\\": \\"Intent: Implement server-side encryption\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html\\", \\"title\\": \\"Downloading objects\\", \\"context\\": \\"Intent: Download objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html\\", \\"title\\": \\"Querying data in place with Amazon S3 Select\\", \\"context\\": \\"Intent: Query data\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_Simple_Storage_Service.html\\", \\"title\\": \\"Amazon S3\\", \\"context\\": \\"Intent: Explore and utilize Amazon S3\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html\\", \\"title\\": \\"Reducing the cost of SSE-KMS with Amazon S3 Bucket Keys\\", \\"context\\": \\"Intent: Optimize Amazon S3 Bucket Keys\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html\\", \\"title\\": \\"Managing access to shared datasets with access points\\", \\"context\\": \\"Intent: Manage access access points\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html\\", \\"title\\": \\"Creating, configuring, and working with Amazon S3 buckets\\", \\"context\\": \\"Intent: Configure and manage Amazon S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html\\", \\"title\\": \\"Developing with Amazon S3 using the AWS CLI\\", \\"context\\": \\"Intent: Configure and manage Amazon S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html\\", \\"title\\": \\"Event notification types and destinations\\", \\"context\\": \\"Intent: Learn about configuring event notification types and destinations\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html\\", \\"title\\": \\"CreateMultipartUpload\\", \\"context\\": \\"Intent: Initiate multipart upload\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html\\", \\"title\\": \\"Setting permissions for website access\\", \\"context\\": \\"Intent: Set permissions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html\\", \\"title\\": \\"Amazon S3 Event Notifications\\", \\"context\\": \\"Intent: Configure and manage Amazon S3 Event Notifications\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/get-request-ids.html\\", \\"title\\": \\"Getting Amazon S3 request IDs for AWS Support\\", \\"context\\": \\"Intent: Retrieve Amazon S3 request IDs\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html\\", \\"title\\": \\"ListBuckets\\", \\"context\\": \\"Intent: Retrieve and list buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html\\", \\"title\\": \\"Lifecycle configuration elements\\", \\"context\\": \\"Intent: Understand and implement lifecycle configuration elements\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html\\", \\"title\\": \\"Working with object metadata\\", \\"context\\": \\"Intent: Manage and utilize object metadata\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html\\", \\"title\\": \\"Amazon S3 server access log format\\", \\"context\\": \\"Intent: Understand Amazon S3 server access log format\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html\\", \\"title\\": \\"Bucket policy examples using condition keys\\", \\"context\\": \\"Intent: Understand and implement bucket policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html\\", \\"title\\": \\"Performance guidelines for Amazon S3\\", \\"context\\": \\"Intent: Configure and manage Amazon S3 storage\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-select.html\\", \\"title\\": \\"Examples of using Amazon S3 Select on an object\\", \\"context\\": \\"Intent: Use Amazon S3 Select\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html\\", \\"title\\": \\"PutBucketLifecycleConfiguration\\", \\"context\\": \\"Intent: Manage the lifecycle S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-content-structure.html\\", \\"title\\": \\"Event message structure\\", \\"context\\": \\"Intent: Understand event message structure\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html\\", \\"title\\": \\"AbortMultipartUpload\\", \\"context\\": \\"Intent: Delete multipart uploads\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-page-redirect.html\\", \\"title\\": \\"(Optional) Configuring a webpage redirect\\", \\"context\\": \\"Intent: Configure webpage redirect\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\\", \\"title\\": \\"Signature Calculations for the Authorization Header: Transferring Payload in a Single Chunk (AWS Signature Version 4)\\", \\"context\\": \\"Intent: Sign and authenticate Authorization header\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html\\", \\"title\\": \\"Listing object keys programmatically\\", \\"context\\": \\"Intent: Authenticate object keys\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html\\", \\"title\\": \\"Working with delete markers\\", \\"context\\": \\"Intent: Manage and utilize delete markers\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html\\", \\"title\\": \\"Specifying server-side encryption with AWS KMS (SSE-KMS)\\", \\"context\\": \\"Intent: Configure server-side encryption\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html\\", \\"title\\": \\"Adding a bucket policy by using the Amazon S3 console\\", \\"context\\": \\"Intent: Configure and manage bucket policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html\\", \\"title\\": \\"Using cross-origin resource sharing (CORS)\\", \\"context\\": \\"Intent: Configure and manage cross-origin resource sharing (CORS)\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html\\", \\"title\\": \\"SelectObjectContent\\", \\"context\\": \\"Intent: Query S3 object\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/grant-destinations-permissions-to-s3.html\\", \\"title\\": \\"Granting permissions to publish event notification messages to a destination\\", \\"context\\": \\"Intent: Grant permissions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-iam-role-policies.html\\", \\"title\\": \\"Granting permissions for Batch Operations\\", \\"context\\": \\"Intent: Grant permissions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-select-sql-reference-select.html\\", \\"title\\": \\"SELECT command\\", \\"context\\": \\"Intent: Use SELECT command\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_UsingLargeFiles_section.html\\", \\"title\\": \\"Upload or download large files to and from Amazon S3 using an AWS SDK\\", \\"context\\": \\"Intent: Download and upload large files\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html\\", \\"title\\": \\"Organizing objects using prefixes\\", \\"context\\": \\"Intent: Organize Amazon S3 objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html\\", \\"title\\": \\"UploadPart\\", \\"context\\": \\"Intent: Upload file parts\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html\\", \\"title\\": \\"Identity-based policy examples for Amazon S3\\", \\"context\\": \\"Intent: Understand and implement identity-based policies\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html\\", \\"title\\": \\"HeadObject\\", \\"context\\": \\"Intent: Retrieve object metadata\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-enable-disable-notification-intro.html\\", \\"title\\": \\"Using Amazon SQS, Amazon SNS, and Lambda\\", \\"context\\": \\"Intent: Enable and manage notifications\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html\\", \\"title\\": \\"Example: Browser-Based Upload using HTTP POST (Using AWS Signature Version 4)\\", \\"context\\": \\"Intent: Implement browser-based uploads\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html\\", \\"title\\": \\"Enabling and using S3 Transfer Acceleration\\", \\"context\\": \\"Intent: Enable and configure S3 Transfer Acceleration\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html\\", \\"title\\": \\"Creating an S3 Batch Operations job\\", \\"context\\": \\"Intent: Create S3 Batch Operations jobs\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html\\", \\"title\\": \\"Understanding and managing Amazon S3 storage classes\\", \\"context\\": \\"Intent: Understand and manage Amazon S3 storage classes\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-repl-config-perm-overview.html\\", \\"title\\": \\"Setting up permissions for live replication\\", \\"context\\": \\"Intent: Configure permissions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html\\", \\"title\\": \\"Error responses\\", \\"context\\": \\"Intent: Understand and handle error responses\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html\\", \\"title\\": \\"DeleteObject\\", \\"context\\": \\"Intent: Delete objects\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/metrics-dimensions.html\\", \\"title\\": \\"Metrics and dimensions\\", \\"context\\": \\"Intent: Understand and implement metrics and dimensions\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html\\", \\"title\\": \\"AWS PrivateLink for Amazon S3\\", \\"context\\": \\"Intent: Configure and manage AWS PrivateLink for Amazon S3\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html\\", \\"title\\": \\"Categorizing your storage using tags\\", \\"context\\": \\"Intent: Catalog and analyze storage\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html\\", \\"title\\": \\"Cataloging and analyzing your data with S3 Inventory\\", \\"context\\": \\"Intent: Catalog and analyze data\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html\\", \\"title\\": \\"Enabling Amazon S3 server access logging\\", \\"context\\": \\"Intent: Enable and configure server access logging Amazon S3 buckets\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html\\", \\"title\\": \\"Monitoring metrics with Amazon CloudWatch\\", \\"context\\": \\"Intent: Monitor and analyze metrics\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html\\", \\"title\\": \\"Access control list (ACL) overview\\", \\"context\\": \\"Intent: Understand and manage access control lists (ACLs)\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html\\", \\"title\\": \\"Enabling and configuring event notifications using the Amazon S3 console\\", \\"context\\": \\"Intent: Enable and configure event notifications\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-encryption.html\\", \\"title\\": \\"Protecting S3 table data with encryption\\", \\"context\\": \\"New content added on 2025-04-17T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html\\", \\"title\\": \\"Using server-side encryption with AWS KMS keys (SSE-KMS) in table buckets\\", \\"context\\": \\"New content added on 2025-04-17T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html\\", \\"title\\": \\"Permission requirements for S3 Tables SSE-KMS encryption\\", \\"context\\": \\"New content added on 2025-04-17T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/tables-require-kms.html\\", \\"title\\": \\"Enforcing and scoping SSE-KMS use for tables and table buckets\\", \\"context\\": \\"New content added on 2025-04-17T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html\\", \\"title\\": \\"Specifying server-side encryption with AWS KMS keys (SSE-KMS) in table buckets\\", \\"context\\": \\"New content added on 2025-04-16T21:33:59\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-delete.html\\", \\"title\\": \\"Delete your access point for directory buckets\\", \\"context\\": \\"New content added on 2025-04-01T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-details.html\\", \\"title\\": \\"View details for your access points for directory buckets\\", \\"context\\": \\"New content added on 2025-04-01T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html\\", \\"title\\": \\"List your access points for directory buckets\\", \\"context\\": \\"New content added on 2025-04-01T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage-scope.html\\", \\"title\\": \\"Manage the scope of your access points for directory buckets\\", \\"context\\": \\"New content added on 2025-04-01T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage.html\\", \\"title\\": \\"Managing your access points for directory buckets\\", \\"context\\": \\"New content added on 2025-04-01T11:00:48\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html\\", \\"title\\": \\"Follow bucket naming requirements for Lightsail object storage\\", \\"context\\": \\"Lightsail object storage service requires DNS-compliant, unique bucket names following specific rules for length, characters, prefixes, and suffixes.\\"}", "{\\"url\\": \\"https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trail-naming-requirements.html\\", \\"title\\": \\"Naming requirements for CloudTrail resources, S3 buckets, and KMS keys\\", \\"context\\": \\"CloudTrail resource, S3 bucket, KMS key alias naming rules. Encrypt logs, store files. Create names, aliases.\\"}"]', name='recommend', id='f2142436-29e2-4331-95a0-ab18cf202cad', tool_call_id='421f4800-5289-4cf4-b0cf-d03d1b674b70'), AIMessage(content="It appears that you have a list of URLs related to Amazon Web Services (AWS) and AWS-related topics. I'll help you categorize them into groups.\n\nHere are the categories:\n\n1. **Access Control Lists (ACLs)**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html`\n2. **Event Notifications**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html`\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-encryption.html` (new content)\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html` (new content)\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html` (new content)\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/tables-require-kms.html` (new content)\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html` (new content)\n3. **Access Points for Directory Buckets**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html`\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage-scope.html`\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage.html`\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-delete.html`\n4. **CloudTrail**:\n\t* `https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trail-naming-requirements.html`\n5. **Encryption and Server Access Logging**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-server-access-logging.html`\n6. **KMS (Key Management Service)**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html` (new content)\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html` (new content)\n7. **Lightsail**:\n\t* `https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html`\n8. **Monitoring and Logging**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html`\n9. **Server Access Logging**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-server-access-logging.html`\n10. **Tables (S3 Tables)**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html` (new content)\n11. **General AWS Topics**:\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html`\n\t* `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html`\n\t* `https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html`\n\nPlease let me know if you'd like me to categorize them further or help with anything else!", additional_kwargs={}, response_metadata={'model': 'llama3.2:3b', 'created_at': '2025-04-19T10:55:15.195565481Z', 'done': True, 'done_reason': 'stop', 'total_duration': 127474358822, 'load_duration': 36792311, 'prompt_eval_count': 2048, 'prompt_eval_duration': 63602933878, 'eval_count': 736, 'eval_duration': 63827879919, 'model_name': 'llama3.2:3b'}, id='run-d4ccdc48-de62-4532-99d9-53e422c62664-0', usage_metadata={'input_tokens': 2048, 'output_tokens': 736, 'total_tokens': 2784})]}

messages:
  id: b4454058-3890-43b8-8732-2c781b4d4c7c
  content:
    recommend content for page https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html

  id: run-b645aaaa-6640-4b07-a281-e0670b109a8d-0
  content:


  id: f2142436-29e2-4331-95a0-ab18cf202cad
  content:
    ["{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html\", \"title\": \"What is Amazon S3?\", \"context\": \"Amazon S3 offers scalable object storage, enabling management of data lifecycle, access permissions, and processing via features like storage classes, lifecycle policies, access points, and Object Lambda.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html\", \"title\": \"Hosting a static website using Amazon S3\", \"context\": \"Enabling website hosting on Amazon S3 allows hosting static websites with static content and client-side scripts. Configure index document, custom error document, permissions, logging, redirects, and cross-origin resource sharing.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html\", \"title\": \"Tutorial: Configuring a static website using a custom domain registered with Route 53\", \"context\": \"Static website hosting configured with custom domain registered on Route 53, creating S3 buckets for content and redirects.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html\", \"title\": \"Tutorial: Configuring a static website on Amazon S3\", \"context\": \"Configure static website hosting, upload index and error documents, edit Block Public Access settings, add bucket policy allowing public access, test website endpoint, create S3 bucket.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html\", \"title\": \"Creating a general purpose bucket\", \"context\": \"Creating Amazon S3 general purpose bucket, configuring settings like versioning, encryption, Object Lock. Enabling bucket versioning, default encryption, S3 Object Lock. Creating bucket using AWS SDK, AWS CLI.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html\", \"title\": \"Retaining multiple versions of objects with S3 Versioning\", \"context\": \"S3 Versioning enables retaining multiple versions of objects, recovering from accidental deletion or overwrite, and managing object lifecycle. Versioning can be enabled, suspended on S3 buckets. MFA delete can be configured for versioned objects.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html\", \"title\": \"Naming Amazon S3 objects\", \"context\": \"Amazon S3 object key naming guidelines, UTF-8 encoding, safe characters, handling special characters, XML constraints, prefixes, delimiters, flat data model.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html\", \"title\": \"Locking objects with Object Lock\", \"context\": \"S3 Object Lock enables managing object retention, protecting objects from deletion, setting retention periods, applying legal holds, and configuring object lock.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html\", \"title\": \"Website endpoints\", \"context\": \"Explore hosting static websites on S3, accessing content via website endpoints, serving with CloudFront for HTTPS, using custom domains.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html\", \"title\": \"Configuring cross-origin resource sharing (CORS)\", \"context\": \"This document enables cross-origin resource sharing, configures CORS on S3 buckets, adds CORS configurations, edits JSON, manages CORS using AWS SDKs, sets configurations via REST APIs, retrieves configurations from buckets.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html\", \"title\": \"Managing the lifecycle of objects\", \"context\": \"S3 Lifecycle manages objects' lifecycle, transitioning them to lower-cost storage classes, deleting expired objects. Rules define transition, expiration actions for existing, new objects. Monitor lifecycle rule effects.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html\", \"title\": \"Download and upload objects with presigned URLs\", \"context\": \"Presigned URLs grant time-limited access to S3 objects without updating bucket policies. They enable downloading, uploading, and limiting capabilities. Key aspects include expiration time, credential types, and network access restrictions.\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html\", \"title\": \"Hosting a static website using Amazon S3\", \"context\": \"Intent: Host static website\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html\", \"title\": \"ListObjectsV2\", \"context\": \"Intent: Retrieve and list objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html\", \"title\": \"ListObjects\", \"context\": \"Intent: Retrieve and list objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html\", \"title\": \"What is Amazon S3?\", \"context\": \"Intent: Understand Amazon S3\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html\", \"title\": \"Examples of Amazon S3 bucket policies\", \"context\": \"Intent: Explore examples Amazon S3 bucket policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html\", \"title\": \"Policies and permissions in Amazon S3\", \"context\": \"Intent: Understand and implement policies and permissions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html\", \"title\": \"Tutorial: Configuring a static website using a custom domain registered with Route 53\", \"context\": \"Intent: Configure static website\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html\", \"title\": \"Troubleshoot access denied (403 Forbidden) errors in Amazon S3\", \"context\": \"Intent: Troubleshoot access denied (403 Forbidden) errors\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html\", \"title\": \"Locking objects with Object Lock\", \"context\": \"Intent: Configure and manage Object Lock\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html\", \"title\": \"Uploading objects\", \"context\": \"Intent: Upload and manage objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html\", \"title\": \"Replicating objects within and across Regions\", \"context\": \"Intent: Replicate objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html\", \"title\": \"Sharing objects with presigned URLs\", \"context\": \"Intent: Share objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html\", \"title\": \"How Amazon S3 works with IAM\", \"context\": \"Intent: Understand and configure IAM policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html\", \"title\": \"Deleting a bucket\", \"context\": \"Intent: Delete bucket\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html\", \"title\": \"Emptying a bucket\", \"context\": \"Intent: Delete bucket\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html\", \"title\": \"GetObject\", \"context\": \"Intent: Retrieve objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html\", \"title\": \"Controlling ownership of objects and disabling ACLs for your bucket\", \"context\": \"Intent: Control ownership and disable objects and ACLs\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html\", \"title\": \"Setting an S3 Lifecycle configuration on a bucket\", \"context\": \"Intent: Configure and manage S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingObjects.html\", \"title\": \"Amazon S3 objects overview\", \"context\": \"Intent: Understand and manage Amazon S3 objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html\", \"title\": \"Authenticating Requests (AWS Signature Version 4)\", \"context\": \"Intent: Authenticate requests\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html\", \"title\": \"Authenticating Requests: Using Query Parameters (AWS Signature Version 4)\", \"context\": \"Intent: Authenticate requests\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html\", \"title\": \"Authenticating Requests: Using the Authorization Header (AWS Signature Version 4)\", \"context\": \"Intent: Authenticate requests\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html\", \"title\": \"Security best practices for Amazon S3\", \"context\": \"Intent: Understand and implement Amazon S3\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html\", \"title\": \"Naming Amazon S3 objects\", \"context\": \"Intent: Name Amazon S3 objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html\", \"title\": \"Blocking public access to your Amazon S3 storage\", \"context\": \"Intent: Block public access Amazon S3 storage\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html\", \"title\": \"PutObject\", \"context\": \"Intent: Upload objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html\", \"title\": \"Uploading objects with presigned URLs\", \"context\": \"Intent: Upload objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-upload-object.html\", \"title\": \"Uploading an object using multipart upload\", \"context\": \"Intent: Upload objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html\", \"title\": \"Best practices design patterns: optimizing Amazon S3 performance\", \"context\": \"Intent: Optimize Amazon S3\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html\", \"title\": \"Step 1: Create your first S3 bucket\", \"context\": \"Intent: Create S3 bucket\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html\", \"title\": \"Elements of a CORS configuration\", \"context\": \"Intent: Configure and manage CORS settings\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/EnableWebsiteHosting.html\", \"title\": \"Enabling website hosting\", \"context\": \"Intent: Enable and configure website hosting\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html\", \"title\": \"Examples of S3 Lifecycle configurations\", \"context\": \"Intent: Explore examples of configuring S3 Lifecycle configurations\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html\", \"title\": \"Uploading and copying objects using multipart upload\", \"context\": \"Intent: Upload and copy objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html\", \"title\": \"Copying, moving, and renaming objects\", \"context\": \"Intent: Upload and copy objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html\", \"title\": \"Transitioning objects using Amazon S3 Lifecycle\", \"context\": \"Intent: Transition objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html\", \"title\": \"Organizing objects in the Amazon S3 console by using folders\", \"context\": \"Intent: Organize objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html\", \"title\": \"Download and upload objects with presigned URLs\", \"context\": \"Intent: Download and upload objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html\", \"title\": \"Example 2: Bucket owner granting cross-account bucket permissions\", \"context\": \"Intent: Grant cross-account permissions S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html\", \"title\": \"CreateBucket\", \"context\": \"Intent: Configure and manage S3 bucket\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html\", \"title\": \"Configuring cross-origin resource sharing (CORS)\", \"context\": \"Intent: Configure cross-origin resource sharing (CORS)\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html\", \"title\": \"Website endpoints\", \"context\": \"Intent: Configure and manage website endpoints\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html\", \"title\": \"Tutorial: Configuring a static website on Amazon S3\", \"context\": \"Intent: Configure and manage static website\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects.html\", \"title\": \"Restoring an archived object\", \"context\": \"Intent: Retrieve archived objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html\", \"title\": \"Querying Amazon S3 Inventory with Amazon Athena\", \"context\": \"Intent: Query Amazon S3 Inventory\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html\", \"title\": \"Identity and Access Management for Amazon S3\", \"context\": \"Intent: Manage access Identity and Access Management\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html\", \"title\": \"Configuring MFA delete\", \"context\": \"Intent: Configure and manage MFA delete\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html\", \"title\": \"CopyObject\", \"context\": \"Intent: Copy object\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html\", \"title\": \"Amazon S3 multipart upload limits\", \"context\": \"Intent: Understand and manage Amazon S3 multipart upload limits\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html\", \"title\": \"Buckets overview\", \"context\": \"Intent: Understand and manage buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html\", \"title\": \"Walkthrough: Configuring a bucket for notifications (SNS topic or SQS queue)\", \"context\": \"Intent: Configure and manage bucket notifications\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html\", \"title\": \"Checking object integrity\", \"context\": \"Intent: Verify integrity objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects-retrieval-options.html\", \"title\": \"Understanding archive retrieval options\", \"context\": \"Intent: Understand and implement archive retrieval options\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html\", \"title\": \"Deleting object versions from a versioning-enabled bucket\", \"context\": \"Intent: Delete object versions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html\", \"title\": \"Configuring fast, secure file transfers using Amazon S3 Transfer Acceleration\", \"context\": \"Intent: Configure and manage file transfers\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html\", \"title\": \"Protecting data with encryption\", \"context\": \"Intent: Block public access data\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html\", \"title\": \"Protecting data with server-side encryption\", \"context\": \"Intent: Block public access data\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html\", \"title\": \"Configuring IAM policies for using access points\", \"context\": \"Intent: Configure IAM policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html\", \"title\": \"Bucket quotas, restrictions, and limitations\", \"context\": \"Intent: Understand and manage bucket quotas, restrictions, and limitations\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_PresignedUrl_section.html\", \"title\": \"Create a presigned URL for Amazon S3 using an AWS SDK\", \"context\": \"Intent: Generate presigned URLs\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html\", \"title\": \"Using server-side encryption with AWS KMS keys (SSE-KMS)\", \"context\": \"Intent: Implement server-side encryption\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html\", \"title\": \"Downloading objects\", \"context\": \"Intent: Download objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html\", \"title\": \"Querying data in place with Amazon S3 Select\", \"context\": \"Intent: Query data\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_Simple_Storage_Service.html\", \"title\": \"Amazon S3\", \"context\": \"Intent: Explore and utilize Amazon S3\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html\", \"title\": \"Reducing the cost of SSE-KMS with Amazon S3 Bucket Keys\", \"context\": \"Intent: Optimize Amazon S3 Bucket Keys\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html\", \"title\": \"Managing access to shared datasets with access points\", \"context\": \"Intent: Manage access access points\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html\", \"title\": \"Creating, configuring, and working with Amazon S3 buckets\", \"context\": \"Intent: Configure and manage Amazon S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html\", \"title\": \"Developing with Amazon S3 using the AWS CLI\", \"context\": \"Intent: Configure and manage Amazon S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html\", \"title\": \"Event notification types and destinations\", \"context\": \"Intent: Learn about configuring event notification types and destinations\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html\", \"title\": \"CreateMultipartUpload\", \"context\": \"Intent: Initiate multipart upload\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html\", \"title\": \"Setting permissions for website access\", \"context\": \"Intent: Set permissions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html\", \"title\": \"Amazon S3 Event Notifications\", \"context\": \"Intent: Configure and manage Amazon S3 Event Notifications\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/get-request-ids.html\", \"title\": \"Getting Amazon S3 request IDs for AWS Support\", \"context\": \"Intent: Retrieve Amazon S3 request IDs\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html\", \"title\": \"ListBuckets\", \"context\": \"Intent: Retrieve and list buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html\", \"title\": \"Lifecycle configuration elements\", \"context\": \"Intent: Understand and implement lifecycle configuration elements\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html\", \"title\": \"Working with object metadata\", \"context\": \"Intent: Manage and utilize object metadata\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html\", \"title\": \"Amazon S3 server access log format\", \"context\": \"Intent: Understand Amazon S3 server access log format\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html\", \"title\": \"Bucket policy examples using condition keys\", \"context\": \"Intent: Understand and implement bucket policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html\", \"title\": \"Performance guidelines for Amazon S3\", \"context\": \"Intent: Configure and manage Amazon S3 storage\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-select.html\", \"title\": \"Examples of using Amazon S3 Select on an object\", \"context\": \"Intent: Use Amazon S3 Select\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html\", \"title\": \"PutBucketLifecycleConfiguration\", \"context\": \"Intent: Manage the lifecycle S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-content-structure.html\", \"title\": \"Event message structure\", \"context\": \"Intent: Understand event message structure\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html\", \"title\": \"AbortMultipartUpload\", \"context\": \"Intent: Delete multipart uploads\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-page-redirect.html\", \"title\": \"(Optional) Configuring a webpage redirect\", \"context\": \"Intent: Configure webpage redirect\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\", \"title\": \"Signature Calculations for the Authorization Header: Transferring Payload in a Single Chunk (AWS Signature Version 4)\", \"context\": \"Intent: Sign and authenticate Authorization header\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html\", \"title\": \"Listing object keys programmatically\", \"context\": \"Intent: Authenticate object keys\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html\", \"title\": \"Working with delete markers\", \"context\": \"Intent: Manage and utilize delete markers\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html\", \"title\": \"Specifying server-side encryption with AWS KMS (SSE-KMS)\", \"context\": \"Intent: Configure server-side encryption\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html\", \"title\": \"Adding a bucket policy by using the Amazon S3 console\", \"context\": \"Intent: Configure and manage bucket policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html\", \"title\": \"Using cross-origin resource sharing (CORS)\", \"context\": \"Intent: Configure and manage cross-origin resource sharing (CORS)\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html\", \"title\": \"SelectObjectContent\", \"context\": \"Intent: Query S3 object\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/grant-destinations-permissions-to-s3.html\", \"title\": \"Granting permissions to publish event notification messages to a destination\", \"context\": \"Intent: Grant permissions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-iam-role-policies.html\", \"title\": \"Granting permissions for Batch Operations\", \"context\": \"Intent: Grant permissions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-select-sql-reference-select.html\", \"title\": \"SELECT command\", \"context\": \"Intent: Use SELECT command\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_UsingLargeFiles_section.html\", \"title\": \"Upload or download large files to and from Amazon S3 using an AWS SDK\", \"context\": \"Intent: Download and upload large files\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html\", \"title\": \"Organizing objects using prefixes\", \"context\": \"Intent: Organize Amazon S3 objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html\", \"title\": \"UploadPart\", \"context\": \"Intent: Upload file parts\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html\", \"title\": \"Identity-based policy examples for Amazon S3\", \"context\": \"Intent: Understand and implement identity-based policies\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html\", \"title\": \"HeadObject\", \"context\": \"Intent: Retrieve object metadata\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-enable-disable-notification-intro.html\", \"title\": \"Using Amazon SQS, Amazon SNS, and Lambda\", \"context\": \"Intent: Enable and manage notifications\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html\", \"title\": \"Example: Browser-Based Upload using HTTP POST (Using AWS Signature Version 4)\", \"context\": \"Intent: Implement browser-based uploads\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html\", \"title\": \"Enabling and using S3 Transfer Acceleration\", \"context\": \"Intent: Enable and configure S3 Transfer Acceleration\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html\", \"title\": \"Creating an S3 Batch Operations job\", \"context\": \"Intent: Create S3 Batch Operations jobs\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html\", \"title\": \"Understanding and managing Amazon S3 storage classes\", \"context\": \"Intent: Understand and manage Amazon S3 storage classes\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-repl-config-perm-overview.html\", \"title\": \"Setting up permissions for live replication\", \"context\": \"Intent: Configure permissions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html\", \"title\": \"Error responses\", \"context\": \"Intent: Understand and handle error responses\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html\", \"title\": \"DeleteObject\", \"context\": \"Intent: Delete objects\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/metrics-dimensions.html\", \"title\": \"Metrics and dimensions\", \"context\": \"Intent: Understand and implement metrics and dimensions\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html\", \"title\": \"AWS PrivateLink for Amazon S3\", \"context\": \"Intent: Configure and manage AWS PrivateLink for Amazon S3\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html\", \"title\": \"Categorizing your storage using tags\", \"context\": \"Intent: Catalog and analyze storage\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html\", \"title\": \"Cataloging and analyzing your data with S3 Inventory\", \"context\": \"Intent: Catalog and analyze data\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html\", \"title\": \"Enabling Amazon S3 server access logging\", \"context\": \"Intent: Enable and configure server access logging Amazon S3 buckets\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html\", \"title\": \"Monitoring metrics with Amazon CloudWatch\", \"context\": \"Intent: Monitor and analyze metrics\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html\", \"title\": \"Access control list (ACL) overview\", \"context\": \"Intent: Understand and manage access control lists (ACLs)\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html\", \"title\": \"Enabling and configuring event notifications using the Amazon S3 console\", \"context\": \"Intent: Enable and configure event notifications\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-encryption.html\", \"title\": \"Protecting S3 table data with encryption\", \"context\": \"New content added on 2025-04-17T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html\", \"title\": \"Using server-side encryption with AWS KMS keys (SSE-KMS) in table buckets\", \"context\": \"New content added on 2025-04-17T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html\", \"title\": \"Permission requirements for S3 Tables SSE-KMS encryption\", \"context\": \"New content added on 2025-04-17T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/tables-require-kms.html\", \"title\": \"Enforcing and scoping SSE-KMS use for tables and table buckets\", \"context\": \"New content added on 2025-04-17T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html\", \"title\": \"Specifying server-side encryption with AWS KMS keys (SSE-KMS) in table buckets\", \"context\": \"New content added on 2025-04-16T21:33:59\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-delete.html\", \"title\": \"Delete your access point for directory buckets\", \"context\": \"New content added on 2025-04-01T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-details.html\", \"title\": \"View details for your access points for directory buckets\", \"context\": \"New content added on 2025-04-01T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html\", \"title\": \"List your access points for directory buckets\", \"context\": \"New content added on 2025-04-01T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage-scope.html\", \"title\": \"Manage the scope of your access points for directory buckets\", \"context\": \"New content added on 2025-04-01T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage.html\", \"title\": \"Managing your access points for directory buckets\", \"context\": \"New content added on 2025-04-01T11:00:48\"}", "{\"url\": \"https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html\", \"title\": \"Follow bucket naming requirements for Lightsail object storage\", \"context\": \"Lightsail object storage service requires DNS-compliant, unique bucket names following specific rules for length, characters, prefixes, and suffixes.\"}", "{\"url\": \"https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trail-naming-requirements.html\", \"title\": \"Naming requirements for CloudTrail resources, S3 buckets, and KMS keys\", \"context\": \"CloudTrail resource, S3 bucket, KMS key alias naming rules. Encrypt logs, store files. Create names, aliases.\"}"]

  id: run-d4ccdc48-de62-4532-99d9-53e422c62664-0
  content:
    It appears that you have a list of URLs related to Amazon Web Services (AWS) and AWS-related topics. I'll help you categorize them into groups.

Here are the categories:

1. **Access Control Lists (ACLs)**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html`
2. **Event Notifications**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html`
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-encryption.html` (new content)
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html` (new content)
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html` (new content)
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/tables-require-kms.html` (new content)
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html` (new content)
3. **Access Points for Directory Buckets**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html`
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage-scope.html`
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-manage.html`
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-delete.html`
4. **CloudTrail**:
        * `https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trail-naming-requirements.html`
5. **Encryption and Server Access Logging**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-server-access-logging.html`
6. **KMS (Key Management Service)**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-encryption.html` (new content)
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-permissions.html` (new content)
7. **Lightsail**:
        * `https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html`
8. **Monitoring and Logging**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudwatch-monitoring.html`
9. **Server Access Logging**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-server-access-logging.html`
10. **Tables (S3 Tables)**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-kms-specify.html` (new content)
11. **General AWS Topics**:
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html`
        * `https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets-list.html`
        * `https://docs.aws.amazon.com/lightsail/latest/userguide/bucket-naming-rules-in-amazon-lightsail.html`

Please let me know if you'd like me to categorize them further or help with anything else!

Tool、recommendを使用していることが確認できます。

[04/19/25 19:53:07] INFO     HTTP Request: GET                                                                                                                _client.py:1740
                             https://contentrecs-api.docs.aws.amazon.com/v1/recommendations?path=https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket
                             namingrules.html "HTTP/1.1 200 OK"


AIMessage(content='', additional_kwargs={}, response_metadata={'model': 'llama3.2:3b', 'created_at': '2025-04-19T10:53:06.818909929Z', 'done': True, 'done_reason': 'stop', 'total_duration': 37692757519, 'load_duration': 19120570, 'prompt_eval_count': 1280, 'prompt_eval_duration': 35002260703, 'eval_count': 34, 'eval_duration': 2670682655, 'model_name': 'llama3.2:3b'}, id='run-b645aaaa-6640-4b07-a281-e0670b109a8d-0', tool_calls=[{'name': 'recommend', 'args': {'url': 'https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html'}, 'id': '421f4800-5289-4cf4-b0cf-d03d1b674b70', 'type': 'tool_call'}], usage_metadata={'input_tokens': 1280, 'output_tokens': 34, 'total_tokens': 1314}),

ちなみに、肝心の回答そのものはおかしなことになっています…。

それとrecommendは動かせたのですが、search_documentなどはうまく動かせませんでした…。

  content:
    Error: ToolException('Error executing tool search_documentation: 1 validation error for search_documentationArguments\nlimit\n  Input should be a valid integer [type=int_type, input_value=None, input_type=NoneType]\n    For further information visit https://errors.pydantic.dev/2.11/v/int_type')
 Please fix your mistakes.

まあ、今回は使ってみることが目的なので1パターン通せただけでもよしとしましょう。

おわりに

LangChain MCP AdaptersとOllamaでAWS MCP ServersのAWS Documentation MCP Serverを試してみました。

とりあえず使うだけなら簡単そうですが、Ollamaとモデルが選ぶToolによってはうまく動かなかったので苦労しました…。
再現性がなく、選ぶToolによっては動いたりしますからね。

とはいえ、自分の環境では速度的に使い続けるのにはちょっと厳しいので、こうやって確認する程度ですね。