AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a unified framework for interacting with Amazon OpenSearch Service (AOS) and OpenSearch Serverless (AOSS). It covers the full lifecycle of OpenSearch operations, including migration from legacy systems like Solr or Elasticsearch, infrastructure provisioning, advanced search implementation (including vector and RAG), and observability through log and trace analytics. It also features an Agentic AI Assistant for natural language data exploration and incident investigation, ensuring users can navigate complex cluster management and data analysis tasks without manual query crafting.
What it does
- Guides migration workflows from Solr, Elasticsearch, or self-managed OpenSearch to AOS/AOSS.
- Assists with provisioning, lifecycle management, and monitoring of domains and collections.
- Facilitates implementation of vector, semantic, and hybrid search, including RAG with Bedrock.
- Supports log and trace analytics using PPL, OpenTelemetry, and anomaly detection.
- Provides an Agentic AI Assistant for natural language querying and automated incident root cause analysis.
- Enforces operational best practices for sharding, storage tiering, and security configurations.
When to use it
- When planning a migration from legacy search engines to Amazon OpenSearch Service.
- When setting up or optimizing search capabilities, including vector search and RAG.
- When troubleshooting cluster health, performance, or shard allocation issues.
- When performing log or trace analysis to investigate system incidents.
- When you need to generate optimized PPL or DSL queries using natural language.
Advantages
- Centralizes complex operational knowledge across six distinct OpenSearch capabilities.
- Reduces manual query complexity by leveraging the Agentic AI Assistant.
- Provides clear, actionable guidance on production failure modes and migration blockers.
- Standardizes interactions through consistent CLI and data-plane patterns.
- Promotes architectural best practices for scaling and cost-effective storage tiering.
Usage examples
- “How do I migrate my existing Solr index to Amazon OpenSearch Service?”
- The agent identifies the migration capability, explains that Solr to OpenSearch is a refactor migration, and guides you through using the Migration Assistant for data backfill.
- “Why is my cluster status yellow and how can I fix it?”
- The agent uses the AI Assistant capability to analyze cluster health, check shard allocation, and provide specific commands or steps to resolve unassigned shards.
- “Help me set up a RAG pipeline using Bedrock and my OpenSearch domain.”
- The agent routes to the search capability, providing instructions on configuring Bedrock connectors and vector index mappings for semantic retrieval.
- “Find the root cause of the 503 errors in my application logs from the last hour.”
- The agent utilizes the AI Assistant to query logs, perform time-series analysis, and correlate findings to identify the likely root cause of the errors.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/aws/amazon-opensearch-service/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip amazon-opensearch-service.zip -d .agents/skills
Documentation by AWS
Amazon OpenSearch Service — the unified skill
This skill answers anything about Amazon OpenSearch Service or Serverless across six capabilities. Step 0 below routes the question to ONE capability and points at that capability's entry-point reference. Everything else — when to dispatch, sub-references, capability-specific facts, cross-capability links — lives in the entry-point reference for that capability.
AWS MCP server is recommended, not required. Capability references show standard AWS CLI commands as the primary syntax (e.g.,
aws opensearch describe-domain,aws opensearchserverless create-collection). Where the AWS MCP server is available, itscall_awstool offers a streamlined alternative — but every operation in this skill MUST work via the AWS CLI alone. Data-plane HTTP calls against AOS / AOSS useawscurlfor SigV4-signed requests; this works in both contexts.
Step 0: detect the capability — first thing you do
Pick one of the six capabilities below. State the detected capability in your first sentence (e.g., "Detected capability: SEARCH — semantic search setup with Bedrock embeddings."). Then load the entry-point reference; that file describes when to dispatch, indexes the rest of the capability's files, and routes you to the next step.
| Capability | Entry-point reference |
|---|---|
| migration — Solr / Elasticsearch / self-managed OpenSearch into AOS or AOSS. Schema/query translation, sizing, cutover. | references/assessment-workflow.md |
| provisioning — Provisioning and managing AOS domains and AOSS collections. Lifecycle, upgrades, storage tiers, FGAC, monitoring. | references/provisioning-reference.md |
| search — Vector / semantic / hybrid / sparse / dense / RAG retrieval. Bedrock connectors, FAISS HNSW vs Lucene. | references/search-semantic-search-guide.md |
| log-analytics — Log search, observability, PPL, OSI ingestion, anomaly detection, OpenSearch Dashboards. Splunk/Datadog/ELK alternatives. | references/log-analytics-guide.md |
| trace-analytics — Distributed traces with OpenTelemetry. Span queries, service maps, Data Prepper. | references/trace-analytics-trace-queries.md |
| ai-assistant — Agentic AI Assistant: auto-discovers indices, generates optimized PPL/DSL queries, summarizes results, and investigates incidents end-to-end. No manual query crafting needed. | references/ai-assistant.md |
If a prompt spans capabilities (e.g., "migrate from Solr AND set up RAG on the new domain"), pick the dominant capability for the response and close with a one-line handoff to the other capability's entry-point ref.
Universal rules (apply to ALL capabilities)
These rules apply to every response, regardless of capability. Capability-specific rules (sizing math, shape detection, Migration Assistant for Amazon OpenSearch Service capability matrix, k-NN engine selection) live in the entry-point references, not here.
Report header (every multi-section response). Begin every multi-section response with a single fenced metadata block:
> Generated: <ISO 8601 timestamp> | Skill: amazon-opensearch-service v<N>. Get the time by calling thecurrent_timetool (returns ISO 8601 in UTC). Read the skill version from this file's frontmatterversion:field. For one-line answers (terse FOCUSED_OPERATIONAL replies, anti-pattern refusals) the header is optional; for any multi-section deliverable it is REQUIRED. Place it immediately after the report title and before the first##heading.No dollar estimates (HARD CONSTRAINT). Never produce
$X/month,~$1,500, or any dollar figure. Route every cost question to https://calculator.aws and stop. If a sub-reference contains dollar figures, treat them as informational context only and do NOT pass them through to the user.No credential leakage (HARD CONSTRAINT). Never include master usernames, KMS key ARNs, VPC endpoint URLs, instance IPs, or account IDs in generated output.
Pick one for every A-vs-B decision. Name a primary recommendation in one line with a one-sentence reason. A "go with B if..." caveat is allowed AFTER the primary; never lead with conditional-only guidance.
Source restatement. The first 2–3 sentences must restate the source (engine + version + scale) when known, or restate the customer's question in concrete terms. The very first text the user sees must NOT be tool narration, meta-commentary, the report title, or simply restating the question verbatim.
No marketing tone. Do NOT use "seamless", "robust", "best-in-class", "production-hardened", "enterprise-grade", "world-class", "cleanly", "elegant". Do NOT stack 3+ vague hedges ("typically", "generally", "usually", "in most cases") in a single recommendation — be specific about when it does and does not apply.
Cross-capability handoff. When a user prompt spans capabilities (e.g., "migrate from Solr AND set up RAG on the new domain"), pick the dominant capability for the response, then close with a one-line handoff: "For <other capability>, see
references/<other-capability>-<entry>.md."
Cross-cutting references (used across multiple capabilities)
These references are not capability-prefixed because they apply across capabilities. Capability entry-point references load them when relevant; SKILL.md never loads them directly.
references/sizing.md— sizing math, instance family details, OR1 trade-offs, watermarks, JVM heap rules.references/vector-knn.md— k-NN engines, memory math, RAG ingestion patterns, ELSER alternatives.references/observability.md— log analytics patterns, ISM, UltraWarm/Cold tiering, Splunk/Datadog migration playbooks.references/security.md— FGAC, encryption, VPC patterns, audit logs, compliance posture.references/personas.md— communication style per persona.references/assessment-gotchas.md— production gotcha catalog (cite by number in Migration specifics or Risks/blockers tables; each gotcha carries aCategory:tag that determines its lane).references/assessment-knowledge-retrieval.md— topic → tool → URL recipe for batched verification.
Assets (assets/): report templates for FULL_ASSESSMENT renderings (Solr-source, ES-source, executive summary).
What this skill does NOT do
Estimate dollar costs. Pricing changes monthly and account-specific (RI, Savings Plan, EDP) discount math is outside this skill's reliable scope. Use https://calculator.aws.
Move data. Use Migration Assistant for Amazon OpenSearch Service (Historical Data Migration for backfill, Live Traffic Migration for live cutover).
Build embedding models. Use Amazon Bedrock or SageMaker.
Replace Splunk SPL or Datadog APM 1:1. Some queries / detectors / dashboards need rewriting.
Tune relevance for a specific catalog. Use OpenSearch Benchmark
big5workload + your own judgment list.
Guardrail — where this skill's own files live (MCP vs local install)
This skill can be loaded two ways, and they resolve the skill's own bundled files from different places. Determine how the skill was loaded before reading a reference or running a script:
Loaded through the AWS MCP server's
retrieve_skilltool: The skill is not installed on the local filesystem. You MUST fetch each reference or script viaretrieve_skillwith thefileparameter (e.g.file="references/architecture.md"orfile="scripts/deploy.py"), and run the script from the returned content. Do NOTfile_readthese paths locally — they do not exist on disk.Installed locally (e.g.
.kiro/skills/your-skill/or~/.claude/skills/your-skill/): Read and run files from the local skill directory using relative paths.
This distinction applies only to the skill's own packaged files. User data and
session artifacts are always read from and written to the user's working
directory. Never fetch or write customer data through retrieve_skill.
Files
- ATTRIBUTION.mdAdded by AutoGineer930 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md9.2 KiB
- assets/elasticsearch-gap-register.md5.1 KiB
- assets/elasticsearch-index-template-skeleton.md4.2 KiB
- assets/elasticsearch-report-template.md7.8 KiB
- assets/executive-summary-template.md3.0 KiB
- assets/report-template.md12.9 KiB
- assets/solr-gap-register.md3.8 KiB
- assets/solr-index-template-skeleton.md3.7 KiB
- assets/solr-report-template.md5.9 KiB
- assets/tech-deepdive-template.md6.2 KiB
- references/ai-assistant.md18.0 KiB
- references/assessment-gotchas.md17.1 KiB
- references/assessment-knowledge-retrieval.md9.3 KiB
- references/assessment-shape-anti-pattern-pushback.md10.4 KiB
- references/assessment-shape-comparative-decision.md12.9 KiB
- references/assessment-shape-focused-operational.md9.9 KiB
- references/assessment-shape-full-assessment.md20.7 KiB
- references/assessment-shape-overview.md12.1 KiB
- references/assessment-shape-schema-conversion.md8.9 KiB
- references/assessment-shape-sizing-only.md9.4 KiB
- references/assessment-shape-translation.md12.3 KiB
- references/assessment-workflow.md48.4 KiB
- references/compatibility-rubric.md5.9 KiB
- references/log-analytics-guide.md18.0 KiB
- references/log-analytics-osi-pipelines.md8.6 KiB
- references/log-analytics-troubleshooting.md1.6 KiB
- references/observability-ppl-reference.md15.1 KiB
- references/observability.md14.5 KiB
- references/personas.md10.4 KiB
- references/provisioning-agentic-setup.md4.8 KiB
- references/provisioning-domain-deploy-search.md2.2 KiB
- references/provisioning-domain-provision.md3.4 KiB
- references/provisioning-monitoring.md3.4 KiB
- references/provisioning-reference.md6.8 KiB
- references/provisioning-serverless-agentic-setup.md14.9 KiB
- references/provisioning-serverless-deploy-search.md6.7 KiB
- references/provisioning-serverless-deprovision.md4.0 KiB
- references/provisioning-serverless-provision.md8.8 KiB
- references/provisioning-storage-tiers.md2.1 KiB
- references/provisioning-troubleshooting.md8.0 KiB
- references/provisioning-upgrades.md5.4 KiB
- references/readiness-rubric.md3.4 KiB
- references/search-bedrock-connectors.md3.8 KiB
- references/search-dense-vector-models.md5.5 KiB
- references/search-document-processing-guide.md7.7 KiB
- references/search-evaluation-guide.md5.3 KiB
- references/search-index-config.md2.4 KiB
- references/search-recipes.md12.9 KiB
- references/search-semantic-search-guide.md18.2 KiB
- references/search-sparse-vector-models.md4.9 KiB
- references/search-troubleshooting.md1.9 KiB
- references/security.md9.3 KiB
- references/sizing.md12.2 KiB
- references/source-elasticsearch.md6.7 KiB
- references/source-opensearch.md4.8 KiB
- references/trace-analytics-trace-ingestion.md3.3 KiB
- references/trace-analytics-trace-queries.md13.9 KiB
- references/trace-analytics-troubleshooting.md1.6 KiB
- references/vector-knn.md12.9 KiB
references/provisioning-serverless-agentic-setup.md
Amazon OpenSearch Serverless — Agentic Search Setup (Flow Agent)
Configure agentic search on an Amazon OpenSearch Serverless collection using a flow agent with QueryPlanningTool. Uses Bedrock Claude as the reasoning model.
Serverless collections MUST use a flow agent (type: flow); conversational agents are not supported on AOSS, because Amazon OpenSearch Serverless does not provide the stateful conversation-memory backing that conversational agents require. Verify agent-type support against the AWS docs (or aws opensearchserverless API capabilities) before assuming this limitation still holds. Flow agents are stateless — each query is planned and executed independently. For stateful multi-turn agentic search (memory + RAG), use an Amazon OpenSearch Service domain instead; see provisioning-agentic-setup.md.
Prerequisites
A NextGen collection, ACTIVE — see
provisioning-serverless-provision.md.Index created with data — see
provisioning-serverless-deploy-search.md.The collection's data access policy MUST include the
agentResourceType (Step 4), because pipeline-invoked agentic queries fail with403 Forbiddenwithout it.The AWS MCP server is recommended for executing these commands but is not required — steps use standard AWS CLI and
awscurlsyntax. IAM/policy steps useawsCLI; the data-plane_plugins/_mland_search/pipelinecalls (Steps 2, 3, 5, 6) are OpenSearch REST requests — send them withawscurl(AOSS uses--service aoss --region <region>), e.g.awscurl --service aoss --region <region> -X POST "<collection-endpoint>/_plugins/_ml/models/_register?deploy=true" -H 'Content-Type: application/json' -d '<body>'.
Step 1: Create IAM Role for Bedrock Access
aws iam create-role --role-name opensearch-bedrock-agent-role \
--assume-role-policy-document '{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Principal":{"Service":"ml.opensearchservice.amazonaws.com"},
"Action":"sts:AssumeRole",
"Condition":{
"StringEquals":{"aws:SourceAccount":"<account>"},
"ArnLike": {"aws:SourceArn": "arn:aws:aoss:<region>:<account>:collection/<collection-id>"}
}
}]
}'
aws iam put-role-policy --role-name opensearch-bedrock-agent-role \
--policy-name BedrockClaudeInvokePolicy \
--policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"bedrock:InvokeModel","Resource":["arn:aws:bedrock:<region>::foundation-model/<model-id>","arn:aws:bedrock:<region>:<account>:inference-profile/<inference-profile-id>"]}]}'Scope Resource to the exact model and inference-profile you call — the same <model-id> referenced in the connector parameters.model (Step 2). Do NOT use a foundation-model/* wildcard, because it grants invoke on every Bedrock model in the region and this example is frequently copy-pasted as-is into production.
Step 2: Register Model with Inline Connector
Register the model and its connector in one call. The connector request_body MUST use the agent-framework template variables (user_prompt, _chat_history, _interactions, tool_configs), because the flow agent injects planning context through these variables at query time.
Set parameters.model to a model ID you have verified exists, because Bedrock model IDs change as new versions ship and the one shown below may have been superseded. Look up available IDs first with aws bedrock list-foundation-models or aws bedrock list-inference-profiles, and use the same ID in the IAM policy ARN (Step 1) and the QueryPlanningTool model_id (Step 3).
awscurl --service aoss --region <region> \
-X POST "<collection-endpoint>/_plugins/_ml/models/_register?deploy=true" \
-H 'Content-Type: application/json' \
-d '{
"name": "agentic search base model",
"function_name": "remote",
"connector": {
"name": "Bedrock Claude Connector",
"version": 1,
"protocol": "aws_sigv4",
"parameters": {
"region": "<aws_region>",
"service_name": "bedrock",
"model": "<model-id>",
"system_prompt": "You are a search query planning assistant."
},
"credential": { "roleArn": "<iam_role_arn>" },
"actions": [{
"action_type": "predict",
"method": "POST",
"url": "https://bedrock-runtime.${parameters.region}.amazonaws.com/model/${parameters.model}/converse",
"headers": { "content-type": "application/json" },
"request_body": "{ \"system\": [{\"text\": \"${parameters.system_prompt}\"}], \"messages\": [${parameters._chat_history:-}{\"role\":\"user\",\"content\":[{\"text\":\"${parameters.user_prompt}\"}]}${parameters._interactions:-}]${parameters.tool_configs:-} }"
}]
}
}'Wait until model state is DEPLOYED before continuing, because the agent registration in Step 3 references a deployed model.
Step 3: Create Flow Agent
awscurl --service aoss --region <region> \
-X POST "<collection-endpoint>/_plugins/_ml/agents/_register" \
-H 'Content-Type: application/json' \
-d '{
"name": "Agentic Search Agent",
"type": "flow",
"description": "Flow agent for natural language search with query planning",
"tools": [{
"type": "QueryPlanningTool",
"description": "A general tool to answer any question",
"parameters": {
"model_id": "<model_id>",
"response_filter": "$.output.message.content[0].text"
}
}]
}'typeMUST beflow(see rationale above).Use only
QueryPlanningTool, because it introspects the index mapping internally and generates the DSL; additional tools are not needed for stateless query translation.The model is referenced inside the tool's
parameters— do NOT add a top-levelllmblock, because flow agents resolve the model through the tool, not an agent-level LLM binding.response_filterextracts the LLM text from the Bedrock Converse response shape.
Step 4: Data Access Policy for Pipeline Search (CRITICAL)
The IAM role in the connector's credential.roleArn MUST be a principal in the collection's data access policy with all four ResourceTypes — collection, index, model, and agent. Pipeline-invoked agentic queries fail with 403 Forbidden without this, because the pipeline uses the connector's IAM role (not the caller's identity) to read mappings, execute the generated DSL, invoke the model, and execute the agent. Direct _execute calls can still succeed because they run under the caller's identity, which masks the misconfiguration.
You MUST merge the new model and agent rules into the existing policy rather than replacing it, because update-access-policy overwrites the entire policy body and silently drops any rules already present (e.g., the WriteDocument/CreateIndex grants from provisioning Step 3).
# 1. Retrieve the current policy and note its policyVersion
aws opensearchserverless get-access-policy --type data \
--name <collection-name>-data --region <region>
# 2. Copy the existing Rules array from the output, then append the model and
# agent rules below to it. Use the returned policyVersion in step 3.⚠️ Least-privilege NOTE —
aoss:*onmodel/agentis a platform constraint, not a discretionary grant. AOSS does not expose granular data-access actions for themodelandagentResourceTypes, soaoss:*is the narrowest functional grant for these two rules — no tighter action list exists to substitute. It is broader than least-privilege ideally allows, so treat it as a standing gap to tighten, not a permanent target: track it against an open ticket (<tracking-ticket-url>) and re-check on every AOSS agentic-search version bump and on a recurring (quarterly) audit. If AWS exposes granular actions for these ResourceTypes, replaceaoss:*with the specific actions AND narrow themodel/*/*andagent/*/*resources to the specific model and agent IDs this collection uses (see the note after the command block). Thecollectionandindexrules below are already scoped to minimum actions and should stay that way.
# 3. Update with the MERGED policy (existing rules + new model/agent rules):
aws opensearchserverless update-access-policy --type data \
--name <collection-name>-data \
--policy-version <current-version> \
--policy '[{
"Rules":[
{"Resource":["collection/<collection-name>"],"Permission":["aoss:DescribeCollectionItems"],"ResourceType":"collection"},
{"Resource":["index/<collection-name>/*"],"Permission":["aoss:DescribeIndex","aoss:ReadDocument"],"ResourceType":"index"},
{"Resource":["model/*/*"],"Permission":["aoss:*"],"ResourceType":"model"},
{"Resource":["agent/*/*"],"Permission":["aoss:*"],"ResourceType":"agent"}
],
"Principal":["<caller-principal-arn>","<iam_role_arn>"]
}]'Notes on this policy:
modelandagentMUST use the*/*pattern, notmodel/<collection-name>/*— this matches the guidance inprovisioning-serverless-provision.md, because ML connectors and agents are registered at the account level rather than scoped under the collection name; using the collection-scoped pattern causes the very403this step prevents. As noted in the WARNING above, AOSS exposes no granular data-access actions for themodel/agentresource types, soaoss:*is the narrowest functional grant for those two rules — tighten it (both permission and resource) if AWS exposes granular actions; re-check serverless-data-access.html on the audit cadence above.Scope
collectionandindexto the minimum documented actions (shown above) rather thanaoss:*, because least-privilege limits blast radius if the connector role is compromised. A read-only agentic index needs only describe/read; addaoss:WriteDocumentonly if the same role also ingests.List both the caller principal (for manual API calls) and the connector IAM role (for pipeline-invoked calls).
The connector role must also hold the IAM permissions
aoss:APIAccessAll(andaoss:DashboardsAccessAllfor Dashboards) on the collection, because data access policy grants alone are insufficient to reach the data plane.
Step 5: Create Agentic Search Pipeline
awscurl --service aoss --region <region> \
-X PUT "<collection-endpoint>/_search/pipeline/agentic-search-pipeline" \
-H 'Content-Type: application/json' \
-d '{
"request_processors": [{ "agentic_query_translator": { "agent_id": "<agent_id>" } }]
}'The pipeline above is the secure default: it plans and executes the query but does NOT surface the generated dsl_query or agent_steps_summary to callers.
Sensitive-data warning: the
agentic_contextresponse processor attachesdsl_queryandagent_steps_summaryto the responseextblock, exposing internal index field names, the generated query logic, and potentially sensitive filter values to every caller of the pipeline. Leave it OFF in production. Enable it only for an authorized debugging session by adding aresponse_processorsblock to the pipeline, and remove it afterward:"response_processors": [{ "agentic_context": { "agent_steps_summary": true, "dsl_query": true } }]If enabled for debugging, ensure any CloudWatch Logs receiving these responses are encrypted with a customer-managed KMS key and access is restricted to authorized personnel only, because the exposed query logic and field names must not be logged to unencrypted logs.
Step 6: Test Agentic Search
awscurl --service aoss --region <region> \
-X GET "<collection-endpoint>/<index-name>/_search?search_pipeline=agentic-search-pipeline" \
-H 'Content-Type: application/json' \
-d '{
"query": { "agentic": { "query_text": "Find documents about machine learning" } }
}'The response includes search hits. The agent analyzes the question, introspects the index mapping via QueryPlanningTool, generates DSL, and executes it. The generated DSL is returned in ext.dsl_query only when the agentic_context response processor is enabled for debugging (Step 5); with the secure default it is not surfaced to callers.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
403 Forbidden on pipeline query, but _execute works | Connector IAM role missing from data access policy | Add the role as a principal with all four ResourceTypes (Step 4) |
Model stuck below DEPLOYED | Bedrock region/model unavailable or IAM invoke denied | Verify the model is enabled in the region and the role policy allows bedrock:InvokeModel on that model ARN |
| Empty / malformed DSL | response_filter does not match the Converse output shape | Confirm response_filter is $.output.message.content[0].text |
Security Considerations
Audit logging: Enable AWS CloudTrail so that
_plugins/_mlmodel/agent registration and agentic search API calls are recorded — this attributes who created connectors/agents and who ran queries.Anomaly monitoring: Set CloudWatch alarms on the collection's
4xx/5xxerror rates and on unusual agentic query volume, because a spike can indicate a misconfigured or abused pipeline.Encryption at rest: AOSS encrypts all data at rest by default (AWS-owned key). For compliance workloads, use a customer-managed KMS key on the encryption policy — see
provisioning-serverless-provision.md.Bedrock role hygiene: Review the
opensearch-bedrock-agent-roletrust policy and attached permissions on a regular cadence, and keep thebedrock:InvokeModelresource scoped to the specific model ARN (Step 1), because a broad role is a standing invoke path into every model in the region.Sensitive-field exposure: The LLM generates DSL from natural language and can surface any field in the index. If the index contains PII or other sensitive fields, apply field-level access control or a response filter, because an unconstrained query planner may return fields the caller should not see.
Encryption in transit: AOSS enforces HTTPS-only access to the data plane. Verify the collection endpoint starts with
https://before issuing any query or index call, because an unencrypted request would expose the query and results in transit.Input validation & rate limiting:
query_textis arbitrary natural language passed to an LLM that generates executable DSL. Apply input validation (length limits, disallowed patterns) to mitigate prompt injection, and throttle/rate-limit the pipeline endpoint, because crafted prompts can manipulate DSL generation and high volume drives runaway Bedrock invocation cost.AWS WAF (defense in depth): if the endpoint is reachable from outside a trusted VPC, front it with AWS WAF using request-size limits and rate-based rules, because WAF blocks oversized/known-malicious requests at the edge before they reach the LLM query planner.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- AWS
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · plugins/aws-data-analytics/skills/amazon-opensearch-service · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- aws/agent-toolkit-for-aws
AutoGineer is not affiliated with or endorsed by AWS or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download amazon-opensearch-service.zip