@aws/nx-plugin 1.0.0-rc.3 → 1.0.0-rc.31
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.
- package/LICENSE-THIRD-PARTY +6746 -6133
- package/README.md +7 -7
- package/executors.json +9 -0
- package/generators.json +100 -1
- package/package.json +35 -17
- package/src/agentcore-gateway/attach-upstream.d.ts +33 -0
- package/src/agentcore-gateway/attach-upstream.js +38 -0
- package/src/agentcore-gateway/attach-upstream.js.map +1 -0
- package/src/agentcore-gateway/files/cedar/policies/README.md +52 -0
- package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +11 -0
- package/src/agentcore-gateway/files/project/local-dev.ts.template +134 -0
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
- package/src/agentcore-gateway/gateway-connection/generator.js +101 -0
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
- package/src/agentcore-gateway/generator.d.ts +25 -0
- package/src/agentcore-gateway/generator.js +149 -0
- package/src/agentcore-gateway/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/mcp-connection/generator.js +59 -0
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
- package/src/agentcore-gateway/schema.d.js +6 -0
- package/src/agentcore-gateway/schema.d.js.map +1 -0
- package/src/agentcore-gateway/schema.d.ts +17 -0
- package/src/agentcore-gateway/schema.json +70 -0
- package/src/bin/aws-nx-mcp.js +14 -0
- package/src/bin/aws-nx-mcp.js.map +1 -0
- package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +7 -7
- package/src/connection/agent-local-dev.js +42 -0
- package/src/connection/agent-local-dev.js.map +1 -0
- package/src/connection/agent-runtime-config.d.ts +1 -1
- package/src/connection/agent-runtime-config.js +9 -14
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/generator.d.ts +7 -14
- package/src/connection/generator.js +158 -177
- package/src/connection/generator.js.map +1 -1
- package/src/connection/local-dev.d.ts +15 -0
- package/src/connection/local-dev.js +37 -0
- package/src/connection/local-dev.js.map +1 -0
- package/src/connection/schema.d.js +6 -0
- package/src/connection/schema.d.js.map +1 -0
- package/src/connection/schema.d.ts +1 -0
- package/src/connection/schema.json +5 -0
- package/src/connection/supported-connections.d.ts +98 -0
- package/src/connection/supported-connections.js +138 -0
- package/src/connection/supported-connections.js.map +1 -0
- package/src/index.js +2 -5
- package/src/index.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +51 -81
- package/src/infra/app/generator.d.ts +3 -3
- package/src/infra/app/generator.js +141 -123
- package/src/infra/app/generator.js.map +1 -1
- package/src/infra/app/schema.d.js +6 -0
- package/src/infra/app/schema.d.js.map +1 -0
- package/src/infra/app/schema.d.ts +1 -1
- package/src/infra/app/schema.json +5 -0
- package/src/license/__snapshots__/config.spec.ts.snap +23 -0
- package/src/license/config-types.d.ts +18 -1
- package/src/license/config-types.js +8 -2
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +65 -7
- package/src/license/config.js +442 -109
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +16 -0
- package/src/license/dependency-check/check.js +116 -0
- package/src/license/dependency-check/check.js.map +1 -0
- package/src/license/dependency-check/collectors/collector.d.ts +21 -0
- package/src/license/dependency-check/collectors/collector.js +46 -0
- package/src/license/dependency-check/collectors/collector.js.map +1 -0
- package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
- package/src/license/dependency-check/collectors/npm-collector.js +68 -0
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
- package/src/license/dependency-check/collectors/python-collector.d.ts +23 -0
- package/src/license/dependency-check/collectors/python-collector.js +114 -0
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
- package/src/license/dependency-check/evaluator.d.ts +9 -0
- package/src/license/dependency-check/evaluator.js +94 -0
- package/src/license/dependency-check/evaluator.js.map +1 -0
- package/src/license/dependency-check/executor-schema.json +6 -0
- package/src/license/dependency-check/executor.d.ts +9 -0
- package/src/license/dependency-check/executor.js +51 -0
- package/src/license/dependency-check/executor.js.map +1 -0
- package/src/license/dependency-check/pre-approved.d.ts +6 -0
- package/src/license/dependency-check/pre-approved.js +1893 -0
- package/src/license/dependency-check/pre-approved.js.map +1 -0
- package/src/license/dependency-check/types.d.ts +45 -0
- package/src/license/dependency-check/types.js +6 -0
- package/src/license/dependency-check/types.js.map +1 -0
- package/src/license/generator.d.ts +3 -3
- package/src/license/generator.js +127 -30
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +8 -0
- package/src/license/index.js +7 -0
- package/src/license/index.js.map +1 -0
- package/src/license/known-exceptions.d.ts +7 -0
- package/src/license/known-exceptions.js +39 -0
- package/src/license/known-exceptions.js.map +1 -0
- package/src/license/schema.d.js +6 -0
- package/src/license/schema.d.js.map +1 -0
- package/src/license/schema.d.ts +7 -0
- package/src/license/schema.json +11 -0
- package/src/license/sync/generator.d.ts +2 -2
- package/src/license/sync/generator.js +100 -125
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +3 -3
- package/src/license/sync/project-file-sync.js +28 -35
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/generator-info.d.ts +5 -1
- package/src/mcp-server/generator-info.js +130 -160
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.d.ts +1 -1
- package/src/mcp-server/guide-pipeline.js +184 -206
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/guide-render.js +10 -25
- package/src/mcp-server/guide-render.js.map +1 -1
- package/src/mcp-server/index.js +6 -10
- package/src/mcp-server/index.js.map +1 -1
- package/src/mcp-server/mdx-ast.js +42 -56
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/option-filter.js +33 -47
- package/src/mcp-server/option-filter.js.map +1 -1
- package/src/mcp-server/schema-registry.d.ts +9 -3
- package/src/mcp-server/schema-registry.js +41 -38
- package/src/mcp-server/schema-registry.js.map +1 -1
- package/src/mcp-server/schema.js +9 -7
- package/src/mcp-server/schema.js.map +1 -1
- package/src/mcp-server/server.js +20 -24
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.d.ts +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +23 -24
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.d.ts +2 -2
- package/src/mcp-server/tools/general-guidance.js +46 -25
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.d.ts +2 -2
- package/src/mcp-server/tools/generator-guide.js +29 -37
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.d.ts +2 -2
- package/src/mcp-server/tools/list-generators.js +19 -25
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
- package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +286 -62
- package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +674 -93
- package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +196 -44
- package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5507 -0
- package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +219 -60
- package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +351 -80
- package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +170 -49
- package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +99 -23
- package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
- package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +196 -44
- package/src/open-api/ts-client/files/client.gen.ts.template +130 -18
- package/src/open-api/ts-client/files/types.gen.ts.template +4 -4
- package/src/open-api/ts-client/generator.d.ts +3 -3
- package/src/open-api/ts-client/generator.js +16 -26
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-client/schema.d.js +6 -0
- package/src/open-api/ts-client/schema.d.js.map +1 -0
- package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +5 -0
- package/src/open-api/ts-hooks/generator.d.ts +3 -3
- package/src/open-api/ts-hooks/generator.js +13 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +84 -14
- package/src/open-api/ts-hooks/schema.d.js +6 -0
- package/src/open-api/ts-hooks/schema.d.js.map +1 -0
- package/src/open-api/ts-metadata/generator.d.ts +3 -3
- package/src/open-api/ts-metadata/generator.js +12 -20
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/ts-metadata/schema.d.js +6 -0
- package/src/open-api/ts-metadata/schema.d.js.map +1 -0
- package/src/open-api/utils/codegen-data/languages.d.ts +3 -5
- package/src/open-api/utils/codegen-data/languages.js +53 -66
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data/types.d.ts +240 -10
- package/src/open-api/utils/codegen-data/types.js +54 -30
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +8 -4
- package/src/open-api/utils/codegen-data.js +398 -674
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.d.ts +5 -1
- package/src/open-api/utils/normalise.js +386 -247
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.d.ts +2 -2
- package/src/open-api/utils/parse.js +11 -13
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/parser.d.ts +55 -0
- package/src/open-api/utils/parser.js +743 -0
- package/src/open-api/utils/parser.js.map +1 -0
- package/src/open-api/utils/refs.d.ts +1 -1
- package/src/open-api/utils/refs.js +12 -22
- package/src/open-api/utils/refs.js.map +1 -1
- package/src/open-api/utils/types.d.ts +15 -0
- package/src/open-api/utils/types.js +5 -2
- package/src/open-api/utils/types.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +160 -17
- package/src/preset/generator.d.ts +4 -4
- package/src/preset/generator.js +140 -112
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.js +6 -0
- package/src/preset/schema.d.js.map +1 -0
- package/src/preset/schema.d.ts +4 -2
- package/src/preset/schema.json +10 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +734 -0
- package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.protocols.spec.ts.snap} +80 -314
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +189 -0
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +30 -0
- package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +28 -0
- package/src/py/agent/a2a-connection/generator.d.ts +3 -3
- package/src/py/agent/a2a-connection/generator.js +113 -85
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/schema.d.js +8 -0
- package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/py/agent/a2a-connection/schema.d.ts +1 -0
- package/src/py/agent/a2a-connection/schema.json +5 -0
- package/src/py/agent/files/a2a-langchain/main.py.template +89 -0
- package/src/py/agent/files/ag-ui-langchain/main.py.template +83 -0
- package/src/py/agent/files/common/agent.py.template +2 -0
- package/src/py/agent/files/common-langchain/agent.py.template +30 -0
- package/src/py/agent/files/http/init.py.template +7 -25
- package/src/py/agent/files/http/main.py.template +2 -3
- package/src/py/agent/files/http-langchain/main.py.template +84 -0
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
- package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
- package/src/py/agent/gateway-connection/generator.d.ts +10 -0
- package/src/py/agent/gateway-connection/generator.js +119 -0
- package/src/py/agent/gateway-connection/generator.js.map +1 -0
- package/src/py/agent/gateway-connection/schema.d.js +6 -0
- package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/py/agent/gateway-connection/schema.d.ts +13 -0
- package/src/py/agent/gateway-connection/schema.json +31 -0
- package/src/py/agent/generator.d.ts +3 -3
- package/src/py/agent/generator.js +280 -180
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +153 -89
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +30 -0
- package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +30 -0
- package/src/py/agent/mcp-connection/generator.d.ts +3 -3
- package/src/py/agent/mcp-connection/generator.js +65 -126
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/schema.d.js +8 -0
- package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/py/agent/mcp-connection/schema.d.ts +1 -0
- package/src/py/agent/mcp-connection/schema.json +5 -0
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +11 -19
- package/src/py/agent/react-connection/generator.d.ts +4 -4
- package/src/py/agent/react-connection/generator.js +55 -59
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +6 -6
- package/src/py/agent/react-connection/local-dev.js +36 -0
- package/src/py/agent/react-connection/local-dev.js.map +1 -0
- package/src/py/agent/react-connection/schema.d.js +8 -0
- package/src/py/agent/react-connection/schema.d.js.map +1 -0
- package/src/py/agent/react-connection/schema.d.ts +1 -0
- package/src/py/agent/react-connection/schema.json +5 -0
- package/src/py/agent/schema.d.js +6 -0
- package/src/py/agent/schema.d.js.map +1 -0
- package/src/py/agent/schema.d.ts +2 -1
- package/src/py/agent/schema.json +6 -1
- package/src/py/api/generator.d.ts +3 -3
- package/src/py/api/generator.js +12 -11
- package/src/py/api/generator.js.map +1 -1
- package/src/py/api/schema.d.js +6 -0
- package/src/py/api/schema.d.js.map +1 -0
- package/src/py/api/schema.d.ts +1 -0
- package/src/py/api/schema.json +5 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1526 -0
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/agent-connection/generator.js +39 -0
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/agent-connection/schema.json +27 -0
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +37 -0
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
- package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
- package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
- package/src/py/dynamodb/files/__name__/client.py.template +39 -0
- package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
- package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
- package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
- package/src/py/dynamodb/files/config.json.template +24 -0
- package/src/py/dynamodb/generator.d.ts +10 -0
- package/src/py/dynamodb/generator.js +110 -0
- package/src/py/dynamodb/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +39 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
- package/src/py/dynamodb/schema.d.js +6 -0
- package/src/py/dynamodb/schema.d.js.map +1 -0
- package/src/py/dynamodb/schema.d.ts +16 -0
- package/src/py/dynamodb/schema.json +75 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +212 -4678
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
- package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
- package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
- package/src/py/fast-api/generator.d.ts +3 -3
- package/src/py/fast-api/generator.js +90 -87
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
- package/src/py/fast-api/react/generator.d.ts +4 -4
- package/src/py/fast-api/react/generator.js +25 -25
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.d.ts +1 -1
- package/src/py/fast-api/react/open-api.js +31 -29
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/fast-api/react/schema.d.js +6 -0
- package/src/py/fast-api/react/schema.d.js.map +1 -0
- package/src/py/fast-api/react/schema.d.ts +1 -0
- package/src/py/fast-api/react/schema.json +5 -0
- package/src/py/fast-api/schema.d.js +6 -0
- package/src/py/fast-api/schema.d.js.map +1 -0
- package/src/py/fast-api/schema.d.ts +1 -0
- package/src/py/fast-api/schema.json +5 -0
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/py/lambda-function/generator.d.ts +3 -3
- package/src/py/lambda-function/generator.js +60 -59
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.js +6 -0
- package/src/py/lambda-function/schema.d.js.map +1 -0
- package/src/py/lambda-function/schema.d.ts +1 -0
- package/src/py/lambda-function/schema.json +5 -0
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +87 -17
- package/src/py/mcp-server/generator.d.ts +3 -3
- package/src/py/mcp-server/generator.js +152 -125
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.js +6 -0
- package/src/py/mcp-server/schema.d.js.map +1 -0
- package/src/py/mcp-server/schema.d.ts +1 -0
- package/src/py/mcp-server/schema.json +5 -0
- package/src/py/project/generator.d.ts +17 -4
- package/src/py/project/generator.js +205 -127
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.d.js +6 -0
- package/src/py/project/schema.d.js.map +1 -0
- package/src/py/project/schema.d.ts +1 -0
- package/src/py/project/schema.json +5 -0
- package/src/sdk/agentcore-gateway.d.ts +6 -0
- package/src/sdk/agentcore-gateway.js +7 -0
- package/src/sdk/agentcore-gateway.js.map +1 -0
- package/src/sdk/connection.d.ts +6 -0
- package/src/sdk/connection.js +6 -0
- package/src/sdk/connection.js.map +1 -0
- package/src/sdk/license.d.ts +8 -0
- package/src/sdk/license.js +7 -0
- package/src/sdk/license.js.map +1 -0
- package/src/sdk/open-api.d.ts +10 -0
- package/src/sdk/open-api.js +8 -0
- package/src/sdk/open-api.js.map +1 -0
- package/src/sdk/py.d.ts +14 -0
- package/src/sdk/py.js +10 -0
- package/src/sdk/py.js.map +1 -0
- package/src/sdk/terraform.d.ts +6 -0
- package/src/sdk/terraform.js +7 -0
- package/src/sdk/terraform.js.map +1 -0
- package/src/sdk/ts.d.ts +33 -0
- package/src/sdk/ts.js +35 -0
- package/src/sdk/ts.js.map +1 -0
- package/{sdk → src/sdk}/utils/ast.d.ts +1 -2
- package/src/sdk/utils/ast.js +6 -0
- package/src/sdk/utils/ast.js.map +1 -0
- package/{sdk → src/sdk}/utils/format.d.ts +1 -1
- package/src/sdk/utils/format.js +6 -0
- package/src/sdk/utils/format.js.map +1 -0
- package/{sdk → src/sdk}/utils/test.d.ts +1 -1
- package/src/sdk/utils/test.js +6 -0
- package/src/sdk/utils/test.js.map +1 -0
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +19 -24
- package/src/smithy/project/files/build.Dockerfile.template +1 -4
- package/src/smithy/project/files/src/operations/echo.smithy.template +1 -0
- package/src/smithy/project/generator.d.ts +3 -3
- package/src/smithy/project/generator.js +64 -57
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/project/schema.d.js +6 -0
- package/src/smithy/project/schema.d.js.map +1 -0
- package/src/smithy/project/schema.d.ts +1 -0
- package/src/smithy/project/schema.json +5 -0
- package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/smithy/react-connection/generator.d.ts +3 -3
- package/src/smithy/react-connection/generator.js +39 -47
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/react-connection/schema.d.js +6 -0
- package/src/smithy/react-connection/schema.d.js.map +1 -0
- package/src/smithy/react-connection/schema.d.ts +1 -0
- package/src/smithy/react-connection/schema.json +5 -0
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +409 -106
- package/src/smithy/ts/api/generator.d.ts +3 -3
- package/src/smithy/ts/api/generator.js +127 -106
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.js +6 -0
- package/src/smithy/ts/api/schema.d.js.map +1 -0
- package/src/smithy/ts/api/schema.d.ts +1 -0
- package/src/smithy/ts/api/schema.json +5 -0
- package/src/terraform/project/files/application/src/main.tf.template +6 -1
- package/src/terraform/project/files/application/src/providers.tf.template +1 -1
- package/src/terraform/project/generator.d.ts +3 -3
- package/src/terraform/project/generator.js +156 -104
- package/src/terraform/project/generator.js.map +1 -1
- package/src/terraform/project/schema.d.js +9 -0
- package/src/terraform/project/schema.d.js.map +1 -0
- package/src/terraform/project/schema.d.ts +1 -0
- package/src/terraform/project/schema.json +5 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +499 -110
- package/src/trpc/backend/files/src/procedures/echo.ts.template +1 -1
- package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
- package/src/trpc/backend/generator.d.ts +4 -4
- package/src/trpc/backend/generator.js +97 -85
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.js +6 -0
- package/src/trpc/backend/schema.d.js.map +1 -0
- package/src/trpc/backend/schema.d.ts +3 -2
- package/src/trpc/backend/schema.json +5 -0
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
- package/src/trpc/react/generator.d.ts +4 -4
- package/src/trpc/react/generator.js +63 -58
- package/src/trpc/react/generator.js.map +1 -1
- package/src/trpc/react/schema.d.js +6 -0
- package/src/trpc/react/schema.d.js.map +1 -0
- package/src/trpc/react/schema.d.ts +1 -0
- package/src/trpc/react/schema.json +5 -0
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +656 -18
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +256 -0
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
- package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
- package/src/ts/agent/a2a-connection/generator.js +63 -56
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/schema.d.js +8 -0
- package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/ts/agent/a2a-connection/schema.d.ts +1 -0
- package/src/ts/agent/a2a-connection/schema.json +5 -0
- package/src/ts/agent/files/common/agent.ts.template +6 -2
- package/src/ts/agent/files/http/router.ts.template +1 -1
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +220 -0
- package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
- package/src/ts/agent/gateway-connection/generator.d.ts +10 -0
- package/src/ts/agent/gateway-connection/generator.js +114 -0
- package/src/ts/agent/gateway-connection/generator.js.map +1 -0
- package/src/ts/agent/gateway-connection/schema.d.js +6 -0
- package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
- package/src/ts/agent/gateway-connection/schema.json +31 -0
- package/src/ts/agent/generator.d.ts +3 -3
- package/src/ts/agent/generator.js +188 -144
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +192 -111
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +22 -0
- package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
- package/src/ts/agent/mcp-connection/generator.js +53 -60
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/schema.d.js +8 -0
- package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/ts/agent/mcp-connection/schema.d.ts +1 -0
- package/src/ts/agent/mcp-connection/schema.json +5 -0
- package/src/ts/agent/react-connection/generator.d.ts +4 -4
- package/src/ts/agent/react-connection/generator.js +86 -80
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
- package/src/ts/agent/react-connection/local-dev.js +17 -0
- package/src/ts/agent/react-connection/local-dev.js.map +1 -0
- package/src/ts/agent/react-connection/schema.d.js +8 -0
- package/src/ts/agent/react-connection/schema.d.js.map +1 -0
- package/src/ts/agent/react-connection/schema.d.ts +1 -0
- package/src/ts/agent/react-connection/schema.json +5 -0
- package/src/ts/agent/schema.d.js +6 -0
- package/src/ts/agent/schema.d.js.map +1 -0
- package/src/ts/agent/schema.d.ts +1 -0
- package/src/ts/agent/schema.json +5 -0
- package/src/ts/api/generator.d.ts +3 -3
- package/src/ts/api/generator.js +16 -16
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.js +6 -0
- package/src/ts/api/schema.d.js.map +1 -0
- package/src/ts/api/schema.d.ts +3 -1
- package/src/ts/api/schema.json +5 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +15 -16
- package/src/ts/astro-docs/generator.d.ts +3 -3
- package/src/ts/astro-docs/generator.js +69 -54
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/astro-docs/schema.d.js +6 -0
- package/src/ts/astro-docs/schema.d.js.map +1 -0
- package/src/ts/astro-docs/schema.d.ts +2 -2
- package/src/ts/astro-docs/schema.json +3 -3
- package/src/ts/docs/generator.d.ts +3 -3
- package/src/ts/docs/generator.js +10 -10
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/docs/schema.d.js +6 -0
- package/src/ts/docs/schema.d.js.map +1 -0
- package/src/ts/docs/schema.d.ts +1 -4
- package/src/ts/docs/schema.json +3 -3
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1390 -0
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/agent-connection/generator.js +30 -0
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.ts +15 -0
- package/src/ts/dynamodb/agent-connection/schema.json +27 -0
- package/src/ts/dynamodb/files/config.json.template +24 -0
- package/src/ts/dynamodb/files/src/client.ts.template +61 -0
- package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
- package/src/ts/dynamodb/files/src/index.ts.template +2 -0
- package/src/ts/dynamodb/generator.d.ts +10 -0
- package/src/ts/dynamodb/generator.js +116 -0
- package/src/ts/dynamodb/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +30 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +15 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +27 -0
- package/src/ts/dynamodb/schema.d.js +6 -0
- package/src/ts/dynamodb/schema.d.js.map +1 -0
- package/src/ts/dynamodb/schema.d.ts +16 -0
- package/src/ts/dynamodb/schema.json +75 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +28 -0
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.ts +13 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +23 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +28 -0
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.ts +13 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +23 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/lambda-function/generator.d.ts +3 -3
- package/src/ts/lambda-function/generator.js +59 -56
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/io.js +83 -52
- package/src/ts/lambda-function/io.js.map +1 -1
- package/src/ts/lambda-function/schema.d.js +6 -0
- package/src/ts/lambda-function/schema.d.js.map +1 -0
- package/src/ts/lambda-function/schema.d.ts +1 -0
- package/src/ts/lambda-function/schema.json +5 -0
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +53 -99
- package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +24 -0
- package/src/ts/lib/biome.d.ts +7 -0
- package/src/ts/lib/biome.js +58 -0
- package/src/ts/lib/biome.js.map +1 -0
- package/src/ts/lib/generator.d.ts +3 -3
- package/src/ts/lib/generator.js +96 -96
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
- package/src/ts/lib/schema.d.js +6 -0
- package/src/ts/lib/schema.d.js.map +1 -0
- package/src/ts/lib/schema.d.ts +1 -1
- package/src/ts/lib/schema.json +5 -0
- package/src/ts/lib/ts-project-utils.d.ts +12 -2
- package/src/ts/lib/ts-project-utils.js +80 -65
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/types.js +5 -2
- package/src/ts/lib/types.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +2 -2
- package/src/ts/lib/vitest.js +29 -26
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +83 -13
- package/src/ts/mcp-server/generator.d.ts +3 -3
- package/src/ts/mcp-server/generator.js +164 -120
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.js +6 -0
- package/src/ts/mcp-server/schema.d.js.map +1 -0
- package/src/ts/mcp-server/schema.d.ts +1 -0
- package/src/ts/mcp-server/schema.json +5 -0
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +46 -26
- package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
- package/src/ts/nx-generator/files/common/schema.json.template +5 -0
- package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
- package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
- package/src/ts/nx-generator/generator.d.ts +2 -2
- package/src/ts/nx-generator/generator.js +111 -74
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-generator/schema.d.js +6 -0
- package/src/ts/nx-generator/schema.d.js.map +1 -0
- package/src/ts/nx-generator/schema.d.ts +1 -0
- package/src/ts/nx-generator/schema.json +5 -0
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
- package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
- package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
- package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
- package/src/ts/nx-plugin/generator.d.ts +3 -3
- package/src/ts/nx-plugin/generator.js +60 -51
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/schema.d.js +9 -0
- package/src/ts/nx-plugin/schema.d.js.map +1 -0
- package/src/ts/nx-plugin/schema.json +5 -0
- package/src/ts/nx-plugin/utils.d.ts +1 -1
- package/src/ts/nx-plugin/utils.js +32 -38
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +312 -482
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/agent-connection/generator.d.ts +3 -3
- package/src/ts/rdb/agent-connection/generator.js +38 -39
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/agent-connection/schema.d.js +8 -0
- package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/agent-connection/schema.d.ts +1 -0
- package/src/ts/rdb/agent-connection/schema.json +5 -0
- package/src/ts/rdb/files/config.json.template +14 -0
- package/src/ts/rdb/files/prisma.config.ts.template +6 -5
- package/src/ts/rdb/files/src/create-db-user-handler.ts.template +7 -9
- package/src/ts/rdb/files/src/index.ts.template +0 -1
- package/src/ts/rdb/files/src/migration-handler.ts.template +1 -28
- package/src/ts/rdb/files/src/prisma.ts.template +28 -23
- package/src/ts/rdb/files/src/utils.ts.template +3 -0
- package/src/ts/rdb/generator.d.ts +3 -7
- package/src/ts/rdb/generator.js +158 -130
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/mcp-server-connection/generator.d.ts +3 -3
- package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -0
- package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
- package/src/ts/rdb/schema.d.js +6 -0
- package/src/ts/rdb/schema.d.js.map +1 -0
- package/src/ts/rdb/schema.d.ts +1 -0
- package/src/ts/rdb/schema.json +5 -0
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/smithy-connection/generator.d.ts +3 -3
- package/src/ts/rdb/smithy-connection/generator.js +46 -43
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
- package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
- package/src/ts/rdb/smithy-connection/schema.json +5 -0
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/trpc-connection/generator.d.ts +3 -3
- package/src/ts/rdb/trpc-connection/generator.js +36 -31
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
- package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
- package/src/ts/rdb/trpc-connection/schema.json +5 -0
- package/src/ts/rdb/utils.d.ts +1 -1
- package/src/ts/rdb/utils.js +9 -11
- package/src/ts/rdb/utils.js.map +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +1 -16
- package/src/ts/react-website/agui/generator.d.ts +1 -1
- package/src/ts/react-website/agui/generator.js +69 -62
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +626 -612
- package/src/ts/react-website/app/generator.d.ts +4 -4
- package/src/ts/react-website/app/generator.js +217 -192
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.js +6 -0
- package/src/ts/react-website/app/schema.d.js.map +1 -0
- package/src/ts/react-website/app/schema.d.ts +1 -1
- package/src/ts/react-website/app/schema.json +11 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +129 -18
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +36 -10
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
- package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
- package/src/ts/react-website/cognito-auth/generator.d.ts +4 -4
- package/src/ts/react-website/cognito-auth/generator.js +64 -63
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +8 -6
- package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +1 -1
- package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
- package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
- package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
- package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
- package/src/ts/react-website/cognito-auth/schema.d.ts +1 -0
- package/src/ts/react-website/cognito-auth/schema.json +5 -0
- package/src/ts/react-website/cognito-auth/utils.d.ts +1 -1
- package/src/ts/react-website/cognito-auth/utils.js +34 -32
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
- package/src/ts/react-website/runtime-config/generator.d.ts +3 -3
- package/src/ts/react-website/runtime-config/generator.js +29 -31
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/react-website/runtime-config/schema.d.js +6 -0
- package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
- package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
- package/src/ts/react-website/runtime-config/schema.json +5 -0
- package/src/ts/sync/generator.d.ts +3 -3
- package/src/ts/sync/generator.js +60 -59
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.d.ts +3 -3
- package/src/ts/website/app/generator.js +10 -10
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/app/schema.d.js +6 -0
- package/src/ts/website/app/schema.d.js.map +1 -0
- package/src/ts/website/app/schema.d.ts +1 -1
- package/src/ts/website/app/schema.json +11 -6
- package/src/ts/website/auth/generator.d.ts +4 -4
- package/src/ts/website/auth/generator.js +11 -10
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/ts/website/auth/schema.d.js +6 -0
- package/src/ts/website/auth/schema.d.js.map +1 -0
- package/src/ts/website/auth/schema.d.ts +1 -0
- package/src/ts/website/auth/schema.json +5 -0
- package/src/utils/agent-chat/agent-chat.d.ts +31 -0
- package/src/utils/agent-chat/agent-chat.js +29 -0
- package/src/utils/agent-chat/agent-chat.js.map +1 -0
- package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
- package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
- package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
- package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
- package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
- package/src/utils/agent-connection/agent-connection.d.ts +117 -25
- package/src/utils/agent-connection/agent-connection.js +411 -103
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
- package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +22 -32
- package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
- package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
- package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +36 -0
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
- package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
- package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
- package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
- package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +99 -0
- package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
- package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +5 -18
- package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +66 -0
- package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
- package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +11 -3
- package/src/utils/agent-core-constructs/agent-core-constructs.js +86 -38
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +4 -0
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +50 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +487 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +449 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +80 -12
- package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
- package/src/utils/api-constructs/api-constructs.d.ts +2 -2
- package/src/utils/api-constructs/api-constructs.js +30 -31
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +3 -0
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +23 -6
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +51 -15
- package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +94 -4
- package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
- package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
- package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
- package/src/utils/api-constructs/open-api-metadata.d.ts +2 -2
- package/src/utils/api-constructs/open-api-metadata.js +22 -22
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.d.ts +5 -1
- package/src/utils/ast/website.js +18 -20
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +33 -1
- package/src/utils/ast.js +130 -70
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +1 -1
- package/src/utils/bundle/bundle.js +50 -47
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.js +47 -26
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +5 -5
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +13 -3
- package/src/utils/config/utils.js +65 -43
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
- package/src/utils/connection/open-api/react.d.ts +6 -6
- package/src/utils/connection/open-api/react.js +81 -77
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.d.ts +1 -1
- package/src/utils/containers.js +22 -23
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +48 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +43 -0
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +72 -0
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
- package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +195 -0
- package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +106 -0
- package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
- package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
- package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +117 -0
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
- package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
- package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
- package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
- package/src/utils/format.d.ts +45 -2
- package/src/utils/format.js +323 -81
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +1 -1
- package/src/utils/fs.js +14 -13
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
- package/src/utils/function-constructs/function-constructs.d.ts +2 -2
- package/src/utils/function-constructs/function-constructs.js +21 -26
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/generators.d.ts +4 -0
- package/src/utils/generators.js +18 -20
- package/src/utils/generators.js.map +1 -1
- package/src/utils/git.d.ts +1 -1
- package/src/utils/git.js +19 -34
- package/src/utils/git.js.map +1 -1
- package/src/utils/iac-providers.js +5 -5
- package/src/utils/iac-providers.js.map +1 -1
- package/src/utils/iac.d.ts +1 -1
- package/src/utils/iac.js +12 -14
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +123 -14
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +106 -6
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
- package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
- package/src/utils/identity-constructs/identity-constructs.js +24 -28
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/install.d.ts +32 -0
- package/src/utils/install.js +56 -0
- package/src/utils/install.js.map +1 -0
- package/src/utils/js.d.ts +4 -0
- package/src/utils/js.js +27 -20
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.d.ts +25 -0
- package/src/utils/mcp.js +74 -0
- package/src/utils/mcp.js.map +1 -0
- package/src/utils/metrics.d.ts +9 -3
- package/src/utils/metrics.js +61 -46
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/mock-project-graph.js +8 -12
- package/src/utils/mock-project-graph.js.map +1 -1
- package/src/utils/names.d.ts +22 -0
- package/src/utils/names.js +44 -48
- package/src/utils/names.js.map +1 -1
- package/src/utils/npm-scope.d.ts +1 -1
- package/src/utils/npm-scope.js +9 -17
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +25 -4
- package/src/utils/nx.js +144 -75
- package/src/utils/nx.js.map +1 -1
- package/src/utils/nxlv-python.d.ts +1 -1
- package/src/utils/nxlv-python.js +27 -15
- package/src/utils/nxlv-python.js.map +1 -1
- package/src/utils/object.js +5 -11
- package/src/utils/object.js.map +1 -1
- package/src/utils/paths.d.ts +1 -1
- package/src/utils/paths.js +11 -15
- package/src/utils/paths.js.map +1 -1
- package/src/utils/pkg-manager.js +4 -9
- package/src/utils/pkg-manager.js.map +1 -1
- package/src/utils/pnpm-workspace.d.ts +1 -1
- package/src/utils/pnpm-workspace.js +22 -22
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.d.ts +31 -3
- package/src/utils/port.js +72 -12
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.d.ts +16 -3
- package/src/utils/py.js +72 -47
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +12 -2
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +35 -16
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +42 -48
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +31 -16
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +5 -4
- package/src/utils/rdb-constructs/rdb-constructs.js +31 -41
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.d.ts +1 -0
- package/src/utils/shared-constructs-constants.js +16 -15
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +2 -2
- package/src/utils/shared-constructs.js +57 -54
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +11 -0
- package/src/utils/shared-dynamodb-scripts.js +25 -0
- package/src/utils/shared-dynamodb-scripts.js.map +1 -0
- package/src/utils/shared-infra-config.d.ts +1 -1
- package/src/utils/shared-infra-config.js +30 -31
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +11 -0
- package/src/utils/shared-infra-scripts.js +40 -0
- package/src/utils/shared-infra-scripts.js.map +1 -0
- package/src/utils/shared-rdb-scripts.d.ts +16 -0
- package/src/utils/shared-rdb-scripts.js +28 -0
- package/src/utils/shared-rdb-scripts.js.map +1 -0
- package/src/utils/shared-scripts.d.ts +2 -5
- package/src/utils/shared-scripts.js +12 -38
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +1 -1
- package/src/utils/shared-shadcn.js +64 -72
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test.d.ts +13 -1
- package/src/utils/test.js +35 -23
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.d.ts +1 -1
- package/src/utils/toml.js +10 -14
- package/src/utils/toml.js.map +1 -1
- package/src/utils/versions.d.ts +116 -84
- package/src/utils/versions.js +124 -102
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +73 -5
- package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +68 -19
- package/src/utils/website-constructs/website-constructs.d.ts +2 -2
- package/src/utils/website-constructs/website-constructs.js +31 -30
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/bin/aws-nx-mcp.js +0 -17
- package/bin/aws-nx-mcp.js.map +0 -1
- package/sdk/connection.d.ts +0 -6
- package/sdk/connection.js +0 -10
- package/sdk/connection.js.map +0 -1
- package/sdk/open-api.d.ts +0 -10
- package/sdk/open-api.js +0 -15
- package/sdk/open-api.js.map +0 -1
- package/sdk/py.d.ts +0 -14
- package/sdk/py.js +0 -18
- package/sdk/py.js.map +0 -1
- package/sdk/terraform.d.ts +0 -6
- package/sdk/terraform.js +0 -11
- package/sdk/terraform.js.map +0 -1
- package/sdk/ts.d.ts +0 -29
- package/sdk/ts.js +0 -47
- package/sdk/ts.js.map +0 -1
- package/sdk/utils/ast.js +0 -12
- package/sdk/utils/ast.js.map +0 -1
- package/sdk/utils/format.js +0 -10
- package/sdk/utils/format.js.map +0 -1
- package/sdk/utils/test.js +0 -10
- package/sdk/utils/test.js.map +0 -1
- package/src/connection/agent-serve-local.js +0 -48
- package/src/connection/agent-serve-local.js.map +0 -1
- package/src/connection/serve-local.d.ts +0 -15
- package/src/connection/serve-local.js +0 -41
- package/src/connection/serve-local.js.map +0 -1
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
- package/src/py/agent/react-connection/serve-local.js +0 -30
- package/src/py/agent/react-connection/serve-local.js.map +0 -1
- package/src/py/agent/scripts/http/chat.ts.template +0 -38
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
- package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
- package/src/ts/agent/react-connection/serve-local.js +0 -19
- package/src/ts/agent/react-connection/serve-local.js.map +0 -1
- package/src/ts/agent/scripts/http/chat.ts.template +0 -35
- package/src/ts/lib/eslint.d.ts +0 -14
- package/src/ts/lib/eslint.js +0 -90
- package/src/ts/lib/eslint.js.map +0 -1
- package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +0 -1
- package/src/ts/rdb/files/scripts/docker-pull.ts.template +0 -15
- package/src/ts/rdb/files/scripts/docker-start.ts.template +0 -84
- package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
- package/src/ts/rdb/files/src/constants.ts.template +0 -8
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
- /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
- /package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +0 -0
- /package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +0 -0
- /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{infra-deploy.ts.template → infra/infra-deploy.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{infra-destroy.ts.template → infra/infra-destroy.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
|
@@ -281,7 +281,7 @@ import { EchoInputSchema, EchoOutputSchema } from '../schema/index.js';
|
|
|
281
281
|
export const echo = publicProcedure
|
|
282
282
|
.input(EchoInputSchema)
|
|
283
283
|
.output(EchoOutputSchema)
|
|
284
|
-
.query((opts) => ({
|
|
284
|
+
.query((opts) => ({ message: opts.input.message }));
|
|
285
285
|
"
|
|
286
286
|
`;
|
|
287
287
|
|
|
@@ -303,13 +303,13 @@ exports[`trpc backend generator > should generate the project > apps/test-api/sr
|
|
|
303
303
|
"import { z } from 'zod';
|
|
304
304
|
|
|
305
305
|
export const EchoInputSchema = z.object({
|
|
306
|
-
message: z.string(),
|
|
306
|
+
message: z.string().max(1024),
|
|
307
307
|
});
|
|
308
308
|
|
|
309
309
|
export type IEchoInput = z.TypeOf<typeof EchoInputSchema>;
|
|
310
310
|
|
|
311
311
|
export const EchoOutputSchema = z.object({
|
|
312
|
-
|
|
312
|
+
message: z.string().max(1024),
|
|
313
313
|
});
|
|
314
314
|
|
|
315
315
|
export type IEchoOutput = z.TypeOf<typeof EchoOutputSchema>;
|
|
@@ -478,6 +478,9 @@ export class TestApi<
|
|
|
478
478
|
authorizer: new CognitoUserPoolsAuthorizer(scope, 'TestApiAuthorizer', {
|
|
479
479
|
cognitoUserPools: [props.identity.userPool],
|
|
480
480
|
}),
|
|
481
|
+
// Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
|
|
482
|
+
// and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
|
|
483
|
+
authorizationScopes: ['openid', 'aws.cognito.signin.user.admin'],
|
|
481
484
|
},
|
|
482
485
|
deployOptions: {
|
|
483
486
|
tracingEnabled: true,
|
|
@@ -1199,15 +1202,18 @@ import {
|
|
|
1199
1202
|
HttpApiIntegration,
|
|
1200
1203
|
OperationDetails,
|
|
1201
1204
|
} from './utils.js';
|
|
1202
|
-
import { CfnOutput } from 'aws-cdk-lib';
|
|
1205
|
+
import { CfnOutput, Stack } from 'aws-cdk-lib';
|
|
1203
1206
|
import {
|
|
1204
1207
|
HttpApi as _HttpApi,
|
|
1205
1208
|
HttpApiProps as _HttpApiProps,
|
|
1206
1209
|
HttpMethod,
|
|
1207
1210
|
HttpStage,
|
|
1208
1211
|
LogGroupLogDestination,
|
|
1212
|
+
ThrottleSettings,
|
|
1209
1213
|
} from 'aws-cdk-lib/aws-apigatewayv2';
|
|
1210
1214
|
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
1215
|
+
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
1216
|
+
import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
1211
1217
|
import { suppressRules } from '../checkov.js';
|
|
1212
1218
|
|
|
1213
1219
|
/**
|
|
@@ -1232,6 +1238,12 @@ export interface HttpApiProps<
|
|
|
1232
1238
|
* Map of operation names to their API Gateway integrations
|
|
1233
1239
|
*/
|
|
1234
1240
|
readonly integrations: TIntegrations;
|
|
1241
|
+
/**
|
|
1242
|
+
* Default throttling limits applied to the API's default stage.
|
|
1243
|
+
*
|
|
1244
|
+
* @default { rateLimit: 10000, burstLimit: 5000 }
|
|
1245
|
+
*/
|
|
1246
|
+
readonly throttle?: ThrottleSettings;
|
|
1235
1247
|
}
|
|
1236
1248
|
|
|
1237
1249
|
/**
|
|
@@ -1265,6 +1277,7 @@ export class HttpApi<
|
|
|
1265
1277
|
apiName,
|
|
1266
1278
|
operations,
|
|
1267
1279
|
integrations,
|
|
1280
|
+
throttle = { rateLimit: 10000, burstLimit: 5000 },
|
|
1268
1281
|
...props
|
|
1269
1282
|
}: HttpApiProps<TIntegrations, TOperation>,
|
|
1270
1283
|
) {
|
|
@@ -1277,12 +1290,18 @@ export class HttpApi<
|
|
|
1277
1290
|
...props,
|
|
1278
1291
|
});
|
|
1279
1292
|
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1293
|
+
// Customer-managed key for access log encryption at rest
|
|
1294
|
+
const logsKey = new Key(this, 'AccessLogsKey', {
|
|
1295
|
+
enableKeyRotation: true,
|
|
1296
|
+
});
|
|
1297
|
+
const stack = Stack.of(this);
|
|
1298
|
+
logsKey.grantEncryptDecrypt(
|
|
1299
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
1285
1300
|
);
|
|
1301
|
+
|
|
1302
|
+
const accessLogGroup = new LogGroup(this, 'AccessLogs', {
|
|
1303
|
+
encryptionKey: logsKey,
|
|
1304
|
+
});
|
|
1286
1305
|
suppressRules(
|
|
1287
1306
|
accessLogGroup,
|
|
1288
1307
|
['CKV_AWS_66', 'CKV_AWS_338'],
|
|
@@ -1292,6 +1311,7 @@ export class HttpApi<
|
|
|
1292
1311
|
this.defaultStage = new HttpStage(this, 'DefaultStage', {
|
|
1293
1312
|
httpApi: this.api,
|
|
1294
1313
|
autoDeploy: true,
|
|
1314
|
+
throttle,
|
|
1295
1315
|
accessLogSettings: {
|
|
1296
1316
|
destination: new LogGroupLogDestination(accessLogGroup),
|
|
1297
1317
|
},
|
|
@@ -1751,6 +1771,8 @@ export type ApiIntegrations<TOperation extends string, TBaseIntegration> =
|
|
|
1751
1771
|
* @template TDefaultIntegrationProps - Type for default integration properties
|
|
1752
1772
|
* @template TDefaultIntegration - Type for default integration implementation
|
|
1753
1773
|
* @template TPattern - The integration pattern ('shared' or 'isolated')
|
|
1774
|
+
* @template TOverridden - Union of operation names that have been overridden
|
|
1775
|
+
* @template TOperationOptioned - Union of operation names with per-operation options
|
|
1754
1776
|
*/
|
|
1755
1777
|
export class IntegrationBuilder<
|
|
1756
1778
|
TOperation extends string,
|
|
@@ -1759,6 +1781,8 @@ export class IntegrationBuilder<
|
|
|
1759
1781
|
TDefaultIntegrationProps extends object,
|
|
1760
1782
|
TDefaultIntegration extends TBaseIntegration,
|
|
1761
1783
|
TPattern extends 'shared' | 'isolated',
|
|
1784
|
+
TOverridden extends string = never,
|
|
1785
|
+
TOperationOptioned extends string = never,
|
|
1762
1786
|
> {
|
|
1763
1787
|
/** Options for the integration builder */
|
|
1764
1788
|
private options: IntegrationBuilderProps<
|
|
@@ -1771,6 +1795,11 @@ export class IntegrationBuilder<
|
|
|
1771
1795
|
/** Map of operation names to their custom integrations */
|
|
1772
1796
|
private integrations: Partial<TIntegrations> = {};
|
|
1773
1797
|
|
|
1798
|
+
/** Map of default integration keys to per-operation default option overrides */
|
|
1799
|
+
private perOperationOptions: Partial<
|
|
1800
|
+
Record<string, Partial<TDefaultIntegrationProps>>
|
|
1801
|
+
> = {};
|
|
1802
|
+
|
|
1774
1803
|
/**
|
|
1775
1804
|
* Create an Integration Builder for an HTTP API with a shared pattern
|
|
1776
1805
|
*/
|
|
@@ -1925,11 +1954,16 @@ export class IntegrationBuilder<
|
|
|
1925
1954
|
/**
|
|
1926
1955
|
* Overrides default integrations with custom implementations for specific operations.
|
|
1927
1956
|
*
|
|
1957
|
+
* Operations which have per-operation options set via withOperationOptions cannot be
|
|
1958
|
+
* overridden, since these still use the default integration.
|
|
1959
|
+
*
|
|
1928
1960
|
* @param overrides - Map of operation names to their custom integration implementations
|
|
1929
1961
|
* @returns The builder instance with updated type information reflecting the overrides
|
|
1930
1962
|
*/
|
|
1931
1963
|
public withOverrides<
|
|
1932
|
-
TOverrideIntegrations extends Partial<
|
|
1964
|
+
TOverrideIntegrations extends Partial<
|
|
1965
|
+
Record<Exclude<TOperation, TOperationOptioned>, TBaseIntegration>
|
|
1966
|
+
>,
|
|
1933
1967
|
>(overrides: TOverrideIntegrations) {
|
|
1934
1968
|
this.integrations = { ...this.integrations, ...overrides };
|
|
1935
1969
|
// Re-type to include the overridden integration types.
|
|
@@ -1945,7 +1979,9 @@ export class IntegrationBuilder<
|
|
|
1945
1979
|
MergedIntegrations,
|
|
1946
1980
|
TDefaultIntegrationProps,
|
|
1947
1981
|
TDefaultIntegration,
|
|
1948
|
-
TPattern
|
|
1982
|
+
TPattern,
|
|
1983
|
+
TOverridden | Extract<keyof TOverrideIntegrations, string>,
|
|
1984
|
+
TOperationOptioned
|
|
1949
1985
|
>;
|
|
1950
1986
|
}
|
|
1951
1987
|
|
|
@@ -1964,6 +2000,43 @@ export class IntegrationBuilder<
|
|
|
1964
2000
|
return this;
|
|
1965
2001
|
}
|
|
1966
2002
|
|
|
2003
|
+
/**
|
|
2004
|
+
* Updates the default integration options for specific operations, without
|
|
2005
|
+
* affecting the others. The given options are merged with the defaults (and
|
|
2006
|
+
* any options set via withDefaultOptions) when building each default integration.
|
|
2007
|
+
*
|
|
2008
|
+
* Operations which have been replaced via withOverrides cannot be targeted, since
|
|
2009
|
+
* they no longer use the default integration.
|
|
2010
|
+
*
|
|
2011
|
+
* @param options - Map of operation names to partial default integration options
|
|
2012
|
+
* @returns The builder instance
|
|
2013
|
+
*/
|
|
2014
|
+
public withOperationOptions<
|
|
2015
|
+
TOptions extends Partial<
|
|
2016
|
+
Record<
|
|
2017
|
+
Exclude<DefaultIntegrationKeys<TPattern, TOperation>, TOverridden>,
|
|
2018
|
+
Partial<TDefaultIntegrationProps>
|
|
2019
|
+
>
|
|
2020
|
+
>,
|
|
2021
|
+
>(options: TOptions) {
|
|
2022
|
+
Object.entries(options).forEach(([op, opOptions]) => {
|
|
2023
|
+
this.perOperationOptions[op] = {
|
|
2024
|
+
...this.perOperationOptions[op],
|
|
2025
|
+
...(opOptions as Partial<TDefaultIntegrationProps>),
|
|
2026
|
+
};
|
|
2027
|
+
});
|
|
2028
|
+
return this as unknown as IntegrationBuilder<
|
|
2029
|
+
TOperation,
|
|
2030
|
+
TBaseIntegration,
|
|
2031
|
+
TIntegrations,
|
|
2032
|
+
TDefaultIntegrationProps,
|
|
2033
|
+
TDefaultIntegration,
|
|
2034
|
+
TPattern,
|
|
2035
|
+
TOverridden,
|
|
2036
|
+
TOperationOptioned | Extract<keyof TOptions, string>
|
|
2037
|
+
>;
|
|
2038
|
+
}
|
|
2039
|
+
|
|
1967
2040
|
/**
|
|
1968
2041
|
* Builds and returns the complete set of integrations.
|
|
1969
2042
|
*
|
|
@@ -1978,6 +2051,10 @@ export class IntegrationBuilder<
|
|
|
1978
2051
|
*/
|
|
1979
2052
|
public build(): TIntegrations {
|
|
1980
2053
|
const options = this.options;
|
|
2054
|
+
const buildOptionsFor = (op: string): TDefaultIntegrationProps => ({
|
|
2055
|
+
...options.defaultIntegrationOptions,
|
|
2056
|
+
...this.perOperationOptions[op],
|
|
2057
|
+
});
|
|
1981
2058
|
return {
|
|
1982
2059
|
...Object.fromEntries(
|
|
1983
2060
|
options.pattern === 'shared'
|
|
@@ -1986,7 +2063,7 @@ export class IntegrationBuilder<
|
|
|
1986
2063
|
'$router',
|
|
1987
2064
|
options.buildDefaultIntegration(
|
|
1988
2065
|
'$router',
|
|
1989
|
-
|
|
2066
|
+
buildOptionsFor('$router'),
|
|
1990
2067
|
),
|
|
1991
2068
|
],
|
|
1992
2069
|
]
|
|
@@ -1997,10 +2074,7 @@ export class IntegrationBuilder<
|
|
|
1997
2074
|
)
|
|
1998
2075
|
.map((op) => [
|
|
1999
2076
|
op,
|
|
2000
|
-
options.buildDefaultIntegration(
|
|
2001
|
-
op,
|
|
2002
|
-
options.defaultIntegrationOptions,
|
|
2003
|
-
),
|
|
2077
|
+
options.buildDefaultIntegration(op, buildOptionsFor(op)),
|
|
2004
2078
|
]),
|
|
2005
2079
|
),
|
|
2006
2080
|
...this.integrations,
|
|
@@ -2013,21 +2087,27 @@ export class IntegrationBuilder<
|
|
|
2013
2087
|
exports[`trpc backend generator > should set up shared constructs for rest > rest-api.ts 1`] = `
|
|
2014
2088
|
"import { Construct, IConstruct } from 'constructs';
|
|
2015
2089
|
import {
|
|
2090
|
+
AccessLogFormat,
|
|
2016
2091
|
Cors,
|
|
2092
|
+
LogGroupLogDestination,
|
|
2017
2093
|
Resource,
|
|
2018
2094
|
RestApi as _RestApi,
|
|
2019
2095
|
RestApiProps as _RestApiProps,
|
|
2020
2096
|
IResource,
|
|
2021
2097
|
Stage,
|
|
2098
|
+
ThrottleSettings,
|
|
2022
2099
|
} from 'aws-cdk-lib/aws-apigateway';
|
|
2023
|
-
import { IAspect,
|
|
2100
|
+
import { IAspect, Stack } from 'aws-cdk-lib';
|
|
2024
2101
|
import {
|
|
2025
2102
|
CfnLoggingConfiguration,
|
|
2026
2103
|
CfnWebACL,
|
|
2027
2104
|
CfnWebACLAssociation,
|
|
2028
2105
|
} from 'aws-cdk-lib/aws-wafv2';
|
|
2029
2106
|
import { LogGroup, RetentionDays } from 'aws-cdk-lib/aws-logs';
|
|
2107
|
+
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
2108
|
+
import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
2030
2109
|
import { RuntimeConfig } from '../runtime-config.js';
|
|
2110
|
+
import { ApiGatewayAccount } from './api-gateway-account.js';
|
|
2031
2111
|
import {
|
|
2032
2112
|
ApiIntegrations,
|
|
2033
2113
|
OperationDetails,
|
|
@@ -2065,6 +2145,12 @@ export interface RestApiProps<
|
|
|
2065
2145
|
* @default true
|
|
2066
2146
|
*/
|
|
2067
2147
|
readonly enableWaf?: boolean;
|
|
2148
|
+
/**
|
|
2149
|
+
* Default throttling limits applied to all methods on the API's default stage.
|
|
2150
|
+
*
|
|
2151
|
+
* @default { rateLimit: 10000, burstLimit: 5000 }
|
|
2152
|
+
*/
|
|
2153
|
+
readonly throttle?: ThrottleSettings;
|
|
2068
2154
|
}
|
|
2069
2155
|
|
|
2070
2156
|
/**
|
|
@@ -2099,14 +2185,49 @@ export class RestApi<
|
|
|
2099
2185
|
operations,
|
|
2100
2186
|
integrations,
|
|
2101
2187
|
enableWaf = true,
|
|
2188
|
+
throttle = { rateLimit: 10000, burstLimit: 5000 },
|
|
2102
2189
|
...props
|
|
2103
2190
|
}: RestApiProps<TIntegrations, TOperation>,
|
|
2104
2191
|
) {
|
|
2105
2192
|
super(scope, id);
|
|
2106
2193
|
this.integrations = integrations;
|
|
2107
2194
|
|
|
2195
|
+
// Account-level CloudWatch role required for REST API access logging
|
|
2196
|
+
const account = ApiGatewayAccount.ensure(this);
|
|
2197
|
+
|
|
2198
|
+
// KMS key for encrypting logs at rest, usable by CloudWatch Logs
|
|
2199
|
+
const logsKey = new Key(this, 'LogsKey', {
|
|
2200
|
+
enableKeyRotation: true,
|
|
2201
|
+
});
|
|
2202
|
+
logsKey.grantEncryptDecrypt(
|
|
2203
|
+
new ServicePrincipal(\`logs.\${Stack.of(this).region}.amazonaws.com\`),
|
|
2204
|
+
);
|
|
2205
|
+
|
|
2206
|
+
const accessLogs = new LogGroup(this, 'AccessLogs', {
|
|
2207
|
+
retention: RetentionDays.ONE_YEAR,
|
|
2208
|
+
encryptionKey: logsKey,
|
|
2209
|
+
});
|
|
2210
|
+
|
|
2108
2211
|
// Create the API Gateway REST API
|
|
2109
|
-
this.api = new _RestApi(this, 'Api',
|
|
2212
|
+
this.api = new _RestApi(this, 'Api', {
|
|
2213
|
+
...props,
|
|
2214
|
+
deployOptions: {
|
|
2215
|
+
accessLogDestination: new LogGroupLogDestination(accessLogs),
|
|
2216
|
+
accessLogFormat: AccessLogFormat.jsonWithStandardFields(),
|
|
2217
|
+
...props.deployOptions,
|
|
2218
|
+
methodOptions: {
|
|
2219
|
+
...props.deployOptions?.methodOptions,
|
|
2220
|
+
// Default throttling applied to all resource paths and methods
|
|
2221
|
+
'/*/*': {
|
|
2222
|
+
throttlingRateLimit: throttle.rateLimit,
|
|
2223
|
+
throttlingBurstLimit: throttle.burstLimit,
|
|
2224
|
+
...props.deployOptions?.methodOptions?.['/*/*'],
|
|
2225
|
+
},
|
|
2226
|
+
},
|
|
2227
|
+
},
|
|
2228
|
+
});
|
|
2229
|
+
// Ensure the account-level role is configured before the stage is created
|
|
2230
|
+
this.api.deploymentStage.node.addDependency(account.resource);
|
|
2110
2231
|
|
|
2111
2232
|
if (enableWaf) {
|
|
2112
2233
|
this.webAcl = new CfnWebACL(this, 'WebAcl', {
|
|
@@ -2173,14 +2294,9 @@ export class RestApi<
|
|
|
2173
2294
|
// \`aws-waf-logs-\` to satisfy the WAFv2 logging destination requirement.
|
|
2174
2295
|
const wafLogGroup = new LogGroup(this, 'WebAclLogs', {
|
|
2175
2296
|
logGroupName: \`aws-waf-logs-\${apiName}-\${this.node.addr.slice(-8)}\`,
|
|
2176
|
-
retention: RetentionDays.
|
|
2177
|
-
|
|
2297
|
+
retention: RetentionDays.ONE_YEAR,
|
|
2298
|
+
encryptionKey: logsKey,
|
|
2178
2299
|
});
|
|
2179
|
-
suppressRules(
|
|
2180
|
-
wafLogGroup,
|
|
2181
|
-
['CKV_AWS_158'],
|
|
2182
|
-
'Using default CloudWatch log encryption for WAF logs',
|
|
2183
|
-
);
|
|
2184
2300
|
|
|
2185
2301
|
new CfnLoggingConfiguration(this, 'WebAclLoggingConfig', {
|
|
2186
2302
|
resourceArn: this.webAcl.attrArn,
|
|
@@ -2194,12 +2310,6 @@ export class RestApi<
|
|
|
2194
2310
|
'Caching not required for this use case',
|
|
2195
2311
|
(c) => c instanceof Stage,
|
|
2196
2312
|
);
|
|
2197
|
-
suppressRules(
|
|
2198
|
-
this.api,
|
|
2199
|
-
['CKV_AWS_76'],
|
|
2200
|
-
'API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement',
|
|
2201
|
-
(c) => c instanceof Stage,
|
|
2202
|
-
);
|
|
2203
2313
|
|
|
2204
2314
|
// Resolve the integration for a given operation.
|
|
2205
2315
|
// If the operation has a dedicated integration, use it; otherwise fall back to $router.
|
|
@@ -2708,6 +2818,8 @@ export type ApiIntegrations<TOperation extends string, TBaseIntegration> =
|
|
|
2708
2818
|
* @template TDefaultIntegrationProps - Type for default integration properties
|
|
2709
2819
|
* @template TDefaultIntegration - Type for default integration implementation
|
|
2710
2820
|
* @template TPattern - The integration pattern ('shared' or 'isolated')
|
|
2821
|
+
* @template TOverridden - Union of operation names that have been overridden
|
|
2822
|
+
* @template TOperationOptioned - Union of operation names with per-operation options
|
|
2711
2823
|
*/
|
|
2712
2824
|
export class IntegrationBuilder<
|
|
2713
2825
|
TOperation extends string,
|
|
@@ -2716,6 +2828,8 @@ export class IntegrationBuilder<
|
|
|
2716
2828
|
TDefaultIntegrationProps extends object,
|
|
2717
2829
|
TDefaultIntegration extends TBaseIntegration,
|
|
2718
2830
|
TPattern extends 'shared' | 'isolated',
|
|
2831
|
+
TOverridden extends string = never,
|
|
2832
|
+
TOperationOptioned extends string = never,
|
|
2719
2833
|
> {
|
|
2720
2834
|
/** Options for the integration builder */
|
|
2721
2835
|
private options: IntegrationBuilderProps<
|
|
@@ -2728,6 +2842,11 @@ export class IntegrationBuilder<
|
|
|
2728
2842
|
/** Map of operation names to their custom integrations */
|
|
2729
2843
|
private integrations: Partial<TIntegrations> = {};
|
|
2730
2844
|
|
|
2845
|
+
/** Map of default integration keys to per-operation default option overrides */
|
|
2846
|
+
private perOperationOptions: Partial<
|
|
2847
|
+
Record<string, Partial<TDefaultIntegrationProps>>
|
|
2848
|
+
> = {};
|
|
2849
|
+
|
|
2731
2850
|
/**
|
|
2732
2851
|
* Create an Integration Builder for an HTTP API with a shared pattern
|
|
2733
2852
|
*/
|
|
@@ -2882,11 +3001,16 @@ export class IntegrationBuilder<
|
|
|
2882
3001
|
/**
|
|
2883
3002
|
* Overrides default integrations with custom implementations for specific operations.
|
|
2884
3003
|
*
|
|
3004
|
+
* Operations which have per-operation options set via withOperationOptions cannot be
|
|
3005
|
+
* overridden, since these still use the default integration.
|
|
3006
|
+
*
|
|
2885
3007
|
* @param overrides - Map of operation names to their custom integration implementations
|
|
2886
3008
|
* @returns The builder instance with updated type information reflecting the overrides
|
|
2887
3009
|
*/
|
|
2888
3010
|
public withOverrides<
|
|
2889
|
-
TOverrideIntegrations extends Partial<
|
|
3011
|
+
TOverrideIntegrations extends Partial<
|
|
3012
|
+
Record<Exclude<TOperation, TOperationOptioned>, TBaseIntegration>
|
|
3013
|
+
>,
|
|
2890
3014
|
>(overrides: TOverrideIntegrations) {
|
|
2891
3015
|
this.integrations = { ...this.integrations, ...overrides };
|
|
2892
3016
|
// Re-type to include the overridden integration types.
|
|
@@ -2902,7 +3026,9 @@ export class IntegrationBuilder<
|
|
|
2902
3026
|
MergedIntegrations,
|
|
2903
3027
|
TDefaultIntegrationProps,
|
|
2904
3028
|
TDefaultIntegration,
|
|
2905
|
-
TPattern
|
|
3029
|
+
TPattern,
|
|
3030
|
+
TOverridden | Extract<keyof TOverrideIntegrations, string>,
|
|
3031
|
+
TOperationOptioned
|
|
2906
3032
|
>;
|
|
2907
3033
|
}
|
|
2908
3034
|
|
|
@@ -2921,6 +3047,43 @@ export class IntegrationBuilder<
|
|
|
2921
3047
|
return this;
|
|
2922
3048
|
}
|
|
2923
3049
|
|
|
3050
|
+
/**
|
|
3051
|
+
* Updates the default integration options for specific operations, without
|
|
3052
|
+
* affecting the others. The given options are merged with the defaults (and
|
|
3053
|
+
* any options set via withDefaultOptions) when building each default integration.
|
|
3054
|
+
*
|
|
3055
|
+
* Operations which have been replaced via withOverrides cannot be targeted, since
|
|
3056
|
+
* they no longer use the default integration.
|
|
3057
|
+
*
|
|
3058
|
+
* @param options - Map of operation names to partial default integration options
|
|
3059
|
+
* @returns The builder instance
|
|
3060
|
+
*/
|
|
3061
|
+
public withOperationOptions<
|
|
3062
|
+
TOptions extends Partial<
|
|
3063
|
+
Record<
|
|
3064
|
+
Exclude<DefaultIntegrationKeys<TPattern, TOperation>, TOverridden>,
|
|
3065
|
+
Partial<TDefaultIntegrationProps>
|
|
3066
|
+
>
|
|
3067
|
+
>,
|
|
3068
|
+
>(options: TOptions) {
|
|
3069
|
+
Object.entries(options).forEach(([op, opOptions]) => {
|
|
3070
|
+
this.perOperationOptions[op] = {
|
|
3071
|
+
...this.perOperationOptions[op],
|
|
3072
|
+
...(opOptions as Partial<TDefaultIntegrationProps>),
|
|
3073
|
+
};
|
|
3074
|
+
});
|
|
3075
|
+
return this as unknown as IntegrationBuilder<
|
|
3076
|
+
TOperation,
|
|
3077
|
+
TBaseIntegration,
|
|
3078
|
+
TIntegrations,
|
|
3079
|
+
TDefaultIntegrationProps,
|
|
3080
|
+
TDefaultIntegration,
|
|
3081
|
+
TPattern,
|
|
3082
|
+
TOverridden,
|
|
3083
|
+
TOperationOptioned | Extract<keyof TOptions, string>
|
|
3084
|
+
>;
|
|
3085
|
+
}
|
|
3086
|
+
|
|
2924
3087
|
/**
|
|
2925
3088
|
* Builds and returns the complete set of integrations.
|
|
2926
3089
|
*
|
|
@@ -2935,6 +3098,10 @@ export class IntegrationBuilder<
|
|
|
2935
3098
|
*/
|
|
2936
3099
|
public build(): TIntegrations {
|
|
2937
3100
|
const options = this.options;
|
|
3101
|
+
const buildOptionsFor = (op: string): TDefaultIntegrationProps => ({
|
|
3102
|
+
...options.defaultIntegrationOptions,
|
|
3103
|
+
...this.perOperationOptions[op],
|
|
3104
|
+
});
|
|
2938
3105
|
return {
|
|
2939
3106
|
...Object.fromEntries(
|
|
2940
3107
|
options.pattern === 'shared'
|
|
@@ -2943,7 +3110,7 @@ export class IntegrationBuilder<
|
|
|
2943
3110
|
'$router',
|
|
2944
3111
|
options.buildDefaultIntegration(
|
|
2945
3112
|
'$router',
|
|
2946
|
-
|
|
3113
|
+
buildOptionsFor('$router'),
|
|
2947
3114
|
),
|
|
2948
3115
|
],
|
|
2949
3116
|
]
|
|
@@ -2954,10 +3121,7 @@ export class IntegrationBuilder<
|
|
|
2954
3121
|
)
|
|
2955
3122
|
.map((op) => [
|
|
2956
3123
|
op,
|
|
2957
|
-
options.buildDefaultIntegration(
|
|
2958
|
-
op,
|
|
2959
|
-
options.defaultIntegrationOptions,
|
|
2960
|
-
),
|
|
3124
|
+
options.buildDefaultIntegration(op, buildOptionsFor(op)),
|
|
2961
3125
|
]),
|
|
2962
3126
|
),
|
|
2963
3127
|
...this.integrations,
|
|
@@ -2978,7 +3142,7 @@ terraform {
|
|
|
2978
3142
|
required_providers {
|
|
2979
3143
|
aws = {
|
|
2980
3144
|
source = "hashicorp/aws"
|
|
2981
|
-
version = "
|
|
3145
|
+
version = "6.52.0"
|
|
2982
3146
|
}
|
|
2983
3147
|
}
|
|
2984
3148
|
}
|
|
@@ -3225,7 +3389,7 @@ output "api_log_group_arn" {
|
|
|
3225
3389
|
required_providers {
|
|
3226
3390
|
aws = {
|
|
3227
3391
|
source = "hashicorp/aws"
|
|
3228
|
-
version = "
|
|
3392
|
+
version = "6.52.0"
|
|
3229
3393
|
}
|
|
3230
3394
|
}
|
|
3231
3395
|
}
|
|
@@ -3293,12 +3457,6 @@ variable "cors_expose_headers" {
|
|
|
3293
3457
|
default = []
|
|
3294
3458
|
}
|
|
3295
3459
|
|
|
3296
|
-
variable "cors_max_age" {
|
|
3297
|
-
description = "Maximum age for CORS preflight requests in seconds"
|
|
3298
|
-
type = number
|
|
3299
|
-
default = 0
|
|
3300
|
-
}
|
|
3301
|
-
|
|
3302
3460
|
# Tags
|
|
3303
3461
|
variable "tags" {
|
|
3304
3462
|
description = "Tags to apply to all resources"
|
|
@@ -3349,7 +3507,6 @@ module "http_api" {
|
|
|
3349
3507
|
cors_allow_methods = var.cors_allow_methods
|
|
3350
3508
|
cors_allow_origins = var.cors_allow_origins
|
|
3351
3509
|
cors_expose_headers = var.cors_expose_headers
|
|
3352
|
-
cors_max_age = var.cors_max_age
|
|
3353
3510
|
|
|
3354
3511
|
# Tags
|
|
3355
3512
|
tags = var.tags
|
|
@@ -3631,7 +3788,7 @@ terraform {
|
|
|
3631
3788
|
required_providers {
|
|
3632
3789
|
aws = {
|
|
3633
3790
|
source = "hashicorp/aws"
|
|
3634
|
-
version = "
|
|
3791
|
+
version = "6.52.0"
|
|
3635
3792
|
}
|
|
3636
3793
|
}
|
|
3637
3794
|
}
|
|
@@ -3878,7 +4035,7 @@ output "api_log_group_arn" {
|
|
|
3878
4035
|
required_providers {
|
|
3879
4036
|
aws = {
|
|
3880
4037
|
source = "hashicorp/aws"
|
|
3881
|
-
version = "
|
|
4038
|
+
version = "6.52.0"
|
|
3882
4039
|
}
|
|
3883
4040
|
}
|
|
3884
4041
|
}
|
|
@@ -3936,12 +4093,6 @@ variable "cors_expose_headers" {
|
|
|
3936
4093
|
default = []
|
|
3937
4094
|
}
|
|
3938
4095
|
|
|
3939
|
-
variable "cors_max_age" {
|
|
3940
|
-
description = "Maximum age for CORS preflight requests in seconds"
|
|
3941
|
-
type = number
|
|
3942
|
-
default = 0
|
|
3943
|
-
}
|
|
3944
|
-
|
|
3945
4096
|
# Tags
|
|
3946
4097
|
variable "tags" {
|
|
3947
4098
|
description = "Tags to apply to all resources"
|
|
@@ -3992,7 +4143,6 @@ module "http_api" {
|
|
|
3992
4143
|
cors_allow_methods = var.cors_allow_methods
|
|
3993
4144
|
cors_allow_origins = var.cors_allow_origins
|
|
3994
4145
|
cors_expose_headers = var.cors_expose_headers
|
|
3995
|
-
cors_max_age = var.cors_max_age
|
|
3996
4146
|
|
|
3997
4147
|
# Tags
|
|
3998
4148
|
tags = var.tags
|
|
@@ -4356,7 +4506,7 @@ terraform {
|
|
|
4356
4506
|
required_providers {
|
|
4357
4507
|
aws = {
|
|
4358
4508
|
source = "hashicorp/aws"
|
|
4359
|
-
version = "
|
|
4509
|
+
version = "6.52.0"
|
|
4360
4510
|
}
|
|
4361
4511
|
}
|
|
4362
4512
|
}
|
|
@@ -4603,7 +4753,7 @@ output "api_log_group_arn" {
|
|
|
4603
4753
|
required_providers {
|
|
4604
4754
|
aws = {
|
|
4605
4755
|
source = "hashicorp/aws"
|
|
4606
|
-
version = "
|
|
4756
|
+
version = "6.52.0"
|
|
4607
4757
|
}
|
|
4608
4758
|
}
|
|
4609
4759
|
}
|
|
@@ -4661,12 +4811,6 @@ variable "cors_expose_headers" {
|
|
|
4661
4811
|
default = []
|
|
4662
4812
|
}
|
|
4663
4813
|
|
|
4664
|
-
variable "cors_max_age" {
|
|
4665
|
-
description = "Maximum age for CORS preflight requests in seconds"
|
|
4666
|
-
type = number
|
|
4667
|
-
default = 0
|
|
4668
|
-
}
|
|
4669
|
-
|
|
4670
4814
|
# Tags
|
|
4671
4815
|
variable "tags" {
|
|
4672
4816
|
description = "Tags to apply to all resources"
|
|
@@ -4717,7 +4861,6 @@ module "http_api" {
|
|
|
4717
4861
|
cors_allow_methods = var.cors_allow_methods
|
|
4718
4862
|
cors_allow_origins = var.cors_allow_origins
|
|
4719
4863
|
cors_expose_headers = var.cors_expose_headers
|
|
4720
|
-
cors_max_age = var.cors_max_age
|
|
4721
4864
|
|
|
4722
4865
|
# Tags
|
|
4723
4866
|
tags = var.tags
|
|
@@ -4986,11 +5129,11 @@ terraform {
|
|
|
4986
5129
|
required_providers {
|
|
4987
5130
|
aws = {
|
|
4988
5131
|
source = "hashicorp/aws"
|
|
4989
|
-
version = "
|
|
5132
|
+
version = "6.52.0"
|
|
4990
5133
|
}
|
|
4991
5134
|
random = {
|
|
4992
5135
|
source = "hashicorp/random"
|
|
4993
|
-
version = "
|
|
5136
|
+
version = "3.9.0"
|
|
4994
5137
|
}
|
|
4995
5138
|
}
|
|
4996
5139
|
}
|
|
@@ -5060,8 +5203,6 @@ data "aws_caller_identity" "current" {}
|
|
|
5060
5203
|
|
|
5061
5204
|
# Resources
|
|
5062
5205
|
|
|
5063
|
-
# Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
|
|
5064
|
-
|
|
5065
5206
|
# REST API Gateway
|
|
5066
5207
|
resource "aws_api_gateway_rest_api" "rest_api" {
|
|
5067
5208
|
name = var.api_name
|
|
@@ -5078,10 +5219,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
|
|
|
5078
5219
|
tags = var.tags
|
|
5079
5220
|
}
|
|
5080
5221
|
|
|
5081
|
-
# Note: Deployment and
|
|
5082
|
-
# after all methods and integrations are defined
|
|
5083
|
-
|
|
5084
|
-
# Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
|
|
5222
|
+
# Note: Deployment, stage and access logging are created in the consuming module
|
|
5223
|
+
# (e.g., foo-api.tf) after all methods and integrations are defined
|
|
5085
5224
|
|
|
5086
5225
|
# Gateway Response for CORS (4XX errors)
|
|
5087
5226
|
resource "aws_api_gateway_gateway_response" "cors_4xx" {
|
|
@@ -5239,16 +5378,14 @@ output "waf_web_acl_arn" {
|
|
|
5239
5378
|
value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
|
|
5240
5379
|
}
|
|
5241
5380
|
|
|
5242
|
-
# Note: Stage and
|
|
5243
|
-
|
|
5244
|
-
# Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
|
|
5381
|
+
# Note: Stage, deployment and access log outputs are provided by the consuming module",
|
|
5245
5382
|
"test-api.tf": "terraform {
|
|
5246
5383
|
required_version = ">= 1.0"
|
|
5247
5384
|
|
|
5248
5385
|
required_providers {
|
|
5249
5386
|
aws = {
|
|
5250
5387
|
source = "hashicorp/aws"
|
|
5251
|
-
version = "
|
|
5388
|
+
version = "6.52.0"
|
|
5252
5389
|
}
|
|
5253
5390
|
}
|
|
5254
5391
|
}
|
|
@@ -5347,6 +5484,11 @@ resource "aws_s3_object" "lambda_zip" {
|
|
|
5347
5484
|
}
|
|
5348
5485
|
|
|
5349
5486
|
# Use the core REST API module
|
|
5487
|
+
# Account-level CloudWatch role required for REST API access logging
|
|
5488
|
+
module "account" {
|
|
5489
|
+
source = "../../../core/api/api-gateway-account"
|
|
5490
|
+
}
|
|
5491
|
+
|
|
5350
5492
|
module "rest_api" {
|
|
5351
5493
|
source = "../../../core/api/rest-api"
|
|
5352
5494
|
|
|
@@ -5502,6 +5644,9 @@ resource "aws_api_gateway_method" "proxy_method" {
|
|
|
5502
5644
|
|
|
5503
5645
|
authorization = "COGNITO_USER_POOLS"
|
|
5504
5646
|
authorizer_id = aws_api_gateway_authorizer.cognito_authorizer.id
|
|
5647
|
+
# Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
|
|
5648
|
+
# and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
|
|
5649
|
+
authorization_scopes = ["openid", "aws.cognito.signin.user.admin"]
|
|
5505
5650
|
|
|
5506
5651
|
request_parameters = {
|
|
5507
5652
|
"method.request.path.proxy" = true
|
|
@@ -5588,11 +5733,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
|
|
|
5588
5733
|
]
|
|
5589
5734
|
}
|
|
5590
5735
|
|
|
5736
|
+
# KMS key for encrypting access logs at rest
|
|
5737
|
+
resource "aws_kms_key" "access_logs" {
|
|
5738
|
+
description = "TestApi API access log encryption"
|
|
5739
|
+
deletion_window_in_days = 7
|
|
5740
|
+
enable_key_rotation = true
|
|
5741
|
+
|
|
5742
|
+
policy = jsonencode({
|
|
5743
|
+
Version = "2012-10-17"
|
|
5744
|
+
Statement = [
|
|
5745
|
+
{
|
|
5746
|
+
Sid = "Enable IAM User Permissions"
|
|
5747
|
+
Effect = "Allow"
|
|
5748
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
5749
|
+
Action = "kms:*"
|
|
5750
|
+
Resource = "*"
|
|
5751
|
+
},
|
|
5752
|
+
{
|
|
5753
|
+
Sid = "Allow CloudWatch Logs"
|
|
5754
|
+
Effect = "Allow"
|
|
5755
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
5756
|
+
Action = [
|
|
5757
|
+
"kms:Encrypt",
|
|
5758
|
+
"kms:Decrypt",
|
|
5759
|
+
"kms:ReEncrypt*",
|
|
5760
|
+
"kms:GenerateDataKey*",
|
|
5761
|
+
"kms:DescribeKey"
|
|
5762
|
+
]
|
|
5763
|
+
Resource = "*"
|
|
5764
|
+
Condition = {
|
|
5765
|
+
ArnEquals = {
|
|
5766
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
5767
|
+
}
|
|
5768
|
+
}
|
|
5769
|
+
}
|
|
5770
|
+
]
|
|
5771
|
+
})
|
|
5772
|
+
|
|
5773
|
+
tags = var.tags
|
|
5774
|
+
}
|
|
5775
|
+
|
|
5776
|
+
resource "aws_kms_alias" "access_logs" {
|
|
5777
|
+
name = "alias/test-api-\${random_string.suffix.result}-access-logs"
|
|
5778
|
+
target_key_id = aws_kms_key.access_logs.key_id
|
|
5779
|
+
}
|
|
5780
|
+
|
|
5781
|
+
# Access logs for the API Gateway stage
|
|
5782
|
+
resource "aws_cloudwatch_log_group" "access_logs" {
|
|
5783
|
+
name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
5784
|
+
retention_in_days = 365
|
|
5785
|
+
kms_key_id = aws_kms_key.access_logs.arn
|
|
5786
|
+
tags = var.tags
|
|
5787
|
+
}
|
|
5788
|
+
|
|
5591
5789
|
# API Gateway stage
|
|
5592
5790
|
resource "aws_api_gateway_stage" "api_stage" {
|
|
5593
5791
|
#checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
|
|
5594
|
-
#checkov:skip=
|
|
5595
|
-
#checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
|
|
5792
|
+
#checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
|
|
5596
5793
|
#checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
|
|
5597
5794
|
#checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
|
|
5598
5795
|
deployment_id = aws_api_gateway_deployment.api_deployment.id
|
|
@@ -5600,9 +5797,39 @@ resource "aws_api_gateway_stage" "api_stage" {
|
|
|
5600
5797
|
stage_name = "prod"
|
|
5601
5798
|
xray_tracing_enabled = true
|
|
5602
5799
|
|
|
5800
|
+
access_log_settings {
|
|
5801
|
+
destination_arn = aws_cloudwatch_log_group.access_logs.arn
|
|
5802
|
+
format = jsonencode({
|
|
5803
|
+
requestId = "$context.requestId"
|
|
5804
|
+
ip = "$context.identity.sourceIp"
|
|
5805
|
+
caller = "$context.identity.caller"
|
|
5806
|
+
user = "$context.identity.user"
|
|
5807
|
+
requestTime = "$context.requestTime"
|
|
5808
|
+
httpMethod = "$context.httpMethod"
|
|
5809
|
+
resourcePath = "$context.resourcePath"
|
|
5810
|
+
status = "$context.status"
|
|
5811
|
+
protocol = "$context.protocol"
|
|
5812
|
+
responseLength = "$context.responseLength"
|
|
5813
|
+
})
|
|
5814
|
+
}
|
|
5815
|
+
|
|
5603
5816
|
tags = var.tags
|
|
5604
5817
|
|
|
5605
|
-
|
|
5818
|
+
# Ensure the account-level role is configured before the stage is created
|
|
5819
|
+
depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
|
|
5820
|
+
}
|
|
5821
|
+
|
|
5822
|
+
# Default throttling applied to all resource paths and methods
|
|
5823
|
+
resource "aws_api_gateway_method_settings" "throttling" {
|
|
5824
|
+
#checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
|
|
5825
|
+
rest_api_id = module.rest_api.api_id
|
|
5826
|
+
stage_name = aws_api_gateway_stage.api_stage.stage_name
|
|
5827
|
+
method_path = "*/*"
|
|
5828
|
+
|
|
5829
|
+
settings {
|
|
5830
|
+
throttling_rate_limit = 10000
|
|
5831
|
+
throttling_burst_limit = 5000
|
|
5832
|
+
}
|
|
5606
5833
|
}
|
|
5607
5834
|
|
|
5608
5835
|
# API Gateway Resource Policy
|
|
@@ -5782,11 +6009,11 @@ terraform {
|
|
|
5782
6009
|
required_providers {
|
|
5783
6010
|
aws = {
|
|
5784
6011
|
source = "hashicorp/aws"
|
|
5785
|
-
version = "
|
|
6012
|
+
version = "6.52.0"
|
|
5786
6013
|
}
|
|
5787
6014
|
random = {
|
|
5788
6015
|
source = "hashicorp/random"
|
|
5789
|
-
version = "
|
|
6016
|
+
version = "3.9.0"
|
|
5790
6017
|
}
|
|
5791
6018
|
}
|
|
5792
6019
|
}
|
|
@@ -5856,8 +6083,6 @@ data "aws_caller_identity" "current" {}
|
|
|
5856
6083
|
|
|
5857
6084
|
# Resources
|
|
5858
6085
|
|
|
5859
|
-
# Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
|
|
5860
|
-
|
|
5861
6086
|
# REST API Gateway
|
|
5862
6087
|
resource "aws_api_gateway_rest_api" "rest_api" {
|
|
5863
6088
|
name = var.api_name
|
|
@@ -5874,10 +6099,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
|
|
|
5874
6099
|
tags = var.tags
|
|
5875
6100
|
}
|
|
5876
6101
|
|
|
5877
|
-
# Note: Deployment and
|
|
5878
|
-
# after all methods and integrations are defined
|
|
5879
|
-
|
|
5880
|
-
# Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
|
|
6102
|
+
# Note: Deployment, stage and access logging are created in the consuming module
|
|
6103
|
+
# (e.g., foo-api.tf) after all methods and integrations are defined
|
|
5881
6104
|
|
|
5882
6105
|
# Gateway Response for CORS (4XX errors)
|
|
5883
6106
|
resource "aws_api_gateway_gateway_response" "cors_4xx" {
|
|
@@ -6035,16 +6258,14 @@ output "waf_web_acl_arn" {
|
|
|
6035
6258
|
value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
|
|
6036
6259
|
}
|
|
6037
6260
|
|
|
6038
|
-
# Note: Stage and
|
|
6039
|
-
|
|
6040
|
-
# Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
|
|
6261
|
+
# Note: Stage, deployment and access log outputs are provided by the consuming module",
|
|
6041
6262
|
"test-api.tf": "terraform {
|
|
6042
6263
|
required_version = ">= 1.0"
|
|
6043
6264
|
|
|
6044
6265
|
required_providers {
|
|
6045
6266
|
aws = {
|
|
6046
6267
|
source = "hashicorp/aws"
|
|
6047
|
-
version = "
|
|
6268
|
+
version = "6.52.0"
|
|
6048
6269
|
}
|
|
6049
6270
|
}
|
|
6050
6271
|
}
|
|
@@ -6133,6 +6354,11 @@ resource "aws_s3_object" "lambda_zip" {
|
|
|
6133
6354
|
}
|
|
6134
6355
|
|
|
6135
6356
|
# Use the core REST API module
|
|
6357
|
+
# Account-level CloudWatch role required for REST API access logging
|
|
6358
|
+
module "account" {
|
|
6359
|
+
source = "../../../core/api/api-gateway-account"
|
|
6360
|
+
}
|
|
6361
|
+
|
|
6136
6362
|
module "rest_api" {
|
|
6137
6363
|
source = "../../../core/api/rest-api"
|
|
6138
6364
|
|
|
@@ -6365,11 +6591,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
|
|
|
6365
6591
|
]
|
|
6366
6592
|
}
|
|
6367
6593
|
|
|
6594
|
+
# KMS key for encrypting access logs at rest
|
|
6595
|
+
resource "aws_kms_key" "access_logs" {
|
|
6596
|
+
description = "TestApi API access log encryption"
|
|
6597
|
+
deletion_window_in_days = 7
|
|
6598
|
+
enable_key_rotation = true
|
|
6599
|
+
|
|
6600
|
+
policy = jsonencode({
|
|
6601
|
+
Version = "2012-10-17"
|
|
6602
|
+
Statement = [
|
|
6603
|
+
{
|
|
6604
|
+
Sid = "Enable IAM User Permissions"
|
|
6605
|
+
Effect = "Allow"
|
|
6606
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
6607
|
+
Action = "kms:*"
|
|
6608
|
+
Resource = "*"
|
|
6609
|
+
},
|
|
6610
|
+
{
|
|
6611
|
+
Sid = "Allow CloudWatch Logs"
|
|
6612
|
+
Effect = "Allow"
|
|
6613
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
6614
|
+
Action = [
|
|
6615
|
+
"kms:Encrypt",
|
|
6616
|
+
"kms:Decrypt",
|
|
6617
|
+
"kms:ReEncrypt*",
|
|
6618
|
+
"kms:GenerateDataKey*",
|
|
6619
|
+
"kms:DescribeKey"
|
|
6620
|
+
]
|
|
6621
|
+
Resource = "*"
|
|
6622
|
+
Condition = {
|
|
6623
|
+
ArnEquals = {
|
|
6624
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
6625
|
+
}
|
|
6626
|
+
}
|
|
6627
|
+
}
|
|
6628
|
+
]
|
|
6629
|
+
})
|
|
6630
|
+
|
|
6631
|
+
tags = var.tags
|
|
6632
|
+
}
|
|
6633
|
+
|
|
6634
|
+
resource "aws_kms_alias" "access_logs" {
|
|
6635
|
+
name = "alias/test-api-\${random_string.suffix.result}-access-logs"
|
|
6636
|
+
target_key_id = aws_kms_key.access_logs.key_id
|
|
6637
|
+
}
|
|
6638
|
+
|
|
6639
|
+
# Access logs for the API Gateway stage
|
|
6640
|
+
resource "aws_cloudwatch_log_group" "access_logs" {
|
|
6641
|
+
name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
6642
|
+
retention_in_days = 365
|
|
6643
|
+
kms_key_id = aws_kms_key.access_logs.arn
|
|
6644
|
+
tags = var.tags
|
|
6645
|
+
}
|
|
6646
|
+
|
|
6368
6647
|
# API Gateway stage
|
|
6369
6648
|
resource "aws_api_gateway_stage" "api_stage" {
|
|
6370
6649
|
#checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
|
|
6371
|
-
#checkov:skip=
|
|
6372
|
-
#checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
|
|
6650
|
+
#checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
|
|
6373
6651
|
#checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
|
|
6374
6652
|
#checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
|
|
6375
6653
|
deployment_id = aws_api_gateway_deployment.api_deployment.id
|
|
@@ -6377,9 +6655,39 @@ resource "aws_api_gateway_stage" "api_stage" {
|
|
|
6377
6655
|
stage_name = "prod"
|
|
6378
6656
|
xray_tracing_enabled = true
|
|
6379
6657
|
|
|
6658
|
+
access_log_settings {
|
|
6659
|
+
destination_arn = aws_cloudwatch_log_group.access_logs.arn
|
|
6660
|
+
format = jsonencode({
|
|
6661
|
+
requestId = "$context.requestId"
|
|
6662
|
+
ip = "$context.identity.sourceIp"
|
|
6663
|
+
caller = "$context.identity.caller"
|
|
6664
|
+
user = "$context.identity.user"
|
|
6665
|
+
requestTime = "$context.requestTime"
|
|
6666
|
+
httpMethod = "$context.httpMethod"
|
|
6667
|
+
resourcePath = "$context.resourcePath"
|
|
6668
|
+
status = "$context.status"
|
|
6669
|
+
protocol = "$context.protocol"
|
|
6670
|
+
responseLength = "$context.responseLength"
|
|
6671
|
+
})
|
|
6672
|
+
}
|
|
6673
|
+
|
|
6380
6674
|
tags = var.tags
|
|
6381
6675
|
|
|
6382
|
-
|
|
6676
|
+
# Ensure the account-level role is configured before the stage is created
|
|
6677
|
+
depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
|
|
6678
|
+
}
|
|
6679
|
+
|
|
6680
|
+
# Default throttling applied to all resource paths and methods
|
|
6681
|
+
resource "aws_api_gateway_method_settings" "throttling" {
|
|
6682
|
+
#checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
|
|
6683
|
+
rest_api_id = module.rest_api.api_id
|
|
6684
|
+
stage_name = aws_api_gateway_stage.api_stage.stage_name
|
|
6685
|
+
method_path = "*/*"
|
|
6686
|
+
|
|
6687
|
+
settings {
|
|
6688
|
+
throttling_rate_limit = 10000
|
|
6689
|
+
throttling_burst_limit = 5000
|
|
6690
|
+
}
|
|
6383
6691
|
}
|
|
6384
6692
|
|
|
6385
6693
|
# API Gateway Resource Policy
|
|
@@ -6570,11 +6878,11 @@ terraform {
|
|
|
6570
6878
|
required_providers {
|
|
6571
6879
|
aws = {
|
|
6572
6880
|
source = "hashicorp/aws"
|
|
6573
|
-
version = "
|
|
6881
|
+
version = "6.52.0"
|
|
6574
6882
|
}
|
|
6575
6883
|
random = {
|
|
6576
6884
|
source = "hashicorp/random"
|
|
6577
|
-
version = "
|
|
6885
|
+
version = "3.9.0"
|
|
6578
6886
|
}
|
|
6579
6887
|
}
|
|
6580
6888
|
}
|
|
@@ -6644,8 +6952,6 @@ data "aws_caller_identity" "current" {}
|
|
|
6644
6952
|
|
|
6645
6953
|
# Resources
|
|
6646
6954
|
|
|
6647
|
-
# Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
|
|
6648
|
-
|
|
6649
6955
|
# REST API Gateway
|
|
6650
6956
|
resource "aws_api_gateway_rest_api" "rest_api" {
|
|
6651
6957
|
name = var.api_name
|
|
@@ -6662,10 +6968,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
|
|
|
6662
6968
|
tags = var.tags
|
|
6663
6969
|
}
|
|
6664
6970
|
|
|
6665
|
-
# Note: Deployment and
|
|
6666
|
-
# after all methods and integrations are defined
|
|
6667
|
-
|
|
6668
|
-
# Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
|
|
6971
|
+
# Note: Deployment, stage and access logging are created in the consuming module
|
|
6972
|
+
# (e.g., foo-api.tf) after all methods and integrations are defined
|
|
6669
6973
|
|
|
6670
6974
|
# Gateway Response for CORS (4XX errors)
|
|
6671
6975
|
resource "aws_api_gateway_gateway_response" "cors_4xx" {
|
|
@@ -6823,16 +7127,14 @@ output "waf_web_acl_arn" {
|
|
|
6823
7127
|
value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
|
|
6824
7128
|
}
|
|
6825
7129
|
|
|
6826
|
-
# Note: Stage and
|
|
6827
|
-
|
|
6828
|
-
# Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
|
|
7130
|
+
# Note: Stage, deployment and access log outputs are provided by the consuming module",
|
|
6829
7131
|
"test-api.tf": "terraform {
|
|
6830
7132
|
required_version = ">= 1.0"
|
|
6831
7133
|
|
|
6832
7134
|
required_providers {
|
|
6833
7135
|
aws = {
|
|
6834
7136
|
source = "hashicorp/aws"
|
|
6835
|
-
version = "
|
|
7137
|
+
version = "6.52.0"
|
|
6836
7138
|
}
|
|
6837
7139
|
}
|
|
6838
7140
|
}
|
|
@@ -6921,6 +7223,11 @@ resource "aws_s3_object" "lambda_zip" {
|
|
|
6921
7223
|
}
|
|
6922
7224
|
|
|
6923
7225
|
# Use the core REST API module
|
|
7226
|
+
# Account-level CloudWatch role required for REST API access logging
|
|
7227
|
+
module "account" {
|
|
7228
|
+
source = "../../../core/api/api-gateway-account"
|
|
7229
|
+
}
|
|
7230
|
+
|
|
6924
7231
|
module "rest_api" {
|
|
6925
7232
|
source = "../../../core/api/rest-api"
|
|
6926
7233
|
|
|
@@ -7247,11 +7554,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
|
|
|
7247
7554
|
]
|
|
7248
7555
|
}
|
|
7249
7556
|
|
|
7557
|
+
# KMS key for encrypting access logs at rest
|
|
7558
|
+
resource "aws_kms_key" "access_logs" {
|
|
7559
|
+
description = "TestApi API access log encryption"
|
|
7560
|
+
deletion_window_in_days = 7
|
|
7561
|
+
enable_key_rotation = true
|
|
7562
|
+
|
|
7563
|
+
policy = jsonencode({
|
|
7564
|
+
Version = "2012-10-17"
|
|
7565
|
+
Statement = [
|
|
7566
|
+
{
|
|
7567
|
+
Sid = "Enable IAM User Permissions"
|
|
7568
|
+
Effect = "Allow"
|
|
7569
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
7570
|
+
Action = "kms:*"
|
|
7571
|
+
Resource = "*"
|
|
7572
|
+
},
|
|
7573
|
+
{
|
|
7574
|
+
Sid = "Allow CloudWatch Logs"
|
|
7575
|
+
Effect = "Allow"
|
|
7576
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
7577
|
+
Action = [
|
|
7578
|
+
"kms:Encrypt",
|
|
7579
|
+
"kms:Decrypt",
|
|
7580
|
+
"kms:ReEncrypt*",
|
|
7581
|
+
"kms:GenerateDataKey*",
|
|
7582
|
+
"kms:DescribeKey"
|
|
7583
|
+
]
|
|
7584
|
+
Resource = "*"
|
|
7585
|
+
Condition = {
|
|
7586
|
+
ArnEquals = {
|
|
7587
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
7588
|
+
}
|
|
7589
|
+
}
|
|
7590
|
+
}
|
|
7591
|
+
]
|
|
7592
|
+
})
|
|
7593
|
+
|
|
7594
|
+
tags = var.tags
|
|
7595
|
+
}
|
|
7596
|
+
|
|
7597
|
+
resource "aws_kms_alias" "access_logs" {
|
|
7598
|
+
name = "alias/test-api-\${random_string.suffix.result}-access-logs"
|
|
7599
|
+
target_key_id = aws_kms_key.access_logs.key_id
|
|
7600
|
+
}
|
|
7601
|
+
|
|
7602
|
+
# Access logs for the API Gateway stage
|
|
7603
|
+
resource "aws_cloudwatch_log_group" "access_logs" {
|
|
7604
|
+
name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
|
|
7605
|
+
retention_in_days = 365
|
|
7606
|
+
kms_key_id = aws_kms_key.access_logs.arn
|
|
7607
|
+
tags = var.tags
|
|
7608
|
+
}
|
|
7609
|
+
|
|
7250
7610
|
# API Gateway stage
|
|
7251
7611
|
resource "aws_api_gateway_stage" "api_stage" {
|
|
7252
7612
|
#checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
|
|
7253
|
-
#checkov:skip=
|
|
7254
|
-
#checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
|
|
7613
|
+
#checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
|
|
7255
7614
|
#checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
|
|
7256
7615
|
#checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
|
|
7257
7616
|
deployment_id = aws_api_gateway_deployment.api_deployment.id
|
|
@@ -7259,9 +7618,39 @@ resource "aws_api_gateway_stage" "api_stage" {
|
|
|
7259
7618
|
stage_name = "prod"
|
|
7260
7619
|
xray_tracing_enabled = true
|
|
7261
7620
|
|
|
7621
|
+
access_log_settings {
|
|
7622
|
+
destination_arn = aws_cloudwatch_log_group.access_logs.arn
|
|
7623
|
+
format = jsonencode({
|
|
7624
|
+
requestId = "$context.requestId"
|
|
7625
|
+
ip = "$context.identity.sourceIp"
|
|
7626
|
+
caller = "$context.identity.caller"
|
|
7627
|
+
user = "$context.identity.user"
|
|
7628
|
+
requestTime = "$context.requestTime"
|
|
7629
|
+
httpMethod = "$context.httpMethod"
|
|
7630
|
+
resourcePath = "$context.resourcePath"
|
|
7631
|
+
status = "$context.status"
|
|
7632
|
+
protocol = "$context.protocol"
|
|
7633
|
+
responseLength = "$context.responseLength"
|
|
7634
|
+
})
|
|
7635
|
+
}
|
|
7636
|
+
|
|
7262
7637
|
tags = var.tags
|
|
7263
7638
|
|
|
7264
|
-
|
|
7639
|
+
# Ensure the account-level role is configured before the stage is created
|
|
7640
|
+
depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
|
|
7641
|
+
}
|
|
7642
|
+
|
|
7643
|
+
# Default throttling applied to all resource paths and methods
|
|
7644
|
+
resource "aws_api_gateway_method_settings" "throttling" {
|
|
7645
|
+
#checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
|
|
7646
|
+
rest_api_id = module.rest_api.api_id
|
|
7647
|
+
stage_name = aws_api_gateway_stage.api_stage.stage_name
|
|
7648
|
+
method_path = "*/*"
|
|
7649
|
+
|
|
7650
|
+
settings {
|
|
7651
|
+
throttling_rate_limit = 10000
|
|
7652
|
+
throttling_burst_limit = 5000
|
|
7653
|
+
}
|
|
7265
7654
|
}
|
|
7266
7655
|
|
|
7267
7656
|
# API Gateway Resource Policy
|