agentcore-cli 0.31.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentcore/__init__.py +1 -0
- agentcore/agent_inspector/NOTICE +9 -0
- agentcore/agent_inspector/favicon.svg +60 -0
- agentcore/agent_inspector/index.css +1 -0
- agentcore/agent_inspector/index.html +14 -0
- agentcore/agent_inspector/index.js +289 -0
- agentcore/assets/AGENTS.md +60 -0
- agentcore/assets/README.md +108 -0
- agentcore/assets/agents/AGENTS.md +218 -0
- agentcore/assets/cdk/.prettierrc +8 -0
- agentcore/assets/cdk/README.md +26 -0
- agentcore/assets/cdk/bin/cdk.ts +216 -0
- agentcore/assets/cdk/cdk.json +88 -0
- agentcore/assets/cdk/gitignore.template +9 -0
- agentcore/assets/cdk/jest.config.js +9 -0
- agentcore/assets/cdk/lib/cdk-stack.ts +291 -0
- agentcore/assets/cdk/npmignore.template +6 -0
- agentcore/assets/cdk/package.json +30 -0
- agentcore/assets/cdk/test/cdk.test.ts +31 -0
- agentcore/assets/cdk/tsconfig.json +28 -0
- agentcore/assets/container/python/Dockerfile +47 -0
- agentcore/assets/container/python/dockerignore.template +27 -0
- agentcore/assets/container/typescript/Dockerfile +25 -0
- agentcore/assets/container/typescript/dockerignore.template +24 -0
- agentcore/assets/datasets/predefined-v1.jsonl +3 -0
- agentcore/assets/datasets/simulated-v1.jsonl +3 -0
- agentcore/assets/evaluators/autoevals-lambda/execution-role-policy.json +15 -0
- agentcore/assets/evaluators/autoevals-lambda/lambda_function.py +37 -0
- agentcore/assets/evaluators/autoevals-lambda/pyproject.toml +22 -0
- agentcore/assets/evaluators/deepeval-lambda/execution-role-policy.json +15 -0
- agentcore/assets/evaluators/deepeval-lambda/lambda_function.py +29 -0
- agentcore/assets/evaluators/deepeval-lambda/pyproject.toml +19 -0
- agentcore/assets/evaluators/python-lambda/execution-role-policy.json +10 -0
- agentcore/assets/evaluators/python-lambda/lambda_function.py +19 -0
- agentcore/assets/evaluators/python-lambda/pyproject.toml +15 -0
- agentcore/assets/harness/invoke.py.template +74 -0
- agentcore/assets/mcp/python/README.md +27 -0
- agentcore/assets/mcp/python/pyproject.toml +22 -0
- agentcore/assets/mcp/python/server.py +117 -0
- agentcore/assets/mcp/python-lambda/README.md +22 -0
- agentcore/assets/mcp/python-lambda/handler.py +144 -0
- agentcore/assets/mcp/python-lambda/pyproject.toml +15 -0
- agentcore/assets/python/a2a/googleadk/base/README.md +22 -0
- agentcore/assets/python/a2a/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/googleadk/base/main.py +124 -0
- agentcore/assets/python/a2a/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/a2a/googleadk/base/pyproject.toml +22 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/README.md +22 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/main.py +144 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/a2a/langchain_langgraph/base/pyproject.toml +26 -0
- agentcore/assets/python/a2a/strands/base/README.md +22 -0
- agentcore/assets/python/a2a/strands/base/gitignore.template +41 -0
- agentcore/assets/python/a2a/strands/base/main.py +113 -0
- agentcore/assets/python/a2a/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/a2a/strands/base/model/load.py +123 -0
- agentcore/assets/python/a2a/strands/base/pyproject.toml +23 -0
- agentcore/assets/python/a2a/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/a2a/strands/capabilities/memory/session.py +46 -0
- agentcore/assets/python/agui/googleadk/base/README.md +30 -0
- agentcore/assets/python/agui/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/agui/googleadk/base/main.py +91 -0
- agentcore/assets/python/agui/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/agui/googleadk/base/pyproject.toml +25 -0
- agentcore/assets/python/agui/langchain_langgraph/base/README.md +22 -0
- agentcore/assets/python/agui/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/agui/langchain_langgraph/base/main.py +130 -0
- agentcore/assets/python/agui/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/agui/langchain_langgraph/base/pyproject.toml +31 -0
- agentcore/assets/python/agui/strands/base/README.md +22 -0
- agentcore/assets/python/agui/strands/base/gitignore.template +41 -0
- agentcore/assets/python/agui/strands/base/main.py +105 -0
- agentcore/assets/python/agui/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/agui/strands/base/model/load.py +123 -0
- agentcore/assets/python/agui/strands/base/pyproject.toml +27 -0
- agentcore/assets/python/agui/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/agui/strands/capabilities/memory/session.py +46 -0
- agentcore/assets/python/http/autogen/base/README.md +45 -0
- agentcore/assets/python/http/autogen/base/gitignore.template +41 -0
- agentcore/assets/python/http/autogen/base/main.py +145 -0
- agentcore/assets/python/http/autogen/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/autogen/base/mcp_client/client.py +28 -0
- agentcore/assets/python/http/autogen/base/model/__init__.py +1 -0
- agentcore/assets/python/http/autogen/base/model/load.py +136 -0
- agentcore/assets/python/http/autogen/base/pyproject.toml +34 -0
- agentcore/assets/python/http/bma/base/Dockerfile +41 -0
- agentcore/assets/python/http/bma/base/README.md +178 -0
- agentcore/assets/python/http/bma/base/client.py +200 -0
- agentcore/assets/python/http/bma/base/lifecycle/server.py +641 -0
- agentcore/assets/python/http/bma/base/otel/collector.yaml +69 -0
- agentcore/assets/python/http/bma/base/plugins/acr-report/.codex-plugin/plugin.json +6 -0
- agentcore/assets/python/http/bma/base/plugins/acr-report/skills/acr-report/SKILL.md +16 -0
- agentcore/assets/python/http/bma/base/policies/bma-acr-policy.json +11 -0
- agentcore/assets/python/http/bma/base/policies/bma-session-policy.json +35 -0
- agentcore/assets/python/http/bma/base/policies/bma-session-trust.json +20 -0
- agentcore/assets/python/http/bma/base/pyproject.toml +21 -0
- agentcore/assets/python/http/googleadk/base/README.md +45 -0
- agentcore/assets/python/http/googleadk/base/gitignore.template +41 -0
- agentcore/assets/python/http/googleadk/base/main.py +207 -0
- agentcore/assets/python/http/googleadk/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/googleadk/base/mcp_client/client.py +75 -0
- agentcore/assets/python/http/googleadk/base/model/__init__.py +1 -0
- agentcore/assets/python/http/googleadk/base/model/load.py +41 -0
- agentcore/assets/python/http/googleadk/base/pyproject.toml +24 -0
- agentcore/assets/python/http/langchain_langgraph/base/README.md +45 -0
- agentcore/assets/python/http/langchain_langgraph/base/gitignore.template +41 -0
- agentcore/assets/python/http/langchain_langgraph/base/main.py +227 -0
- agentcore/assets/python/http/langchain_langgraph/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/langchain_langgraph/base/mcp_client/client.py +79 -0
- agentcore/assets/python/http/langchain_langgraph/base/model/__init__.py +1 -0
- agentcore/assets/python/http/langchain_langgraph/base/model/load.py +123 -0
- agentcore/assets/python/http/langchain_langgraph/base/pyproject.toml +38 -0
- agentcore/assets/python/http/openaiagents/base/README.md +45 -0
- agentcore/assets/python/http/openaiagents/base/gitignore.template +41 -0
- agentcore/assets/python/http/openaiagents/base/main.py +200 -0
- agentcore/assets/python/http/openaiagents/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/openaiagents/base/mcp_client/client.py +74 -0
- agentcore/assets/python/http/openaiagents/base/model/__init__.py +1 -0
- agentcore/assets/python/http/openaiagents/base/model/load.py +37 -0
- agentcore/assets/python/http/openaiagents/base/pyproject.toml +21 -0
- agentcore/assets/python/http/strands/base/README.md +46 -0
- agentcore/assets/python/http/strands/base/gitignore.template +41 -0
- agentcore/assets/python/http/strands/base/main.py +714 -0
- agentcore/assets/python/http/strands/base/mcp_client/__init__.py +1 -0
- agentcore/assets/python/http/strands/base/mcp_client/client.py +116 -0
- agentcore/assets/python/http/strands/base/model/__init__.py +1 -0
- agentcore/assets/python/http/strands/base/model/load.py +239 -0
- agentcore/assets/python/http/strands/base/model/mantle_compat.py +21 -0
- agentcore/assets/python/http/strands/base/pyproject.toml +31 -0
- agentcore/assets/python/http/strands/base/skills/fetcher.py +279 -0
- agentcore/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
- agentcore/assets/python/http/strands/capabilities/memory/__init__.py +1 -0
- agentcore/assets/python/http/strands/capabilities/memory/session.py +47 -0
- agentcore/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
- agentcore/assets/python/http/strands/capabilities/payments/payments.py +142 -0
- agentcore/assets/python/mcp/standalone/base/README.md +36 -0
- agentcore/assets/python/mcp/standalone/base/gitignore.template +41 -0
- agentcore/assets/python/mcp/standalone/base/main.py +83 -0
- agentcore/assets/python/mcp/standalone/base/pyproject.toml +16 -0
- agentcore/assets/typescript/.gitkeep +0 -0
- agentcore/assets/typescript/http/strands/base/README.md +42 -0
- agentcore/assets/typescript/http/strands/base/gitignore.template +22 -0
- agentcore/assets/typescript/http/strands/base/main.ts +149 -0
- agentcore/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
- agentcore/assets/typescript/http/strands/base/model/load.ts +102 -0
- agentcore/assets/typescript/http/strands/base/package.json +38 -0
- agentcore/assets/typescript/http/strands/base/tsconfig.json +19 -0
- agentcore/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
- agentcore/assets/typescript/http/vercelai/base/README.md +42 -0
- agentcore/assets/typescript/http/vercelai/base/gitignore.template +22 -0
- agentcore/assets/typescript/http/vercelai/base/main.ts +70 -0
- agentcore/assets/typescript/http/vercelai/base/model/load.ts +121 -0
- agentcore/assets/typescript/http/vercelai/base/package.json +35 -0
- agentcore/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
- agentcore/aws/__init__.py +263 -0
- agentcore/aws/_aws_errors.py +72 -0
- agentcore/aws/_http.py +176 -0
- agentcore/aws/_util.py +37 -0
- agentcore/aws/account.py +165 -0
- agentcore/aws/agentcore.py +971 -0
- agentcore/aws/agentcore_ab_tests.py +230 -0
- agentcore/aws/agentcore_batch_evaluation.py +227 -0
- agentcore/aws/agentcore_config_bundles.py +220 -0
- agentcore/aws/agentcore_control.py +994 -0
- agentcore/aws/agentcore_datasets.py +222 -0
- agentcore/aws/agentcore_harness.py +330 -0
- agentcore/aws/agentcore_payments.py +430 -0
- agentcore/aws/agentcore_recommendation.py +140 -0
- agentcore/aws/agui_parser.py +131 -0
- agentcore/aws/agui_types.py +342 -0
- agentcore/aws/api_client.py +87 -0
- agentcore/aws/arn.py +18 -0
- agentcore/aws/aws_context.py +23 -0
- agentcore/aws/bedrock.py +44 -0
- agentcore/aws/bedrock_agent.py +129 -0
- agentcore/aws/bedrock_import.py +252 -0
- agentcore/aws/bedrock_import_types.py +111 -0
- agentcore/aws/cloudwatch.py +136 -0
- agentcore/aws/connect_shell.py +266 -0
- agentcore/aws/iam.py +41 -0
- agentcore/aws/partition.py +58 -0
- agentcore/aws/policy_generation.py +116 -0
- agentcore/aws/region.py +54 -0
- agentcore/aws/retry.py +27 -0
- agentcore/aws/shell_framer.py +136 -0
- agentcore/aws/stage_endpoint.py +39 -0
- agentcore/aws/target_region.py +54 -0
- agentcore/aws/transaction_search.py +97 -0
- agentcore/cdk/__init__.py +10 -0
- agentcore/cdk/constants.py +13 -0
- agentcore/cdk/local_cdk_project.py +48 -0
- agentcore/cdk/toolkit.py +706 -0
- agentcore/cli/__init__.py +0 -0
- agentcore/cli/commands/__init__.py +0 -0
- agentcore/cli/commands/_jobs_common.py +39 -0
- agentcore/cli/commands/_run_wizards.py +639 -0
- agentcore/cli/commands/add/__init__.py +37 -0
- agentcore/cli/commands/add/_commander.py +52 -0
- agentcore/cli/commands/add/_common.py +47 -0
- agentcore/cli/commands/add/agent_wizard.py +528 -0
- agentcore/cli/commands/add/auth_options.py +154 -0
- agentcore/cli/commands/add/skill_action.py +105 -0
- agentcore/cli/commands/add/skill_command.py +87 -0
- agentcore/cli/commands/add/tool_action.py +160 -0
- agentcore/cli/commands/add/tool_command.py +117 -0
- agentcore/cli/commands/add/validate.py +333 -0
- agentcore/cli/commands/capacity_provider/__init__.py +86 -0
- agentcore/cli/commands/capacity_provider/action.py +114 -0
- agentcore/cli/commands/capacity_provider/constants.py +22 -0
- agentcore/cli/commands/config.py +91 -0
- agentcore/cli/commands/config_bundle.py +251 -0
- agentcore/cli/commands/create/__init__.py +643 -0
- agentcore/cli/commands/create/action.py +406 -0
- agentcore/cli/commands/create/dependencies.py +91 -0
- agentcore/cli/commands/create/harness_validate.py +82 -0
- agentcore/cli/commands/create/validate.py +195 -0
- agentcore/cli/commands/create/wizard.py +127 -0
- agentcore/cli/commands/dataset.py +119 -0
- agentcore/cli/commands/deploy/__init__.py +31 -0
- agentcore/cli/commands/deploy/_guards.py +25 -0
- agentcore/cli/commands/deploy/actions.py +840 -0
- agentcore/cli/commands/deploy/command.py +349 -0
- agentcore/cli/commands/deploy/progress.py +115 -0
- agentcore/cli/commands/deploy/types.py +68 -0
- agentcore/cli/commands/deploy/utils.py +43 -0
- agentcore/cli/commands/deploy/validate.py +21 -0
- agentcore/cli/commands/dev/__init__.py +5 -0
- agentcore/cli/commands/dev/_deps.py +50 -0
- agentcore/cli/commands/dev/browser_mode.py +270 -0
- agentcore/cli/commands/dev/command.py +450 -0
- agentcore/cli/commands/dev/terminal_mode.py +379 -0
- agentcore/cli/commands/exec/__init__.py +29 -0
- agentcore/cli/commands/exec/action.py +442 -0
- agentcore/cli/commands/exec/command.py +206 -0
- agentcore/cli/commands/exec/types.py +35 -0
- agentcore/cli/commands/export/__init__.py +114 -0
- agentcore/cli/commands/export/constants.py +21 -0
- agentcore/cli/commands/export/fetch_harness_spec.py +234 -0
- agentcore/cli/commands/export/harness_action.py +385 -0
- agentcore/cli/commands/export/harness_mapper.py +868 -0
- agentcore/cli/commands/export/harness_resolver.py +95 -0
- agentcore/cli/commands/export/types.py +90 -0
- agentcore/cli/commands/export/wizard.py +97 -0
- agentcore/cli/commands/feedback/__init__.py +69 -0
- agentcore/cli/commands/feedback/action.py +30 -0
- agentcore/cli/commands/feedback/consent_prompt.py +35 -0
- agentcore/cli/commands/feedback/wizard.py +49 -0
- agentcore/cli/commands/fetch/__init__.py +69 -0
- agentcore/cli/commands/fetch/action.py +62 -0
- agentcore/cli/commands/help.py +65 -0
- agentcore/cli/commands/import_/__init__.py +167 -0
- agentcore/cli/commands/import_/_js.py +72 -0
- agentcore/cli/commands/import_/actions.py +457 -0
- agentcore/cli/commands/import_/constants.py +45 -0
- agentcore/cli/commands/import_/import_evaluator.py +140 -0
- agentcore/cli/commands/import_/import_gateway.py +520 -0
- agentcore/cli/commands/import_/import_memory.py +128 -0
- agentcore/cli/commands/import_/import_online_eval.py +165 -0
- agentcore/cli/commands/import_/import_pipeline.py +145 -0
- agentcore/cli/commands/import_/import_runtime.py +214 -0
- agentcore/cli/commands/import_/import_utils.py +410 -0
- agentcore/cli/commands/import_/phase1_update.py +110 -0
- agentcore/cli/commands/import_/phase2_import.py +206 -0
- agentcore/cli/commands/import_/resource_import.py +228 -0
- agentcore/cli/commands/import_/template_utils.py +148 -0
- agentcore/cli/commands/import_/types.py +150 -0
- agentcore/cli/commands/import_/yaml_parser.py +265 -0
- agentcore/cli/commands/init.py +196 -0
- agentcore/cli/commands/invoke/__init__.py +32 -0
- agentcore/cli/commands/invoke/_deps.py +73 -0
- agentcore/cli/commands/invoke/action.py +840 -0
- agentcore/cli/commands/invoke/command.py +490 -0
- agentcore/cli/commands/invoke/constants.py +40 -0
- agentcore/cli/commands/invoke/guards.py +23 -0
- agentcore/cli/commands/invoke/interactive.py +604 -0
- agentcore/cli/commands/invoke/resolve.py +149 -0
- agentcore/cli/commands/invoke/resolve_prompt.py +60 -0
- agentcore/cli/commands/invoke/types.py +61 -0
- agentcore/cli/commands/invoke/validate.py +33 -0
- agentcore/cli/commands/job_actions.py +239 -0
- agentcore/cli/commands/job_history.py +380 -0
- agentcore/cli/commands/logs/__init__.py +53 -0
- agentcore/cli/commands/logs/action.py +159 -0
- agentcore/cli/commands/logs/filter_pattern.py +17 -0
- agentcore/cli/commands/logs/guards.py +51 -0
- agentcore/cli/commands/logs_evals.py +42 -0
- agentcore/cli/commands/package.py +118 -0
- agentcore/cli/commands/remove/__init__.py +172 -0
- agentcore/cli/commands/remove/skill_command.py +131 -0
- agentcore/cli/commands/remove/tool_command.py +59 -0
- agentcore/cli/commands/run.py +808 -0
- agentcore/cli/commands/run_ingest.py +97 -0
- agentcore/cli/commands/shared/__init__.py +0 -0
- agentcore/cli/commands/shared/arn_utils.py +9 -0
- agentcore/cli/commands/shared/filesystem_utils.py +421 -0
- agentcore/cli/commands/shared/header_utils.py +87 -0
- agentcore/cli/commands/shared/indexed_key_parser.py +76 -0
- agentcore/cli/commands/shared/lifecycle_utils.py +72 -0
- agentcore/cli/commands/shared/region_utils.py +20 -0
- agentcore/cli/commands/shared/vpc_utils.py +99 -0
- agentcore/cli/commands/status/__init__.py +30 -0
- agentcore/cli/commands/status/_guards.py +25 -0
- agentcore/cli/commands/status/action.py +741 -0
- agentcore/cli/commands/status/command.py +321 -0
- agentcore/cli/commands/status/constants.py +36 -0
- agentcore/cli/commands/status/format_knowledge_base.py +111 -0
- agentcore/cli/commands/telemetry.py +79 -0
- agentcore/cli/commands/traces/__init__.py +155 -0
- agentcore/cli/commands/traces/action.py +123 -0
- agentcore/cli/commands/update/__init__.py +63 -0
- agentcore/cli/commands/update/action.py +164 -0
- agentcore/cli/commands/validate.py +165 -0
- agentcore/cli/constants.py +96 -0
- agentcore/cli/errors.py +118 -0
- agentcore/cli/external_requirements/__init__.py +67 -0
- agentcore/cli/external_requirements/checks.py +280 -0
- agentcore/cli/external_requirements/detect.py +55 -0
- agentcore/cli/external_requirements/versions.py +57 -0
- agentcore/cli/groups.py +23 -0
- agentcore/cli/interactive.py +85 -0
- agentcore/cli/main.py +137 -0
- agentcore/cli/naming.py +11 -0
- agentcore/cli/notices.py +42 -0
- agentcore/cli/project.py +34 -0
- agentcore/cli/run_command.py +27 -0
- agentcore/cli/tree.py +135 -0
- agentcore/cli/update_notifier.py +123 -0
- agentcore/cli/variadic.py +50 -0
- agentcore/cloudformation/__init__.py +84 -0
- agentcore/cloudformation/bootstrap.py +64 -0
- agentcore/cloudformation/logical_ids.py +37 -0
- agentcore/cloudformation/outputs.py +566 -0
- agentcore/cloudformation/stack_discovery.py +75 -0
- agentcore/cloudformation/stack_events.py +107 -0
- agentcore/cloudformation/stack_status.py +98 -0
- agentcore/cloudformation/types.py +44 -0
- agentcore/lib/__init__.py +68 -0
- agentcore/lib/constants.py +77 -0
- agentcore/lib/dependency_management/__init__.py +23 -0
- agentcore/lib/dependency_management/messages.py +92 -0
- agentcore/lib/dependency_management/plan.py +98 -0
- agentcore/lib/dependency_management/semver.py +137 -0
- agentcore/lib/dependency_management/sync.py +139 -0
- agentcore/lib/dependency_management/types.py +56 -0
- agentcore/lib/errors/__init__.py +5 -0
- agentcore/lib/errors/types.py +352 -0
- agentcore/lib/errors/validation.py +121 -0
- agentcore/lib/packaging/__init__.py +81 -0
- agentcore/lib/packaging/build_args.py +23 -0
- agentcore/lib/packaging/build_context.py +26 -0
- agentcore/lib/packaging/build_context_dockerignore.py +45 -0
- agentcore/lib/packaging/container.py +95 -0
- agentcore/lib/packaging/helpers.py +289 -0
- agentcore/lib/packaging/node.py +153 -0
- agentcore/lib/packaging/python.py +135 -0
- agentcore/lib/packaging/types.py +69 -0
- agentcore/lib/packaging/uv.py +45 -0
- agentcore/lib/result.py +104 -0
- agentcore/lib/schemas/__init__.py +1 -0
- agentcore/lib/schemas/io/__init__.py +27 -0
- agentcore/lib/schemas/io/config_io.py +458 -0
- agentcore/lib/schemas/io/global_config.py +239 -0
- agentcore/lib/schemas/io/path_resolver.py +132 -0
- agentcore/lib/secrets/__init__.py +18 -0
- agentcore/lib/secrets/cipher.py +70 -0
- agentcore/lib/secrets/key_provider.py +163 -0
- agentcore/lib/secrets/sensitive_keys.py +55 -0
- agentcore/lib/time_constants.py +4 -0
- agentcore/lib/utils/__init__.py +47 -0
- agentcore/lib/utils/aws_account.py +15 -0
- agentcore/lib/utils/credentials.py +68 -0
- agentcore/lib/utils/dotenv.py +32 -0
- agentcore/lib/utils/env.py +105 -0
- agentcore/lib/utils/json_format.py +29 -0
- agentcore/lib/utils/json_rpc.py +22 -0
- agentcore/lib/utils/platform.py +33 -0
- agentcore/lib/utils/polling.py +86 -0
- agentcore/lib/utils/subprocess.py +135 -0
- agentcore/lib/utils/time_parser.py +48 -0
- agentcore/lib/utils/validation.py +106 -0
- agentcore/logging/__init__.py +10 -0
- agentcore/logging/_common.py +77 -0
- agentcore/logging/cdk_io_host.py +36 -0
- agentcore/logging/create_logger.py +107 -0
- agentcore/logging/dev_logger.py +63 -0
- agentcore/logging/exec_logger.py +159 -0
- agentcore/logging/invoke_logger.py +154 -0
- agentcore/logging/remove_logger.py +95 -0
- agentcore/operations/__init__.py +0 -0
- agentcore/operations/agent/__init__.py +0 -0
- agentcore/operations/agent/config_bundle_defaults.py +31 -0
- agentcore/operations/agent/generate/__init__.py +28 -0
- agentcore/operations/agent/generate/schema_mapper.py +319 -0
- agentcore/operations/agent/generate/types.py +172 -0
- agentcore/operations/agent/generate/write_agent_to_project.py +67 -0
- agentcore/operations/agent/import_/__init__.py +31 -0
- agentcore/operations/agent/import_/base_translator.py +449 -0
- agentcore/operations/agent/import_/constants.py +23 -0
- agentcore/operations/agent/import_/execute.py +127 -0
- agentcore/operations/agent/import_/langgraph_translator.py +294 -0
- agentcore/operations/agent/import_/pyproject_generator.py +73 -0
- agentcore/operations/agent/import_/strands_translator.py +289 -0
- agentcore/operations/config_bundle/__init__.py +1 -0
- agentcore/operations/config_bundle/bundle_name_variants.py +9 -0
- agentcore/operations/config_bundle/diff_versions.py +52 -0
- agentcore/operations/config_bundle/resolve_bundle.py +65 -0
- agentcore/operations/connectors/__init__.py +3 -0
- agentcore/operations/connectors/translators.py +63 -0
- agentcore/operations/dataset/__init__.py +21 -0
- agentcore/operations/dataset/delete.py +7 -0
- agentcore/operations/dataset/publish.py +16 -0
- agentcore/operations/dataset/pull.py +21 -0
- agentcore/operations/dataset/push.py +201 -0
- agentcore/operations/dataset/resolve_dataset.py +65 -0
- agentcore/operations/dataset/status.py +18 -0
- agentcore/operations/dataset/wait.py +25 -0
- agentcore/operations/deploy/__init__.py +152 -0
- agentcore/operations/deploy/backfill_vpc_id.py +90 -0
- agentcore/operations/deploy/change_detection.py +84 -0
- agentcore/operations/deploy/constants.py +58 -0
- agentcore/operations/deploy/dependency_sync.py +105 -0
- agentcore/operations/deploy/ensure_target.py +30 -0
- agentcore/operations/deploy/gateway_status.py +44 -0
- agentcore/operations/deploy/managed_memory_notice.py +36 -0
- agentcore/operations/deploy/payment_connector_authorization.py +106 -0
- agentcore/operations/deploy/post_deploy_datasets.py +96 -0
- agentcore/operations/deploy/post_deploy_knowledge_bases.py +104 -0
- agentcore/operations/deploy/post_deploy_observability.py +28 -0
- agentcore/operations/deploy/post_deploy_online_evals.py +60 -0
- agentcore/operations/deploy/pre_deploy_identity.py +505 -0
- agentcore/operations/deploy/preflight.py +385 -0
- agentcore/operations/deploy/region_override.py +45 -0
- agentcore/operations/deploy/teardown.py +153 -0
- agentcore/operations/dev/__init__.py +61 -0
- agentcore/operations/dev/_http.py +79 -0
- agentcore/operations/dev/_server.py +165 -0
- agentcore/operations/dev/codezip_dev_server.py +151 -0
- agentcore/operations/dev/config.py +128 -0
- agentcore/operations/dev/constants.py +9 -0
- agentcore/operations/dev/container_dev_server.py +237 -0
- agentcore/operations/dev/container_runtime.py +37 -0
- agentcore/operations/dev/dev_server.py +244 -0
- agentcore/operations/dev/gateway_env.py +25 -0
- agentcore/operations/dev/invoke.py +214 -0
- agentcore/operations/dev/invoke_a2a.py +204 -0
- agentcore/operations/dev/invoke_agui.py +88 -0
- agentcore/operations/dev/invoke_mcp.py +145 -0
- agentcore/operations/dev/invoke_types.py +30 -0
- agentcore/operations/dev/load_dev_env.py +26 -0
- agentcore/operations/dev/memory_env.py +19 -0
- agentcore/operations/dev/otel/__init__.py +5 -0
- agentcore/operations/dev/otel/collector.py +234 -0
- agentcore/operations/dev/otel/transforms.py +331 -0
- agentcore/operations/dev/payment_env.py +50 -0
- agentcore/operations/dev/server.py +28 -0
- agentcore/operations/dev/sse_transform.py +30 -0
- agentcore/operations/dev/utils.py +152 -0
- agentcore/operations/dev/web_ui/__init__.py +31 -0
- agentcore/operations/dev/web_ui/constants.py +25 -0
- agentcore/operations/dev/web_ui/handlers/__init__.py +36 -0
- agentcore/operations/dev/web_ui/handlers/_common.py +36 -0
- agentcore/operations/dev/web_ui/handlers/_deployed.py +37 -0
- agentcore/operations/dev/web_ui/handlers/a2a_proxy.py +37 -0
- agentcore/operations/dev/web_ui/handlers/cloudwatch_traces.py +71 -0
- agentcore/operations/dev/web_ui/handlers/harness_invocation.py +89 -0
- agentcore/operations/dev/web_ui/handlers/harness_utils.py +95 -0
- agentcore/operations/dev/web_ui/handlers/invocations.py +327 -0
- agentcore/operations/dev/web_ui/handlers/mcp_proxy.py +119 -0
- agentcore/operations/dev/web_ui/handlers/memory.py +84 -0
- agentcore/operations/dev/web_ui/handlers/resources.py +351 -0
- agentcore/operations/dev/web_ui/handlers/start.py +182 -0
- agentcore/operations/dev/web_ui/handlers/status.py +25 -0
- agentcore/operations/dev/web_ui/handlers/traces.py +50 -0
- agentcore/operations/dev/web_ui/run_web_ui.py +60 -0
- agentcore/operations/dev/web_ui/web_server.py +297 -0
- agentcore/operations/eval/__init__.py +8 -0
- agentcore/operations/eval/list_eval_runs.py +18 -0
- agentcore/operations/eval/logs_eval.py +119 -0
- agentcore/operations/eval/pause_resume.py +90 -0
- agentcore/operations/eval/run_eval.py +354 -0
- agentcore/operations/eval/shared/__init__.py +0 -0
- agentcore/operations/eval/shared/dataset_loader.py +68 -0
- agentcore/operations/eval/shared/dataset_session_provider.py +122 -0
- agentcore/operations/eval/shared/evaluator_runner.py +89 -0
- agentcore/operations/eval/shared/scenario_executor.py +71 -0
- agentcore/operations/eval/shared/span_collector.py +255 -0
- agentcore/operations/eval/storage.py +67 -0
- agentcore/operations/feedback/__init__.py +21 -0
- agentcore/operations/feedback/aperture_client.py +98 -0
- agentcore/operations/feedback/build_payload.py +97 -0
- agentcore/operations/feedback/constants.py +26 -0
- agentcore/operations/feedback/submit_feedback.py +150 -0
- agentcore/operations/fetch_access/__init__.py +36 -0
- agentcore/operations/fetch_access/_target.py +17 -0
- agentcore/operations/fetch_access/fetch_gateway_token.py +75 -0
- agentcore/operations/fetch_access/fetch_harness_token.py +72 -0
- agentcore/operations/fetch_access/fetch_runtime_token.py +76 -0
- agentcore/operations/fetch_access/list_agents.py +18 -0
- agentcore/operations/fetch_access/list_gateways.py +26 -0
- agentcore/operations/fetch_access/list_harnesses.py +23 -0
- agentcore/operations/fetch_access/oauth_token.py +162 -0
- agentcore/operations/fetch_access/types.py +34 -0
- agentcore/operations/harness/__init__.py +1 -0
- agentcore/operations/harness/orphan.py +84 -0
- agentcore/operations/harness/skill_utils.py +56 -0
- agentcore/operations/identity/__init__.py +33 -0
- agentcore/operations/identity/api_key_credential_provider.py +68 -0
- agentcore/operations/identity/oauth2_credential_provider.py +95 -0
- agentcore/operations/ingest/__init__.py +184 -0
- agentcore/operations/init/__init__.py +3 -0
- agentcore/operations/init/files.py +59 -0
- agentcore/operations/insights/__init__.py +21 -0
- agentcore/operations/insights/insights_storage.py +67 -0
- agentcore/operations/insights/run_insights.py +148 -0
- agentcore/operations/invoke/__init__.py +5 -0
- agentcore/operations/invoke/resolve_agent_context.py +85 -0
- agentcore/operations/jobs/__init__.py +38 -0
- agentcore/operations/jobs/ab_test/__init__.py +0 -0
- agentcore/operations/jobs/ab_test/build_options.py +126 -0
- agentcore/operations/jobs/ab_test/format.py +121 -0
- agentcore/operations/jobs/ab_test/handler.py +412 -0
- agentcore/operations/jobs/ab_test/promote.py +142 -0
- agentcore/operations/jobs/ab_test/resolve.py +221 -0
- agentcore/operations/jobs/batch_evaluation/__init__.py +0 -0
- agentcore/operations/jobs/batch_evaluation/build_source.py +68 -0
- agentcore/operations/jobs/batch_evaluation/dataset_phase1.py +95 -0
- agentcore/operations/jobs/batch_evaluation/format.py +58 -0
- agentcore/operations/jobs/batch_evaluation/handler.py +203 -0
- agentcore/operations/jobs/insights/__init__.py +0 -0
- agentcore/operations/jobs/insights/format.py +65 -0
- agentcore/operations/jobs/insights/handler.py +178 -0
- agentcore/operations/jobs/recommendation/__init__.py +0 -0
- agentcore/operations/jobs/recommendation/apply_to_bundle.py +76 -0
- agentcore/operations/jobs/recommendation/build_config.py +271 -0
- agentcore/operations/jobs/recommendation/fetch_session_spans.py +93 -0
- agentcore/operations/jobs/recommendation/format.py +77 -0
- agentcore/operations/jobs/recommendation/handler.py +331 -0
- agentcore/operations/jobs/shared/__init__.py +0 -0
- agentcore/operations/jobs/shared/constants.py +85 -0
- agentcore/operations/jobs/shared/engine.py +187 -0
- agentcore/operations/jobs/shared/format.py +104 -0
- agentcore/operations/jobs/shared/region.py +34 -0
- agentcore/operations/jobs/shared/resolve_agent_state.py +30 -0
- agentcore/operations/jobs/shared/storage.py +117 -0
- agentcore/operations/jobs/shared/wait.py +30 -0
- agentcore/operations/knowledge_base/__init__.py +33 -0
- agentcore/operations/knowledge_base/connector_config.py +105 -0
- agentcore/operations/knowledge_base/hydrate_data_sources.py +59 -0
- agentcore/operations/mcp/__init__.py +4 -0
- agentcore/operations/memory/__init__.py +13 -0
- agentcore/operations/memory/_records.py +72 -0
- agentcore/operations/memory/list_memory_records.py +45 -0
- agentcore/operations/memory/retrieve_memory_records.py +52 -0
- agentcore/operations/node/__init__.py +15 -0
- agentcore/operations/node/setup.py +36 -0
- agentcore/operations/python/__init__.py +17 -0
- agentcore/operations/python/setup.py +47 -0
- agentcore/operations/resolve_agent.py +159 -0
- agentcore/operations/session/__init__.py +86 -0
- agentcore/operations/traces/__init__.py +29 -0
- agentcore/operations/traces/get_trace.py +202 -0
- agentcore/operations/traces/insights_query.py +74 -0
- agentcore/operations/traces/list_traces.py +46 -0
- agentcore/operations/traces/trace_url.py +25 -0
- agentcore/operations/traces/types.py +55 -0
- agentcore/primitives/__init__.py +0 -0
- agentcore/primitives/_gateway_target_wizard.py +293 -0
- agentcore/primitives/_gateway_validation.py +442 -0
- agentcore/primitives/_harness_cli.py +557 -0
- agentcore/primitives/_harness_validation.py +163 -0
- agentcore/primitives/_harness_wizard.py +726 -0
- agentcore/primitives/_knowledge_base_wizard.py +259 -0
- agentcore/primitives/_payment_wizard.py +331 -0
- agentcore/primitives/_policy_form.py +160 -0
- agentcore/primitives/agent.py +817 -0
- agentcore/primitives/auth_utils.py +77 -0
- agentcore/primitives/base.py +178 -0
- agentcore/primitives/capacity_provider.py +501 -0
- agentcore/primitives/config_bundle.py +329 -0
- agentcore/primitives/credential.py +387 -0
- agentcore/primitives/credential_utils.py +45 -0
- agentcore/primitives/dataset.py +211 -0
- agentcore/primitives/deployed_gateways.py +34 -0
- agentcore/primitives/evaluator.py +909 -0
- agentcore/primitives/gateway.py +496 -0
- agentcore/primitives/gateway_target.py +988 -0
- agentcore/primitives/harness.py +706 -0
- agentcore/primitives/knowledge_base.py +477 -0
- agentcore/primitives/memory.py +387 -0
- agentcore/primitives/online_eval_config.py +365 -0
- agentcore/primitives/online_insights.py +275 -0
- agentcore/primitives/payment_connector.py +427 -0
- agentcore/primitives/payment_eligible.py +20 -0
- agentcore/primitives/payment_manager.py +605 -0
- agentcore/primitives/payment_validation.py +68 -0
- agentcore/primitives/policy.py +622 -0
- agentcore/primitives/policy_engine.py +358 -0
- agentcore/primitives/registry.py +56 -0
- agentcore/primitives/runtime_endpoint.py +361 -0
- agentcore/primitives/secret_flag_warning.py +17 -0
- agentcore/schema/__init__.py +14 -0
- agentcore/schema/_zod.py +395 -0
- agentcore/schema/constants.py +306 -0
- agentcore/schema/schemas/__init__.py +40 -0
- agentcore/schema/schemas/agent_env.py +545 -0
- agentcore/schema/schemas/agentcore_project.py +530 -0
- agentcore/schema/schemas/auth.py +286 -0
- agentcore/schema/schemas/aws_targets.py +72 -0
- agentcore/schema/schemas/connections.py +187 -0
- agentcore/schema/schemas/deployed_state.py +322 -0
- agentcore/schema/schemas/mcp.py +650 -0
- agentcore/schema/schemas/mcp_defs.py +54 -0
- agentcore/schema/schemas/primitives/__init__.py +52 -0
- agentcore/schema/schemas/primitives/ab_test.py +162 -0
- agentcore/schema/schemas/primitives/capacity_provider.py +214 -0
- agentcore/schema/schemas/primitives/config_bundle.py +48 -0
- agentcore/schema/schemas/primitives/dataset.py +55 -0
- agentcore/schema/schemas/primitives/evaluator.py +171 -0
- agentcore/schema/schemas/primitives/harness.py +710 -0
- agentcore/schema/schemas/primitives/knowledge_base.py +90 -0
- agentcore/schema/schemas/primitives/memory.py +113 -0
- agentcore/schema/schemas/primitives/online_eval_config.py +77 -0
- agentcore/schema/schemas/primitives/payment.py +114 -0
- agentcore/schema/schemas/primitives/policy.py +83 -0
- agentcore/schema/schemas/primitives/tags.py +50 -0
- agentcore/schema/schemas/zod_util.py +5 -0
- agentcore/schema/types/__init__.py +3 -0
- agentcore/schema/types/path.py +16 -0
- agentcore/templates/__init__.py +115 -0
- agentcore/templates/_handlebars.py +782 -0
- agentcore/templates/_js.py +164 -0
- agentcore/templates/base_renderer.py +107 -0
- agentcore/templates/cdk_renderer.py +129 -0
- agentcore/templates/evaluator_renderer.py +39 -0
- agentcore/templates/gateway_target_renderer.py +69 -0
- agentcore/templates/llm_context/README.md +16 -0
- agentcore/templates/llm_context/agentcore.ts +685 -0
- agentcore/templates/llm_context/aws-targets.ts +51 -0
- agentcore/templates/profiles.py +151 -0
- agentcore/templates/render.py +92 -0
- agentcore/templates/renderers.py +83 -0
- agentcore/templates/schema_assets.py +23 -0
- agentcore/templates/template_root.py +28 -0
- agentcore/templates/types.py +192 -0
- agentcore_cli-0.31.1.dist-info/METADATA +84 -0
- agentcore_cli-0.31.1.dist-info/RECORD +655 -0
- agentcore_cli-0.31.1.dist-info/WHEEL +4 -0
- agentcore_cli-0.31.1.dist-info/entry_points.txt +2 -0
- agentcore_cli-0.31.1.dist-info/licenses/LICENSE +175 -0
- agentcore_cli-0.31.1.dist-info/licenses/NOTICE +88 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Pydantic ports of the upstream Zod schemas (port of ``src/schema/schemas/index.ts``).
|
|
2
|
+
|
|
3
|
+
Unlike upstream (which re-exports only a subset of primitives), every primitive is re-exported.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .agent_env import *
|
|
7
|
+
from .agent_env import __all__ as _agent_env
|
|
8
|
+
from .agentcore_project import *
|
|
9
|
+
from .agentcore_project import __all__ as _agentcore_project
|
|
10
|
+
from .auth import *
|
|
11
|
+
from .auth import __all__ as _auth
|
|
12
|
+
from .aws_targets import *
|
|
13
|
+
from .aws_targets import __all__ as _aws_targets
|
|
14
|
+
from .connections import *
|
|
15
|
+
from .connections import __all__ as _connections
|
|
16
|
+
from .deployed_state import *
|
|
17
|
+
from .deployed_state import __all__ as _deployed_state
|
|
18
|
+
from .mcp import *
|
|
19
|
+
from .mcp import __all__ as _mcp
|
|
20
|
+
from .mcp_defs import *
|
|
21
|
+
from .mcp_defs import __all__ as _mcp_defs
|
|
22
|
+
from .primitives import *
|
|
23
|
+
from .primitives import __all__ as _primitives
|
|
24
|
+
from .primitives.harness import *
|
|
25
|
+
from .primitives.harness import __all__ as _harness
|
|
26
|
+
from .zod_util import unique_by
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
*_agent_env,
|
|
30
|
+
*_agentcore_project,
|
|
31
|
+
*_auth,
|
|
32
|
+
*_aws_targets,
|
|
33
|
+
*_connections,
|
|
34
|
+
*_deployed_state,
|
|
35
|
+
*_mcp,
|
|
36
|
+
*_mcp_defs,
|
|
37
|
+
*_primitives,
|
|
38
|
+
*_harness,
|
|
39
|
+
"unique_by",
|
|
40
|
+
]
|
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
"""Agent runtimes, i.e. AgentEnvSpec (port of ``schemas/agent-env.ts``)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Annotated, Final, Literal, get_args
|
|
6
|
+
|
|
7
|
+
from pydantic import AfterValidator, Field, model_validator
|
|
8
|
+
|
|
9
|
+
from .._zod import Issue, StrictModel, ZBool, ZodModel, array_checks, js_regex, raise_issues, zint, zstr
|
|
10
|
+
from ..constants import (
|
|
11
|
+
MAX_CONTAINER_BUILD_SECURITY_GROUPS,
|
|
12
|
+
SECURITY_GROUP_ID_PATTERN,
|
|
13
|
+
SUBNET_ID_PATTERN,
|
|
14
|
+
VPC_ID_PATTERN,
|
|
15
|
+
NetworkMode,
|
|
16
|
+
ProtocolMode,
|
|
17
|
+
RuntimeVersion,
|
|
18
|
+
is_container_build,
|
|
19
|
+
)
|
|
20
|
+
from .auth import AuthorizerConfig, RuntimeAuthorizerType
|
|
21
|
+
from .connections import Connection
|
|
22
|
+
from .primitives.capacity_provider import CapacityProviderConfiguration, CapacityProviderVolumeName
|
|
23
|
+
from .primitives.tags import Tags
|
|
24
|
+
|
|
25
|
+
# ============================================================================
|
|
26
|
+
# Name Schemas
|
|
27
|
+
# ============================================================================
|
|
28
|
+
|
|
29
|
+
# https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateAgentRuntime.html
|
|
30
|
+
AgentName = zstr(
|
|
31
|
+
min=1,
|
|
32
|
+
max=48,
|
|
33
|
+
min_msg="Name is required",
|
|
34
|
+
pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
|
|
35
|
+
pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
EnvVarName = zstr(
|
|
39
|
+
min=1,
|
|
40
|
+
max=255,
|
|
41
|
+
pattern=r"^[A-Za-z_][A-Za-z0-9_]*$",
|
|
42
|
+
pattern_msg="Must start with a letter or underscore, contain only letters, digits, and underscores",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateGateway.html
|
|
46
|
+
GatewayName = zstr(
|
|
47
|
+
min=1,
|
|
48
|
+
max=100,
|
|
49
|
+
pattern=r"^[0-9a-zA-Z](?:[0-9a-zA-Z-]*[0-9a-zA-Z])?$",
|
|
50
|
+
pattern_msg="Gateway name must be alphanumeric with optional hyphens (max 100 chars)",
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# ============================================================================
|
|
54
|
+
# Common Types
|
|
55
|
+
# ============================================================================
|
|
56
|
+
|
|
57
|
+
# Access level for resource sharing.
|
|
58
|
+
Access = Literal["read", "readwrite"]
|
|
59
|
+
ACCESS_LEVELS: Final[tuple[Access, ...]] = get_args(Access)
|
|
60
|
+
|
|
61
|
+
AgentType = Literal["AgentCoreRuntime"]
|
|
62
|
+
|
|
63
|
+
BuildType = Literal["CodeZip", "Container"]
|
|
64
|
+
BUILD_TYPES: Final[tuple[BuildType, ...]] = get_args(BuildType)
|
|
65
|
+
|
|
66
|
+
# Python (main.py, main.py:handler) or TypeScript (main.ts, main.js, index.ts) entrypoint.
|
|
67
|
+
Entrypoint = zstr(
|
|
68
|
+
min=1,
|
|
69
|
+
pattern=r"^[a-zA-Z0-9_][a-zA-Z0-9_/.-]*\.(py|ts|js)(:[a-zA-Z_][a-zA-Z0-9_]*)?$",
|
|
70
|
+
pattern_msg=(
|
|
71
|
+
'Must be a Python (.py) or TypeScript (.ts/.js) file path with optional handler (e.g., "main.py:handler" '
|
|
72
|
+
'or "index.ts")'
|
|
73
|
+
),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
DirectoryPathStr = zstr(min=1)
|
|
77
|
+
|
|
78
|
+
# Char-safe set only: the buildspec interpolates this unquoted as `docker build -f $DOCKERFILE_PATH`.
|
|
79
|
+
_DOCKERFILE_PATH_ALLOWED_CHARS = js_regex(r"^[A-Za-z0-9._/-]+$")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def is_valid_dockerfile_path(p: str) -> bool:
|
|
83
|
+
"""Safe relative Dockerfile path within the build context.
|
|
84
|
+
|
|
85
|
+
Allowed chars only, no leading slash, and no empty ('' from leading/trailing/double slash) or
|
|
86
|
+
'..' segments. Shared by the schema and the runtime ``getDockerfilePath`` guard.
|
|
87
|
+
"""
|
|
88
|
+
if not _DOCKERFILE_PATH_ALLOWED_CHARS.search(p):
|
|
89
|
+
return False
|
|
90
|
+
if p.startswith("/"):
|
|
91
|
+
return False
|
|
92
|
+
return not any(segment in ("", "..") for segment in p.split("/"))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
DockerfilePath = zstr(
|
|
96
|
+
min=1,
|
|
97
|
+
max=255,
|
|
98
|
+
refines=(
|
|
99
|
+
(
|
|
100
|
+
is_valid_dockerfile_path,
|
|
101
|
+
(
|
|
102
|
+
"Must be a relative path within the build context: a filename or forward-slash subpath using only "
|
|
103
|
+
'letters, digits, dot, dash, underscore, and slash; no leading slash, no ".." traversal, and no empty '
|
|
104
|
+
"segments (no trailing or double slash)"
|
|
105
|
+
),
|
|
106
|
+
),
|
|
107
|
+
),
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
# Build-arg names reserved by the CodeBuild build environment (best-effort denylist).
|
|
111
|
+
RESERVED_BUILD_ARG_KEYS: Final[tuple[str, ...]] = (
|
|
112
|
+
# Buildspec control vars (mirrored in @aws/agentcore-cdk's ContainerBuildProject / build handler).
|
|
113
|
+
"ECR_REGISTRY",
|
|
114
|
+
"IMAGE_URI",
|
|
115
|
+
"DOCKERFILE_PATH",
|
|
116
|
+
"BUILD_ARG_FLAGS",
|
|
117
|
+
# Overriding these would break the buildspec's own commands or redirect the docker client.
|
|
118
|
+
"PATH",
|
|
119
|
+
"HOME",
|
|
120
|
+
"IFS",
|
|
121
|
+
"LD_PRELOAD",
|
|
122
|
+
"LD_LIBRARY_PATH",
|
|
123
|
+
"DOCKER_HOST",
|
|
124
|
+
"DOCKER_CONFIG",
|
|
125
|
+
"DOCKER_TLS_VERIFY",
|
|
126
|
+
"DOCKER_CERT_PATH",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def is_reserved_build_arg_key(key: str) -> bool:
|
|
131
|
+
return key in RESERVED_BUILD_ARG_KEYS or key.startswith(("CODEBUILD_", "AWS_"))
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
# Each value becomes a CodeBuild PLAINTEXT env override; control chars/overlong values break StartBuild.
|
|
135
|
+
BuildArgValue = zstr(
|
|
136
|
+
max=4096,
|
|
137
|
+
max_msg="Build arg values must be at most 4096 characters",
|
|
138
|
+
refines=(
|
|
139
|
+
(
|
|
140
|
+
lambda v: not any(ord(ch) < 0x20 or ord(ch) == 0x7F for ch in v),
|
|
141
|
+
"Build arg values must not contain control characters (including newlines)",
|
|
142
|
+
),
|
|
143
|
+
),
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class EnvVar(ZodModel):
|
|
148
|
+
name: EnvVarName
|
|
149
|
+
value: str
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class Instrumentation(ZodModel):
|
|
153
|
+
"""Runtime observability. ``enableOtel`` wraps the entrypoint with opentelemetry-instrument."""
|
|
154
|
+
|
|
155
|
+
enable_otel: ZBool = True
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class NetworkConfig(ZodModel):
|
|
159
|
+
"""VPC-mode network configuration (required when networkMode is VPC)."""
|
|
160
|
+
|
|
161
|
+
subnets: Annotated[
|
|
162
|
+
list[zstr(pattern=SUBNET_ID_PATTERN, pattern_msg="Must be a subnet id (subnet-...)")],
|
|
163
|
+
array_checks(min=1, max=16),
|
|
164
|
+
]
|
|
165
|
+
security_groups: Annotated[
|
|
166
|
+
list[zstr(pattern=SECURITY_GROUP_ID_PATTERN, pattern_msg="Must be a security group id (sg-...)")],
|
|
167
|
+
array_checks(min=1, max=16),
|
|
168
|
+
]
|
|
169
|
+
# Required for Container builds in VPC mode (CodeBuild cannot infer the VPC from subnets).
|
|
170
|
+
vpc_id: zstr(pattern=VPC_ID_PATTERN, pattern_msg="Must be a VPC id (vpc-...)") | None = None
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
# Allowed request headers: any valid HTTP header name that is not structurally reserved
|
|
174
|
+
# (x-amz-*, x-amzn-* except X-Amzn-Bedrock-AgentCore-Runtime-Custom-*). Max 20.
|
|
175
|
+
HEADER_ALLOWLIST_PREFIX: Final = "X-Amzn-Bedrock-AgentCore-Runtime-Custom-"
|
|
176
|
+
HEADER_NAME_PATTERN: Final = js_regex(r"^[A-Za-z0-9\-_]+$")
|
|
177
|
+
MAX_HEADER_ALLOWLIST_SIZE: Final = 20
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def check_allowlist_header(val: str) -> str | None:
|
|
181
|
+
"""Return None if ``val`` is a valid allowlist header name, else the violated rule's message."""
|
|
182
|
+
if not HEADER_NAME_PATTERN.search(val):
|
|
183
|
+
return f'Header name "{val}" must contain only alphanumeric characters, hyphens, and underscores.'
|
|
184
|
+
lower = val.lower()
|
|
185
|
+
if lower.startswith("x-amz-"):
|
|
186
|
+
return f'Header "{val}" is not allowed. Headers starting with "x-amz-" are reserved for AWS request signing.'
|
|
187
|
+
if lower.startswith("x-amzn-") and not lower.startswith("x-amzn-bedrock-agentcore-runtime-custom-"):
|
|
188
|
+
return (
|
|
189
|
+
f'Header "{val}" is not allowed. Headers starting with "x-amzn-" are reserved, except for '
|
|
190
|
+
'"X-Amzn-Bedrock-AgentCore-Runtime-Custom-*".'
|
|
191
|
+
)
|
|
192
|
+
return None
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def _check_header(val: str) -> str:
|
|
196
|
+
error = check_allowlist_header(val)
|
|
197
|
+
if error:
|
|
198
|
+
raise_issues([((), error)], val)
|
|
199
|
+
return val
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
RequestHeaderAllowlist = Annotated[
|
|
203
|
+
list[Annotated[str, AfterValidator(_check_header)]],
|
|
204
|
+
array_checks(max=MAX_HEADER_ALLOWLIST_SIZE, max_msg=f"Maximum {MAX_HEADER_ALLOWLIST_SIZE} headers allowed"),
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _mount_path(example: str) -> object:
|
|
209
|
+
return zstr(
|
|
210
|
+
min=6,
|
|
211
|
+
max=200,
|
|
212
|
+
pattern=r"^\/mnt\/[a-zA-Z0-9._-]+\/?$",
|
|
213
|
+
pattern_msg=f"Must be a path under /mnt with exactly one subdirectory (e.g. {example})",
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
SessionStorageMountPath = _mount_path("/mnt/data")
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
class SessionStorage(ZodModel):
|
|
221
|
+
"""Session-scoped filesystem persistence; files under mountPath survive stop/resume."""
|
|
222
|
+
|
|
223
|
+
mount_path: SessionStorageMountPath
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
EFS_ACCESS_POINT_ARN_PATTERN: Final = js_regex(
|
|
227
|
+
r"^arn:aws[-a-z]*:elasticfilesystem:[a-z][a-z0-9-]*:[0-9]{12}:access-point\/fsap-[0-9a-f]{8,40}$"
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
S3_FILES_ACCESS_POINT_ARN_PATTERN: Final = js_regex(
|
|
231
|
+
r"^arn:aws[-a-z]*:s3files:[a-z][a-z0-9-]*:[0-9]{12}:file-system\/fs-[0-9a-f]{17,40}\/access-point\/fsap-[0-9a-f]{17,40}$"
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class EfsAccessPointConfig(ZodModel):
|
|
236
|
+
"""EFS access point mount (requires VPC network mode)."""
|
|
237
|
+
|
|
238
|
+
access_point_arn: zstr(
|
|
239
|
+
pattern=EFS_ACCESS_POINT_ARN_PATTERN,
|
|
240
|
+
pattern_msg=(
|
|
241
|
+
"Must be an EFS access point ARN "
|
|
242
|
+
"(arn:aws[-a-z]*:elasticfilesystem:{region}:{account}:access-point/fsap-{id})"
|
|
243
|
+
),
|
|
244
|
+
)
|
|
245
|
+
mount_path: _mount_path("/mnt/tools")
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
class S3FilesAccessPointConfig(ZodModel):
|
|
249
|
+
"""S3 Files access point mount (requires VPC network mode)."""
|
|
250
|
+
|
|
251
|
+
access_point_arn: zstr(
|
|
252
|
+
pattern=S3_FILES_ACCESS_POINT_ARN_PATTERN,
|
|
253
|
+
pattern_msg=(
|
|
254
|
+
"Must be an S3 Files access point ARN "
|
|
255
|
+
"(arn:aws[-a-z]*:s3files:{region}:{account}:file-system/fs-{id}/access-point/fsap-{id})"
|
|
256
|
+
),
|
|
257
|
+
)
|
|
258
|
+
mount_path: _mount_path("/mnt/datasets")
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
class CapacityProviderVolumeConfig(ZodModel):
|
|
262
|
+
"""Mount of a named volume defined on the attached capacity provider."""
|
|
263
|
+
|
|
264
|
+
volume_name: CapacityProviderVolumeName
|
|
265
|
+
mount_path: _mount_path("/mnt/models")
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
MAX_EFS_MOUNTS: Final = 2
|
|
269
|
+
MAX_S3_MOUNTS: Final = 2
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class SessionStorageFilesystem(StrictModel):
|
|
273
|
+
session_storage: SessionStorage
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
class EfsAccessPointFilesystem(StrictModel):
|
|
277
|
+
efs_access_point: EfsAccessPointConfig
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
class S3FilesAccessPointFilesystem(StrictModel):
|
|
281
|
+
s3_files_access_point: S3FilesAccessPointConfig
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
class CapacityProviderVolumeFilesystem(StrictModel):
|
|
285
|
+
capacity_provider_volume: CapacityProviderVolumeConfig
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
# Exactly one key per entry. Service limits per runtime: max 5 total, max 1 sessionStorage, max
|
|
289
|
+
# MAX_EFS_MOUNTS efsAccessPoint, max MAX_S3_MOUNTS s3FilesAccessPoint.
|
|
290
|
+
FilesystemConfiguration = Annotated[
|
|
291
|
+
SessionStorageFilesystem
|
|
292
|
+
| EfsAccessPointFilesystem
|
|
293
|
+
| S3FilesAccessPointFilesystem
|
|
294
|
+
| CapacityProviderVolumeFilesystem,
|
|
295
|
+
Field(union_mode="left_to_right"),
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def filesystem_mount_path(fc: FilesystemConfiguration) -> str:
|
|
300
|
+
if isinstance(fc, SessionStorageFilesystem):
|
|
301
|
+
return fc.session_storage.mount_path
|
|
302
|
+
if isinstance(fc, EfsAccessPointFilesystem):
|
|
303
|
+
return fc.efs_access_point.mount_path
|
|
304
|
+
if isinstance(fc, S3FilesAccessPointFilesystem):
|
|
305
|
+
return fc.s3_files_access_point.mount_path
|
|
306
|
+
return fc.capacity_provider_volume.mount_path
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
def _strip_trailing_slash(p: str) -> str:
|
|
310
|
+
return p.removesuffix("/")
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
LIFECYCLE_TIMEOUT_MIN: Final = 60
|
|
314
|
+
LIFECYCLE_TIMEOUT_MAX: Final = 28800
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
class LifecycleConfiguration(ZodModel):
|
|
318
|
+
"""Idle timeout (API default 900s) and max lifetime (API default 28800s) of runtime sessions."""
|
|
319
|
+
|
|
320
|
+
idle_runtime_session_timeout: zint(ge=LIFECYCLE_TIMEOUT_MIN, le=LIFECYCLE_TIMEOUT_MAX) | None = None
|
|
321
|
+
max_lifetime: zint(ge=LIFECYCLE_TIMEOUT_MIN, le=LIFECYCLE_TIMEOUT_MAX) | None = None
|
|
322
|
+
|
|
323
|
+
@model_validator(mode="after")
|
|
324
|
+
def _refine(self) -> LifecycleConfiguration:
|
|
325
|
+
if (
|
|
326
|
+
self.idle_runtime_session_timeout is not None
|
|
327
|
+
and self.max_lifetime is not None
|
|
328
|
+
and self.idle_runtime_session_timeout > self.max_lifetime
|
|
329
|
+
):
|
|
330
|
+
raise_issues([(("idleRuntimeSessionTimeout",), "idleRuntimeSessionTimeout must be <= maxLifetime")], self)
|
|
331
|
+
return self
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
# ============================================================================
|
|
335
|
+
# Runtime Endpoint
|
|
336
|
+
# ============================================================================
|
|
337
|
+
|
|
338
|
+
RuntimeEndpointName = zstr(
|
|
339
|
+
min=1,
|
|
340
|
+
max=48,
|
|
341
|
+
min_msg="Endpoint name is required",
|
|
342
|
+
pattern=r"^[a-zA-Z][a-zA-Z0-9_]{0,47}$",
|
|
343
|
+
pattern_msg="Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)",
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
class RuntimeEndpoint(ZodModel):
|
|
348
|
+
# Version number this endpoint points to (>= 1).
|
|
349
|
+
version: zint(ge=1)
|
|
350
|
+
description: zstr(max=200) | None = None
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
_CONTAINER_ONLY_FIELDS: Final = (
|
|
354
|
+
("dockerfile", "dockerfile"),
|
|
355
|
+
("build_context_path", "buildContextPath"),
|
|
356
|
+
("custom_docker_build_args", "customDockerBuildArgs"),
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
class AgentEnvSpec(ZodModel):
|
|
361
|
+
"""An AgentCore Runtime (top-level resource in agentcore.json ``runtimes``)."""
|
|
362
|
+
|
|
363
|
+
name: AgentName
|
|
364
|
+
description: zstr(max=200) | None = None
|
|
365
|
+
build: BuildType
|
|
366
|
+
entrypoint: Entrypoint
|
|
367
|
+
code_location: DirectoryPathStr
|
|
368
|
+
# Container builds: Dockerfile relative to the build context. Default: 'Dockerfile'.
|
|
369
|
+
dockerfile: DockerfilePath | None = None
|
|
370
|
+
# Container builds: docker build context (instead of codeLocation); not containment-checked.
|
|
371
|
+
build_context_path: DirectoryPathStr | None = None
|
|
372
|
+
# Container builds: `--build-arg` flags (keys are env-var names).
|
|
373
|
+
custom_docker_build_args: dict[EnvVarName, BuildArgValue] | None = None
|
|
374
|
+
runtime_version: RuntimeVersion | None = None
|
|
375
|
+
env_vars: list[EnvVar] | None = None
|
|
376
|
+
network_mode: NetworkMode | None = None
|
|
377
|
+
network_config: NetworkConfig | None = None
|
|
378
|
+
instrumentation: Instrumentation | None = None
|
|
379
|
+
protocol: ProtocolMode | None = None
|
|
380
|
+
request_header_allowlist: RequestHeaderAllowlist | None = None
|
|
381
|
+
# ARN of an existing IAM execution role to use instead of creating a new one.
|
|
382
|
+
execution_role_arn: str | None = None
|
|
383
|
+
# Managed-policy ARNs or `.json` policy-document paths (relative to codeLocation).
|
|
384
|
+
additional_policies: list[zstr(min=1)] | None = None
|
|
385
|
+
authorizer_type: RuntimeAuthorizerType | None = None
|
|
386
|
+
authorizer_configuration: AuthorizerConfig | None = None
|
|
387
|
+
tags: Tags | None = None
|
|
388
|
+
lifecycle_configuration: LifecycleConfiguration | None = None
|
|
389
|
+
filesystem_configurations: list[FilesystemConfiguration] | None = None
|
|
390
|
+
# Named endpoints (version aliases); keys are endpoint names.
|
|
391
|
+
endpoints: dict[RuntimeEndpointName, RuntimeEndpoint] | None = None
|
|
392
|
+
connections: list[Connection] | None = None
|
|
393
|
+
# Attach to a capacity provider; mutually exclusive with VPC networking.
|
|
394
|
+
capacity_provider_configuration: CapacityProviderConfiguration | None = None
|
|
395
|
+
|
|
396
|
+
@model_validator(mode="after")
|
|
397
|
+
def _refine(self) -> AgentEnvSpec:
|
|
398
|
+
issues: list[Issue] = []
|
|
399
|
+
if self.network_mode == "VPC" and self.network_config is None:
|
|
400
|
+
issues.append((("networkConfig",), "networkConfig is required when networkMode is VPC"))
|
|
401
|
+
if self.network_mode != "VPC" and self.network_config is not None:
|
|
402
|
+
issues.append((("networkConfig",), "networkConfig is only allowed when networkMode is VPC"))
|
|
403
|
+
# A capacity provider supplies its own network topology: networkMode is not settable at all.
|
|
404
|
+
if self.capacity_provider_configuration is not None and (
|
|
405
|
+
self.network_mode is not None or self.network_config is not None
|
|
406
|
+
):
|
|
407
|
+
issues.append(
|
|
408
|
+
(
|
|
409
|
+
("capacityProviderConfiguration",),
|
|
410
|
+
(
|
|
411
|
+
"capacityProviderConfiguration cannot be combined with a networkMode or VPC networking — a "
|
|
412
|
+
"capacity provider supplies its own network topology, so leave networkMode/networkConfig unset"
|
|
413
|
+
),
|
|
414
|
+
)
|
|
415
|
+
)
|
|
416
|
+
# vpcId is intentionally NOT required here (old configs predate it; deploy backfills it).
|
|
417
|
+
if (
|
|
418
|
+
self.network_mode == "VPC"
|
|
419
|
+
and is_container_build(self)
|
|
420
|
+
and self.network_config is not None
|
|
421
|
+
and len(self.network_config.security_groups) > MAX_CONTAINER_BUILD_SECURITY_GROUPS
|
|
422
|
+
):
|
|
423
|
+
issues.append(
|
|
424
|
+
(
|
|
425
|
+
("networkConfig", "securityGroups"),
|
|
426
|
+
(
|
|
427
|
+
f"Container builds in VPC mode allow at most {MAX_CONTAINER_BUILD_SECURITY_GROUPS} security "
|
|
428
|
+
"groups (CodeBuild limit)"
|
|
429
|
+
),
|
|
430
|
+
)
|
|
431
|
+
)
|
|
432
|
+
jwt = self.authorizer_configuration.custom_jwt_authorizer if self.authorizer_configuration else None
|
|
433
|
+
if self.authorizer_type == "CUSTOM_JWT" and jwt is None:
|
|
434
|
+
issues.append(
|
|
435
|
+
(
|
|
436
|
+
("authorizerConfiguration",),
|
|
437
|
+
"authorizerConfiguration with customJwtAuthorizer is required when authorizerType is CUSTOM_JWT",
|
|
438
|
+
)
|
|
439
|
+
)
|
|
440
|
+
if self.authorizer_type != "CUSTOM_JWT" and self.authorizer_configuration is not None:
|
|
441
|
+
issues.append(
|
|
442
|
+
(
|
|
443
|
+
("authorizerConfiguration",),
|
|
444
|
+
"authorizerConfiguration is only allowed when authorizerType is CUSTOM_JWT",
|
|
445
|
+
)
|
|
446
|
+
)
|
|
447
|
+
for attr, key in _CONTAINER_ONLY_FIELDS:
|
|
448
|
+
if self.build != "Container" and getattr(self, attr):
|
|
449
|
+
issues.append(((key,), f"{key} is only allowed for Container builds"))
|
|
450
|
+
for key in self.custom_docker_build_args or {}:
|
|
451
|
+
if is_reserved_build_arg_key(key):
|
|
452
|
+
issues.append(
|
|
453
|
+
(
|
|
454
|
+
("customDockerBuildArgs", key),
|
|
455
|
+
(
|
|
456
|
+
f'customDockerBuildArgs key "{key}" is reserved by the build environment (must not be '
|
|
457
|
+
f"{', '.join(RESERVED_BUILD_ARG_KEYS)}, or start with CODEBUILD_ or AWS_)"
|
|
458
|
+
),
|
|
459
|
+
)
|
|
460
|
+
)
|
|
461
|
+
fcs = self.filesystem_configurations or []
|
|
462
|
+
if fcs:
|
|
463
|
+
issues.extend(self._filesystem_issues(fcs))
|
|
464
|
+
raise_issues(issues, self)
|
|
465
|
+
return self
|
|
466
|
+
|
|
467
|
+
def _filesystem_issues(self, fcs: list[FilesystemConfiguration]) -> list[Issue]:
|
|
468
|
+
path = ("filesystemConfigurations",)
|
|
469
|
+
issues: list[Issue] = []
|
|
470
|
+
efs = sum(isinstance(fc, EfsAccessPointFilesystem) for fc in fcs)
|
|
471
|
+
s3 = sum(isinstance(fc, S3FilesAccessPointFilesystem) for fc in fcs)
|
|
472
|
+
ss = sum(isinstance(fc, SessionStorageFilesystem) for fc in fcs)
|
|
473
|
+
cp_vol = sum(isinstance(fc, CapacityProviderVolumeFilesystem) for fc in fcs)
|
|
474
|
+
if cp_vol > 0 and self.capacity_provider_configuration is None:
|
|
475
|
+
issues.append(
|
|
476
|
+
(
|
|
477
|
+
path,
|
|
478
|
+
(
|
|
479
|
+
"capacityProviderVolume filesystem mounts require the runtime to be attached to a capacity "
|
|
480
|
+
"provider (set capacityProviderConfiguration)"
|
|
481
|
+
),
|
|
482
|
+
)
|
|
483
|
+
)
|
|
484
|
+
if len(fcs) > 5:
|
|
485
|
+
issues.append((path, "Maximum 5 filesystem configurations allowed"))
|
|
486
|
+
if efs > MAX_EFS_MOUNTS:
|
|
487
|
+
issues.append((path, f"Maximum {MAX_EFS_MOUNTS} efsAccessPoint configurations allowed"))
|
|
488
|
+
if s3 > MAX_S3_MOUNTS:
|
|
489
|
+
issues.append((path, f"Maximum {MAX_S3_MOUNTS} s3FilesAccessPoint configurations allowed"))
|
|
490
|
+
if ss > 1:
|
|
491
|
+
issues.append((path, "Maximum 1 sessionStorage configuration allowed"))
|
|
492
|
+
if (efs > 0 or s3 > 0) and self.network_mode != "VPC":
|
|
493
|
+
issues.append((path, "efsAccessPoint and s3FilesAccessPoint filesystem mounts require networkMode: VPC"))
|
|
494
|
+
mount_paths = [_strip_trailing_slash(filesystem_mount_path(fc)) for fc in fcs]
|
|
495
|
+
if len(set(mount_paths)) != len(mount_paths):
|
|
496
|
+
issues.append((path, "Filesystem mount paths must be unique"))
|
|
497
|
+
return issues
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
__all__ = [
|
|
501
|
+
"ACCESS_LEVELS",
|
|
502
|
+
"BUILD_TYPES",
|
|
503
|
+
"EFS_ACCESS_POINT_ARN_PATTERN",
|
|
504
|
+
"HEADER_ALLOWLIST_PREFIX",
|
|
505
|
+
"HEADER_NAME_PATTERN",
|
|
506
|
+
"LIFECYCLE_TIMEOUT_MAX",
|
|
507
|
+
"LIFECYCLE_TIMEOUT_MIN",
|
|
508
|
+
"MAX_EFS_MOUNTS",
|
|
509
|
+
"MAX_HEADER_ALLOWLIST_SIZE",
|
|
510
|
+
"MAX_S3_MOUNTS",
|
|
511
|
+
"RESERVED_BUILD_ARG_KEYS",
|
|
512
|
+
"S3_FILES_ACCESS_POINT_ARN_PATTERN",
|
|
513
|
+
"Access",
|
|
514
|
+
"AgentEnvSpec",
|
|
515
|
+
"AgentName",
|
|
516
|
+
"AgentType",
|
|
517
|
+
"BuildArgValue",
|
|
518
|
+
"BuildType",
|
|
519
|
+
"CapacityProviderVolumeConfig",
|
|
520
|
+
"CapacityProviderVolumeFilesystem",
|
|
521
|
+
"DirectoryPathStr",
|
|
522
|
+
"DockerfilePath",
|
|
523
|
+
"EfsAccessPointConfig",
|
|
524
|
+
"EfsAccessPointFilesystem",
|
|
525
|
+
"Entrypoint",
|
|
526
|
+
"EnvVar",
|
|
527
|
+
"EnvVarName",
|
|
528
|
+
"FilesystemConfiguration",
|
|
529
|
+
"GatewayName",
|
|
530
|
+
"Instrumentation",
|
|
531
|
+
"LifecycleConfiguration",
|
|
532
|
+
"NetworkConfig",
|
|
533
|
+
"RequestHeaderAllowlist",
|
|
534
|
+
"RuntimeEndpoint",
|
|
535
|
+
"RuntimeEndpointName",
|
|
536
|
+
"S3FilesAccessPointConfig",
|
|
537
|
+
"S3FilesAccessPointFilesystem",
|
|
538
|
+
"SessionStorage",
|
|
539
|
+
"SessionStorageFilesystem",
|
|
540
|
+
"SessionStorageMountPath",
|
|
541
|
+
"check_allowlist_header",
|
|
542
|
+
"filesystem_mount_path",
|
|
543
|
+
"is_reserved_build_arg_key",
|
|
544
|
+
"is_valid_dockerfile_path",
|
|
545
|
+
]
|