konokenj.cdk-api-mcp-server 0.69.0__py3-none-any.whl → 0.71.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +146 -10
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md +25 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +18 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md +54 -34
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +81 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.canary-deployment-strategy.ts +117 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.linear-deployment-strategy.ts +117 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md +14 -11
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +15 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-deletionprotection.ts +14 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/README.md +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/ORIGINAL_API.md +1 -1
- {konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/RECORD +21 -18
- {konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md
CHANGED
|
@@ -155,7 +155,7 @@ to production by simply updating the endpoint to point to the newer version.
|
|
|
155
155
|
|
|
156
156
|
| Name | Type | Required | Description |
|
|
157
157
|
|------|------|----------|-------------|
|
|
158
|
-
| `runtimeName` | `string` |
|
|
158
|
+
| `runtimeName` | `string` | No | The name of the agent runtime. Valid characters are a-z, A-Z, 0-9, _ (underscore). Must start with a letter and can be up to 48 characters long. If not provided, a unique name will be auto-generated |
|
|
159
159
|
| `agentRuntimeArtifact` | `AgentRuntimeArtifact` | Yes | The artifact configuration for the agent runtime containing the container configuration with ECR URI |
|
|
160
160
|
| `executionRole` | `iam.IRole` | No | The IAM role that provides permissions for the agent runtime. If not provided, a role will be created automatically |
|
|
161
161
|
| `networkConfiguration` | `NetworkConfiguration` | No | Network configuration for the agent runtime. Defaults to `RuntimeNetworkConfiguration.usingPublicNetwork()` |
|
|
@@ -171,7 +171,7 @@ to production by simply updating the endpoint to point to the newer version.
|
|
|
171
171
|
|
|
172
172
|
| Name | Type | Required | Description |
|
|
173
173
|
|------|------|----------|-------------|
|
|
174
|
-
| `endpointName` | `string` |
|
|
174
|
+
| `endpointName` | `string` | No | The name of the runtime endpoint. Valid characters are a-z, A-Z, 0-9, _ (underscore). Must start with a letter and can be up to 48 characters long. If not provided, a unique name will be auto-generated |
|
|
175
175
|
| `agentRuntimeId` | `string` | Yes | The Agent Runtime ID for this endpoint |
|
|
176
176
|
| `agentRuntimeVersion` | `string` | Yes | The Agent Runtime version for this endpoint. Must be between 1 and 5 characters long.|
|
|
177
177
|
| `description` | `string` | No | Optional description for the runtime endpoint |
|
|
@@ -748,7 +748,7 @@ For more information on VPC connectivity for Amazon Bedrock AgentCore Browser, p
|
|
|
748
748
|
|
|
749
749
|
| Name | Type | Required | Description |
|
|
750
750
|
|------|------|----------|-------------|
|
|
751
|
-
| `browserCustomName` | `string` |
|
|
751
|
+
| `browserCustomName` | `string` | No | The name of the browser. Must start with a letter and can be up to 48 characters long. Pattern: `[a-zA-Z][a-zA-Z0-9_]{0,47}`. If not provided, a unique name will be auto-generated |
|
|
752
752
|
| `description` | `string` | No | Optional description for the browser. Can have up to 200 characters |
|
|
753
753
|
| `networkConfiguration` | `BrowserNetworkConfiguration` | No | Network configuration for browser. Defaults to PUBLIC network mode |
|
|
754
754
|
| `recordingConfig` | `RecordingConfig` | No | Recording configuration for browser. Defaults to no recording |
|
|
@@ -959,7 +959,7 @@ For more information on VPC connectivity for Amazon Bedrock AgentCore Browser, p
|
|
|
959
959
|
|
|
960
960
|
| Name | Type | Required | Description |
|
|
961
961
|
|------|------|----------|-------------|
|
|
962
|
-
| `codeInterpreterCustomName` | `string` |
|
|
962
|
+
| `codeInterpreterCustomName` | `string` | No | The name of the code interpreter. Must start with a letter and can be up to 48 characters long. Pattern: `[a-zA-Z][a-zA-Z0-9_]{0,47}`. If not provided, a unique name will be auto-generated |
|
|
963
963
|
| `description` | `string` | No | Optional description for the code interpreter. Can have up to 200 characters |
|
|
964
964
|
| `executionRole` | `iam.IRole` | No | The IAM role that provides permissions for the code interpreter to access AWS services. A new role will be created if not provided |
|
|
965
965
|
| `networkConfiguration` | `CodeInterpreterNetworkConfiguration` | No | Network configuration for code interpreter. Defaults to PUBLIC network mode |
|
|
@@ -1084,7 +1084,7 @@ The Gateway construct provides a way to create Amazon Bedrock Agent Core Gateway
|
|
|
1084
1084
|
|
|
1085
1085
|
| Name | Type | Required | Description |
|
|
1086
1086
|
|------|------|----------|-------------|
|
|
1087
|
-
| `gatewayName` | `string` |
|
|
1087
|
+
| `gatewayName` | `string` | No | The name of the gateway. Valid characters are a-z, A-Z, 0-9, _ (underscore) and - (hyphen). Maximum 100 characters. If not provided, a unique name will be auto-generated |
|
|
1088
1088
|
| `description` | `string` | No | Optional description for the gateway. Maximum 200 characters |
|
|
1089
1089
|
| `protocolConfiguration` | `IGatewayProtocolConfig` | No | The protocol configuration for the gateway. Defaults to MCP protocol |
|
|
1090
1090
|
| `authorizerConfiguration` | `IGatewayAuthorizerConfig` | No | The authorizer configuration for the gateway. Defaults to Cognito |
|
|
@@ -1307,7 +1307,7 @@ credential provider attached enabling you to securely access targets whether the
|
|
|
1307
1307
|
|
|
1308
1308
|
| Name | Type | Required | Description |
|
|
1309
1309
|
|------|------|----------|-------------|
|
|
1310
|
-
| `gatewayTargetName` | `string` |
|
|
1310
|
+
| `gatewayTargetName` | `string` | No | The name of the gateway target. Valid characters are a-z, A-Z, 0-9, _ (underscore) and - (hyphen). If not provided, a unique name will be auto-generated |
|
|
1311
1311
|
| `description` | `string` | No | Optional description for the gateway target. Maximum 200 characters |
|
|
1312
1312
|
| `gateway` | `IGateway` | Yes | The gateway this target belongs to |
|
|
1313
1313
|
| `targetConfiguration` | `ITargetConfiguration` | Yes | The target configuration (Lambda, OpenAPI, or Smithy). **Note:** Users typically don't create this directly. When using convenience methods like `GatewayTarget.forLambda()`, `GatewayTarget.forOpenApi()`, `GatewayTarget.forSmithy()` or the gateway's `addLambdaTarget()`, `addOpenApiTarget()`, `addSmithyTarget()` methods, this configuration is created internally for you. Only needed when using the GatewayTarget constructor directly for [advanced scenarios](#advanced-usage-direct-configuration-for-gateway-target). |
|
|
@@ -1842,6 +1842,124 @@ const target = new agentcore.GatewayTarget(this, "AdvancedTarget", {
|
|
|
1842
1842
|
|
|
1843
1843
|
This approach gives you full control over the configuration but is typically not necessary for most use cases. The convenience methods (`GatewayTarget.forLambda()`, `GatewayTarget.forOpenApi()`, `GatewayTarget.forSmithy()`) handle all of this internally.
|
|
1844
1844
|
|
|
1845
|
+
### Gateway Interceptors
|
|
1846
|
+
|
|
1847
|
+
Gateway interceptors allow you to run custom code during each gateway invocation to implement fine-grained access control, transform requests and responses, or implement custom authorization logic. A gateway can have at most one REQUEST interceptor and one RESPONSE interceptor.
|
|
1848
|
+
|
|
1849
|
+
**Interceptor Types:**
|
|
1850
|
+
|
|
1851
|
+
- **REQUEST interceptors**: Execute before the gateway calls the target. Useful for request validation, transformation, or custom authorization
|
|
1852
|
+
- **RESPONSE interceptors**: Execute after the target responds but before the gateway sends the response back. Useful for response transformation, filtering, or adding custom headers
|
|
1853
|
+
|
|
1854
|
+
**Security Best Practices:**
|
|
1855
|
+
|
|
1856
|
+
1. Keep `passRequestHeaders` disabled unless absolutely necessary (default: false)
|
|
1857
|
+
2. Implement idempotent Lambda functions (gateway may retry on failures)
|
|
1858
|
+
3. Restrict gateway execution role to specific Lambda functions
|
|
1859
|
+
4. Avoid logging sensitive information in your interceptor
|
|
1860
|
+
|
|
1861
|
+
For more information, see the [Gateway Interceptors documentation](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-interceptors.html).
|
|
1862
|
+
|
|
1863
|
+
#### Adding Interceptors via Constructor
|
|
1864
|
+
|
|
1865
|
+
```typescript fixture=default
|
|
1866
|
+
// Create Lambda functions for interceptors
|
|
1867
|
+
const requestInterceptorFn = new lambda.Function(this, "RequestInterceptor", {
|
|
1868
|
+
runtime: lambda.Runtime.PYTHON_3_12,
|
|
1869
|
+
handler: "index.handler",
|
|
1870
|
+
code: lambda.Code.fromInline(`
|
|
1871
|
+
def handler(event, context):
|
|
1872
|
+
# Validate and transform request
|
|
1873
|
+
return {
|
|
1874
|
+
"interceptorOutputVersion": "1.0",
|
|
1875
|
+
"mcp": {
|
|
1876
|
+
"transformedGatewayRequest": event["mcp"]["gatewayRequest"]
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
`),
|
|
1880
|
+
});
|
|
1881
|
+
|
|
1882
|
+
const responseInterceptorFn = new lambda.Function(this, "ResponseInterceptor", {
|
|
1883
|
+
runtime: lambda.Runtime.PYTHON_3_12,
|
|
1884
|
+
handler: "index.handler",
|
|
1885
|
+
code: lambda.Code.fromInline(`
|
|
1886
|
+
def handler(event, context):
|
|
1887
|
+
# Filter or transform response
|
|
1888
|
+
return {
|
|
1889
|
+
"interceptorOutputVersion": "1.0",
|
|
1890
|
+
"mcp": {
|
|
1891
|
+
"transformedGatewayResponse": event["mcp"]["gatewayResponse"]
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
`),
|
|
1895
|
+
});
|
|
1896
|
+
|
|
1897
|
+
// Create gateway with interceptors
|
|
1898
|
+
const gateway = new agentcore.Gateway(this, "MyGateway", {
|
|
1899
|
+
gatewayName: "my-gateway",
|
|
1900
|
+
interceptorConfigurations: [
|
|
1901
|
+
agentcore.LambdaInterceptor.forRequest(requestInterceptorFn, {
|
|
1902
|
+
passRequestHeaders: true // Only if you need to inspect headers
|
|
1903
|
+
}),
|
|
1904
|
+
agentcore.LambdaInterceptor.forResponse(responseInterceptorFn)
|
|
1905
|
+
]
|
|
1906
|
+
});
|
|
1907
|
+
```
|
|
1908
|
+
|
|
1909
|
+
**Automatic Permission Granting:**
|
|
1910
|
+
|
|
1911
|
+
When you add a Lambda interceptor to a gateway (either via constructor or `addInterceptor()`), the gateway's IAM role automatically receives `lambda:InvokeFunction` permission on the Lambda function. This permission grant happens internally during the bind process - you do not need to manually configure these IAM permissions.
|
|
1912
|
+
|
|
1913
|
+
#### Adding Interceptors Dynamically
|
|
1914
|
+
|
|
1915
|
+
```typescript fixture=default
|
|
1916
|
+
// Create a gateway first
|
|
1917
|
+
const gateway = new agentcore.Gateway(this, "MyGateway", {
|
|
1918
|
+
gatewayName: "my-gateway",
|
|
1919
|
+
});
|
|
1920
|
+
|
|
1921
|
+
// Create Lambda functions for interceptors
|
|
1922
|
+
const requestInterceptorFn = new lambda.Function(this, "RequestInterceptor", {
|
|
1923
|
+
runtime: lambda.Runtime.PYTHON_3_12,
|
|
1924
|
+
handler: "index.handler",
|
|
1925
|
+
code: lambda.Code.fromInline(`
|
|
1926
|
+
def handler(event, context):
|
|
1927
|
+
# Custom request validation logic
|
|
1928
|
+
return {
|
|
1929
|
+
"interceptorOutputVersion": "1.0",
|
|
1930
|
+
"mcp": {
|
|
1931
|
+
"transformedGatewayRequest": event["mcp"]["gatewayRequest"]
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
`),
|
|
1935
|
+
});
|
|
1936
|
+
|
|
1937
|
+
const responseInterceptorFn = new lambda.Function(this, "ResponseInterceptor", {
|
|
1938
|
+
runtime: lambda.Runtime.PYTHON_3_12,
|
|
1939
|
+
handler: "index.handler",
|
|
1940
|
+
code: lambda.Code.fromInline(`
|
|
1941
|
+
def handler(event, context):
|
|
1942
|
+
# Filter sensitive data from response
|
|
1943
|
+
return {
|
|
1944
|
+
"interceptorOutputVersion": "1.0",
|
|
1945
|
+
"mcp": {
|
|
1946
|
+
"transformedGatewayResponse": event["mcp"]["gatewayResponse"]
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
`),
|
|
1950
|
+
});
|
|
1951
|
+
|
|
1952
|
+
gateway.addInterceptor(
|
|
1953
|
+
agentcore.LambdaInterceptor.forRequest(requestInterceptorFn, {
|
|
1954
|
+
passRequestHeaders: false // Default, headers not passed for security
|
|
1955
|
+
})
|
|
1956
|
+
);
|
|
1957
|
+
|
|
1958
|
+
gateway.addInterceptor(
|
|
1959
|
+
agentcore.LambdaInterceptor.forResponse(responseInterceptorFn)
|
|
1960
|
+
);
|
|
1961
|
+
```
|
|
1962
|
+
|
|
1845
1963
|
### Gateway Target IAM Permissions
|
|
1846
1964
|
|
|
1847
1965
|
The Gateway Target construct provides convenient methods for granting IAM permissions:
|
|
@@ -1901,7 +2019,7 @@ To write to long-term memory, you need to configure extraction strategies which
|
|
|
1901
2019
|
|
|
1902
2020
|
| Name | Type | Required | Description |
|
|
1903
2021
|
|------|------|----------|-------------|
|
|
1904
|
-
| `memoryName` | `string` |
|
|
2022
|
+
| `memoryName` | `string` | No | The name of the memory. If not provided, a unique name will be auto-generated |
|
|
1905
2023
|
| `expirationDuration` | `Duration` | No | Short-term memory expiration in days (between 7 and 365). Default: 90 days |
|
|
1906
2024
|
| `description` | `string` | No | Optional description for the memory. Default: no description. |
|
|
1907
2025
|
| `kmsKey` | `IKey` | No | Custom KMS key to use for encryption. Default: Your data is encrypted with a key that AWS owns and manages for you |
|
|
@@ -1958,7 +2076,7 @@ You can use built-in extraction strategies for quick setup, or create custom ext
|
|
|
1958
2076
|
|
|
1959
2077
|
### Memory with Built-in Strategies
|
|
1960
2078
|
|
|
1961
|
-
The library provides
|
|
2079
|
+
The library provides four built-in LTM strategies. These are default strategies for organizing and extracting memory data,
|
|
1962
2080
|
each optimized for specific use cases.
|
|
1963
2081
|
|
|
1964
2082
|
For example: An agent helps multiple users with cloud storage setup. From these conversations,
|
|
@@ -1985,6 +2103,14 @@ Extracted memory example: User needs clear guidance on cloud storage account con
|
|
|
1985
2103
|
- Extracts user behavior patterns from raw conversations
|
|
1986
2104
|
- Namespace: `/strategies/{memoryStrategyId}/actors/{actorId}`
|
|
1987
2105
|
|
|
2106
|
+
4. **Episodic Memory Strategy** (`MemoryStrategy.usingBuiltInEpisodic()`)
|
|
2107
|
+
Captures meaningful slices of user and system interactions, preserve them into compact records after summarizing.
|
|
2108
|
+
Extracted memory example: User first asked about pricing on Monday, then requested feature comparison on Tuesday, finally made purchase decision on Wednesday.
|
|
2109
|
+
|
|
2110
|
+
- Captures event sequences and temporal relationships
|
|
2111
|
+
- Namespace: `/strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}`
|
|
2112
|
+
- Reflections: `/strategy/{memoryStrategyId}/actor/{actorId}`
|
|
2113
|
+
|
|
1988
2114
|
```typescript fixture=default
|
|
1989
2115
|
// Create memory with built-in strategies
|
|
1990
2116
|
const memory = new agentcore.Memory(this, "MyMemory", {
|
|
@@ -1995,6 +2121,7 @@ const memory = new agentcore.Memory(this, "MyMemory", {
|
|
|
1995
2121
|
agentcore.MemoryStrategy.usingBuiltInSummarization(),
|
|
1996
2122
|
agentcore.MemoryStrategy.usingBuiltInSemantic(),
|
|
1997
2123
|
agentcore.MemoryStrategy.usingBuiltInUserPreference(),
|
|
2124
|
+
agentcore.MemoryStrategy.usingBuiltInEpisodic(),
|
|
1998
2125
|
],
|
|
1999
2126
|
});
|
|
2000
2127
|
```
|
|
@@ -2004,6 +2131,7 @@ The name generated for each built in memory strategy is as follows:
|
|
|
2004
2131
|
- For Summarization: `summary_builtin_cdk001`
|
|
2005
2132
|
- For Semantic:`semantic_builtin_cdk001>`
|
|
2006
2133
|
- For User Preferences: `preference_builtin_cdk001`
|
|
2134
|
+
- For Episodic : `episodic_builtin_cdkGen0001`
|
|
2007
2135
|
|
|
2008
2136
|
### Memory with custom Strategies
|
|
2009
2137
|
|
|
@@ -2045,12 +2173,13 @@ You can customise the namespace, i.e. where the memories are stored by using the
|
|
|
2045
2173
|
1. **Summarization Strategy** (`MemoryStrategy.usingSummarization(props)`)
|
|
2046
2174
|
1. **Semantic Memory Strategy** (`MemoryStrategy.usingSemantic(props)`)
|
|
2047
2175
|
1. **User Preference Strategy** (`MemoryStrategy.usingUserPreference(props)`)
|
|
2176
|
+
1. **Episodic Memory Strategy** (`MemoryStrategy.usingEpisodic(props)`)
|
|
2048
2177
|
|
|
2049
2178
|
```typescript fixture=default
|
|
2050
|
-
// Create memory with
|
|
2179
|
+
// Create memory with custom strategies
|
|
2051
2180
|
const memory = new agentcore.Memory(this, "MyMemory", {
|
|
2052
2181
|
memoryName: "my_memory",
|
|
2053
|
-
description: "Memory with
|
|
2182
|
+
description: "Memory with custom strategies",
|
|
2054
2183
|
expirationDuration: cdk.Duration.days(90),
|
|
2055
2184
|
memoryStrategies: [
|
|
2056
2185
|
agentcore.MemoryStrategy.usingUserPreference({
|
|
@@ -2061,6 +2190,13 @@ const memory = new agentcore.Memory(this, "MyMemory", {
|
|
|
2061
2190
|
name: "CustomerSupportSemantic",
|
|
2062
2191
|
namespaces: ["support/customer/{actorId}/semantic"]
|
|
2063
2192
|
}),
|
|
2193
|
+
agentcore.MemoryStrategy.usingEpisodic({
|
|
2194
|
+
name: "customerJourneyEpisodic",
|
|
2195
|
+
namespaces: ["/journey/customer/{actorId}/episodes"],
|
|
2196
|
+
reflectionConfiguration: {
|
|
2197
|
+
namespaces: ["/journey/customer/{actorId}/reflections"]
|
|
2198
|
+
}
|
|
2199
|
+
}),
|
|
2064
2200
|
],
|
|
2065
2201
|
});
|
|
2066
2202
|
```
|
|
@@ -397,7 +397,7 @@ declare const role: iam.Role;
|
|
|
397
397
|
|
|
398
398
|
// grant "elasticache:Connect" action permissions to role
|
|
399
399
|
user.grantConnect(role);
|
|
400
|
-
serverlessCache.
|
|
400
|
+
serverlessCache.grants.connect(role);
|
|
401
401
|
```
|
|
402
402
|
|
|
403
403
|
### Import an existing user and user group
|
|
@@ -214,6 +214,31 @@ const endpointConfig = new sagemaker.EndpointConfig(this, 'EndpointConfig', {
|
|
|
214
214
|
});
|
|
215
215
|
```
|
|
216
216
|
|
|
217
|
+
#### Container Startup Health Check Timeout
|
|
218
|
+
|
|
219
|
+
You can specify a timeout value for your inference container to pass health check by configuring
|
|
220
|
+
the `containerStartupHealthCheckTimeout` property. This is useful when your model takes longer
|
|
221
|
+
to initialize and you want to avoid premature health check failures:
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
import * as sagemaker from '@aws-cdk/aws-sagemaker-alpha';
|
|
225
|
+
|
|
226
|
+
declare const model: sagemaker.Model;
|
|
227
|
+
|
|
228
|
+
const endpointConfig = new sagemaker.EndpointConfig(this, 'EndpointConfig', {
|
|
229
|
+
instanceProductionVariants: [
|
|
230
|
+
{
|
|
231
|
+
model: model,
|
|
232
|
+
variantName: 'my-variant',
|
|
233
|
+
containerStartupHealthCheckTimeout: cdk.Duration.minutes(5), // 5 minutes timeout
|
|
234
|
+
},
|
|
235
|
+
]
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
The timeout value must be between 60 seconds and 1 hour (3600 seconds). If not specified,
|
|
240
|
+
Amazon SageMaker uses the default timeout behavior.
|
|
241
|
+
|
|
217
242
|
### Serverless Inference
|
|
218
243
|
|
|
219
244
|
Amazon SageMaker Serverless Inference is a purpose-built inference option that makes it easy for you to deploy and scale ML models. Serverless endpoints automatically launch compute resources and scale them in and out depending on traffic, eliminating the need to choose instance types or manage scaling policies. For more information, see [SageMaker Serverless Inference](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html).
|
|
@@ -134,6 +134,24 @@ const bucket = new s3.CfnBucket(scope, "Bucket");
|
|
|
134
134
|
Mixins.of(bucket).apply(new EnableVersioning());
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
**BucketPolicyStatementsMixin**: Adds IAM policy statements to a bucket policy
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
declare const bucket: s3.IBucketRef;
|
|
141
|
+
|
|
142
|
+
const bucketPolicy = new s3.CfnBucketPolicy(scope, "BucketPolicy", {
|
|
143
|
+
bucket: bucket,
|
|
144
|
+
policyDocument: new iam.PolicyDocument(),
|
|
145
|
+
});
|
|
146
|
+
Mixins.of(bucketPolicy).apply(new BucketPolicyStatementsMixin([
|
|
147
|
+
new iam.PolicyStatement({
|
|
148
|
+
actions: ["s3:GetObject"],
|
|
149
|
+
resources: ["*"],
|
|
150
|
+
principals: [new iam.AnyPrincipal()],
|
|
151
|
+
}),
|
|
152
|
+
]));
|
|
153
|
+
```
|
|
154
|
+
|
|
137
155
|
### Logs Delivery
|
|
138
156
|
|
|
139
157
|
Configures vended logs delivery for supported resources to various destinations:
|
|
@@ -65,68 +65,88 @@ For stateful or otherwise non-interruption-tolerant workflows, omit `spot` or se
|
|
|
65
65
|
|
|
66
66
|
#### Choosing Your Instance Types
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
There are several ways to configure instance types for your compute environment:
|
|
69
|
+
|
|
70
|
+
##### Using Default Instance Classes (Recommended)
|
|
71
|
+
|
|
72
|
+
AWS Batch provides default instance classes that automatically select cost-effective, up-to-date instances based on your region.
|
|
73
|
+
This is the recommended approach for new projects:
|
|
70
74
|
|
|
71
75
|
```ts
|
|
72
|
-
const vpc = new ec2.Vpc(this, '
|
|
76
|
+
const vpc = new ec2.Vpc(this, 'Vpc');
|
|
73
77
|
|
|
74
|
-
|
|
78
|
+
// Use ARM64 instances (e.g., m6g, c6g, r6g, c7g families)
|
|
79
|
+
new batch.ManagedEc2EcsComputeEnvironment(this, 'Arm64Ec2ComputeEnv', {
|
|
75
80
|
vpc,
|
|
76
81
|
defaultInstanceClasses: [batch.DefaultInstanceClass.ARM64],
|
|
77
82
|
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
This example configures your `ComputeEnvironment` to use only the `M5AD.large` instance:
|
|
81
|
-
|
|
82
|
-
```ts
|
|
83
|
-
const vpc = new ec2.Vpc(this, 'VPC');
|
|
84
83
|
|
|
85
|
-
|
|
84
|
+
// Use x86_64 instances (e.g., m6i, c6i, r6i, c7i families)
|
|
85
|
+
new batch.ManagedEc2EcsComputeEnvironment(this, 'X86_64Ec2ComputeEnv', {
|
|
86
86
|
vpc,
|
|
87
|
-
|
|
87
|
+
defaultInstanceClasses: [batch.DefaultInstanceClass.X86_64],
|
|
88
88
|
});
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
The `default_x86_64` and `default_arm64` categories are dynamically updated by AWS as new instance families become available in your region.
|
|
92
|
+
|
|
93
|
+
##### Using Specific Instance Types Only
|
|
94
|
+
|
|
95
|
+
To use only specific instance types without any automatic defaults, set `useOptimalInstanceClasses: false`:
|
|
92
96
|
|
|
93
97
|
```ts
|
|
94
|
-
const vpc = new ec2.Vpc(this, '
|
|
98
|
+
const vpc = new ec2.Vpc(this, 'Vpc');
|
|
95
99
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// Or, specify it on the constructor:
|
|
99
|
-
new batch.ManagedEc2EcsComputeEnvironment(this, 'myEc2ComputeEnv', {
|
|
100
|
+
// Use only R4 instance class (Batch chooses the size)
|
|
101
|
+
new batch.ManagedEc2EcsComputeEnvironment(this, 'R4Ec2ComputeEnv', {
|
|
100
102
|
vpc,
|
|
103
|
+
useOptimalInstanceClasses: false,
|
|
101
104
|
instanceClasses: [ec2.InstanceClass.R4],
|
|
102
105
|
});
|
|
106
|
+
|
|
107
|
+
// Use only a specific instance type
|
|
108
|
+
new batch.ManagedEc2EcsComputeEnvironment(this, 'M5AdLargeEc2ComputeEnv', {
|
|
109
|
+
vpc,
|
|
110
|
+
useOptimalInstanceClasses: false,
|
|
111
|
+
instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.M5AD, ec2.InstanceSize.LARGE)],
|
|
112
|
+
});
|
|
103
113
|
```
|
|
104
114
|
|
|
105
|
-
|
|
106
|
-
|
|
115
|
+
##### Using Optimal Instance Classes
|
|
116
|
+
|
|
117
|
+
By default, `useOptimalInstanceClasses` is `true`, which adds the `optimal` instance type.
|
|
118
|
+
|
|
119
|
+
**Note**: Since November 2025, `optimal` behaves the same as `default_x86_64` and is dynamically updated as AWS introduces new instance families. Both options automatically select cost-effective x86_64 instance types (from the m6i, c6i, r6i, and c7i families) based on your region.
|
|
107
120
|
|
|
108
|
-
|
|
109
|
-
which tells Batch to pick an instance from the C4, M4, and R4 instance families.
|
|
110
|
-
*Note*: Batch does not allow specifying instance types or classes with different architectures.
|
|
111
|
-
For example, `InstanceClass.A1` cannot be specified alongside `'optimal'`,
|
|
112
|
-
because `A1` uses ARM and `'optimal'` uses x86_64.
|
|
113
|
-
You can specify both `'optimal'` alongside several different instance types in the same compute environment:
|
|
121
|
+
You can combine this with additional instance types:
|
|
114
122
|
|
|
115
123
|
```ts
|
|
116
124
|
declare const vpc: ec2.IVpc;
|
|
117
125
|
|
|
118
|
-
const computeEnv = new batch.ManagedEc2EcsComputeEnvironment(this, '
|
|
119
|
-
instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.M5AD, ec2.InstanceSize.LARGE)],
|
|
120
|
-
useOptimalInstanceClasses: true, // default
|
|
126
|
+
const computeEnv = new batch.ManagedEc2EcsComputeEnvironment(this, 'Ec2ComputeEnv', {
|
|
121
127
|
vpc,
|
|
128
|
+
instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.M5AD, ec2.InstanceSize.LARGE)],
|
|
129
|
+
// useOptimalInstanceClasses: true (default)
|
|
122
130
|
});
|
|
123
|
-
//
|
|
124
|
-
computeEnv.addInstanceType(ec2.InstanceType.of(ec2.InstanceClass.M5AD, ec2.InstanceSize.LARGE));
|
|
125
|
-
computeEnv.addInstanceClass(ec2.InstanceClass.C4);
|
|
126
|
-
computeEnv.addInstanceClass(ec2.InstanceClass.M4);
|
|
127
|
-
computeEnv.addInstanceClass(ec2.InstanceClass.R4);
|
|
131
|
+
// Result: ['m5ad.large', 'optimal']
|
|
128
132
|
```
|
|
129
133
|
|
|
134
|
+
##### Instance Type Configuration Reference
|
|
135
|
+
|
|
136
|
+
| Goal | Configuration |
|
|
137
|
+
|------|---------------|
|
|
138
|
+
| Use latest x86_64 instances | `defaultInstanceClasses: [DefaultInstanceClass.X86_64]` or no configuration (default) |
|
|
139
|
+
| Use latest ARM64 instances | `defaultInstanceClasses: [DefaultInstanceClass.ARM64]` |
|
|
140
|
+
| Use only specific instance classes | `useOptimalInstanceClasses: false` + `instanceClasses: [...]` |
|
|
141
|
+
| Use only specific instance types | `useOptimalInstanceClasses: false` + `instanceTypes: [...]` |
|
|
142
|
+
| Use optimal + additional instances | `instanceClasses: [...]` or `instanceTypes: [...]` |
|
|
143
|
+
|
|
144
|
+
**Note**: Batch does not allow specifying instance types or classes with different architectures.
|
|
145
|
+
For example, `InstanceClass.A1` (ARM) cannot be specified alongside `optimal` (x86_64).
|
|
146
|
+
When using ARM-based instances (e.g., Graviton), use `defaultInstanceClasses: [DefaultInstanceClass.ARM64]`, or set `useOptimalInstanceClasses: false` and explicitly specify ARM instance classes/types.
|
|
147
|
+
|
|
148
|
+
**Note**: `useOptimalInstanceClasses` and `defaultInstanceClasses` cannot be used together.
|
|
149
|
+
|
|
130
150
|
#### Configure AMIs
|
|
131
151
|
|
|
132
152
|
You can configure Amazon Machine Images (AMIs). This example configures your `ComputeEnvironment` to use Amazon Linux 2023.
|
|
@@ -245,7 +245,7 @@ const vpc = new ec2.Vpc(this, 'TheVPC', {
|
|
|
245
245
|
const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc });
|
|
246
246
|
securityGroup.addEgressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(443));
|
|
247
247
|
for (const gateway of provider.gatewayInstances) {
|
|
248
|
-
bucket.
|
|
248
|
+
bucket.grants.write(gateway);
|
|
249
249
|
gateway.addSecurityGroup(securityGroup);
|
|
250
250
|
}
|
|
251
251
|
```
|
|
@@ -1678,6 +1678,8 @@ new ecs.Ec2Service(this, 'EC2Service', {
|
|
|
1678
1678
|
|
|
1679
1679
|
Managed Instances Capacity Providers allow you to use AWS-managed EC2 instances for your ECS tasks while providing more control over instance selection than standard Fargate. AWS handles the instance lifecycle, patching, and maintenance while you can specify detailed instance requirements. You can define detailed instance requirements to control which types of instances are used for your workloads.
|
|
1680
1680
|
|
|
1681
|
+
Capacity Option Type provides the purchasing option for the EC2 instances used in the capacity provider. Determines whether to use On-Demand or Spot instances. Valid values are `ON_DEMAND` and `SPOT`. Defaults to `ON_DEMAND` when not specified. Changing this value will trigger replacement of the capacity provider. For more information, see [Amazon EC2 billing and purchasing options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html) in the Amazon EC2 User Guide.
|
|
1682
|
+
|
|
1681
1683
|
See [ECS documentation for Managed Instances Capacity Provider](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-capacity-providers-concept.html) for more documentation.
|
|
1682
1684
|
|
|
1683
1685
|
#### IAM Roles Setup
|
|
@@ -1695,6 +1697,7 @@ const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', {
|
|
|
1695
1697
|
});
|
|
1696
1698
|
|
|
1697
1699
|
const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProvider', {
|
|
1700
|
+
capacityOptionType: ecs.CapacityOptionType.SPOT,
|
|
1698
1701
|
subnets: vpc.privateSubnets,
|
|
1699
1702
|
securityGroups: [securityGroup],
|
|
1700
1703
|
instanceRequirements: {
|
|
@@ -2353,6 +2356,84 @@ const target = service.loadBalancerTarget({
|
|
|
2353
2356
|
target.attachToApplicationTargetGroup(blueTargetGroup);
|
|
2354
2357
|
```
|
|
2355
2358
|
|
|
2359
|
+
## Buil-in Linear and Canary Deployments
|
|
2360
|
+
|
|
2361
|
+
Amazon ECS supports progressive deployment strategies that allow you to validate new service revisions before shifting all production traffic. Both strategies require an Application Load Balancer (ALB) with target groups for traffic routing.
|
|
2362
|
+
|
|
2363
|
+
### Linear Deployment
|
|
2364
|
+
|
|
2365
|
+
Linear deployment strategy shifts production traffic in equal percentage increments with configurable wait times between each step:
|
|
2366
|
+
|
|
2367
|
+
```ts
|
|
2368
|
+
declare const cluster: ecs.Cluster;
|
|
2369
|
+
declare const taskDefinition: ecs.TaskDefinition;
|
|
2370
|
+
declare const blueTargetGroup: elbv2.ApplicationTargetGroup;
|
|
2371
|
+
declare const greenTargetGroup: elbv2.ApplicationTargetGroup;
|
|
2372
|
+
declare const prodListenerRule: elbv2.ApplicationListenerRule;
|
|
2373
|
+
|
|
2374
|
+
const service = new ecs.FargateService(this, 'Service', {
|
|
2375
|
+
cluster,
|
|
2376
|
+
taskDefinition,
|
|
2377
|
+
deploymentStrategy: ecs.DeploymentStrategy.LINEAR,
|
|
2378
|
+
linearConfiguration: {
|
|
2379
|
+
stepPercent: 10.0,
|
|
2380
|
+
stepBakeTime: Duration.minutes(5),
|
|
2381
|
+
},
|
|
2382
|
+
});
|
|
2383
|
+
|
|
2384
|
+
const target = service.loadBalancerTarget({
|
|
2385
|
+
containerName: 'web',
|
|
2386
|
+
containerPort: 80,
|
|
2387
|
+
alternateTarget: new ecs.AlternateTarget('AlternateTarget', {
|
|
2388
|
+
alternateTargetGroup: greenTargetGroup,
|
|
2389
|
+
productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
|
|
2390
|
+
}),
|
|
2391
|
+
});
|
|
2392
|
+
|
|
2393
|
+
target.attachToApplicationTargetGroup(blueTargetGroup);
|
|
2394
|
+
```
|
|
2395
|
+
|
|
2396
|
+
Valid values:
|
|
2397
|
+
- `stepPercent`: 3.0 to 100.0 (multiples of 0.1). Default: 10.0
|
|
2398
|
+
- `stepBakeTime`: 0 to 1440 minutes (24 hours). Default: 6 minutes
|
|
2399
|
+
|
|
2400
|
+
### Canary Deployment
|
|
2401
|
+
|
|
2402
|
+
Canary deployment strategy shifts a fixed percentage of traffic to the new service revision for testing, then shifts the remaining traffic after a bake period:
|
|
2403
|
+
|
|
2404
|
+
```ts
|
|
2405
|
+
declare const cluster: ecs.Cluster;
|
|
2406
|
+
declare const taskDefinition: ecs.TaskDefinition;
|
|
2407
|
+
declare const blueTargetGroup: elbv2.ApplicationTargetGroup;
|
|
2408
|
+
declare const greenTargetGroup: elbv2.ApplicationTargetGroup;
|
|
2409
|
+
declare const prodListenerRule: elbv2.ApplicationListenerRule;
|
|
2410
|
+
|
|
2411
|
+
const service = new ecs.FargateService(this, 'Service', {
|
|
2412
|
+
cluster,
|
|
2413
|
+
taskDefinition,
|
|
2414
|
+
deploymentStrategy: ecs.DeploymentStrategy.CANARY,
|
|
2415
|
+
canaryConfiguration: {
|
|
2416
|
+
stepPercent: 5.0,
|
|
2417
|
+
stepBakeTime: Duration.minutes(10),
|
|
2418
|
+
},
|
|
2419
|
+
});
|
|
2420
|
+
|
|
2421
|
+
const target = service.loadBalancerTarget({
|
|
2422
|
+
containerName: 'web',
|
|
2423
|
+
containerPort: 80,
|
|
2424
|
+
alternateTarget: new ecs.AlternateTarget('AlternateTarget', {
|
|
2425
|
+
alternateTargetGroup: greenTargetGroup,
|
|
2426
|
+
productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
|
|
2427
|
+
}),
|
|
2428
|
+
});
|
|
2429
|
+
|
|
2430
|
+
target.attachToApplicationTargetGroup(blueTargetGroup);
|
|
2431
|
+
```
|
|
2432
|
+
|
|
2433
|
+
Valid values:
|
|
2434
|
+
- `stepPercent`: 0.1 to 100.0 (multiples of 0.1). Default: 5.0
|
|
2435
|
+
- `stepBakeTime`: 0 to 1440 minutes (24 hours). Default: 10 minutes
|
|
2436
|
+
|
|
2356
2437
|
## Daemon Scheduling Strategy
|
|
2357
2438
|
You can specify whether service use Daemon scheduling strategy by specifying `daemon` option in Service constructs. See [differences between Daemon and Replica scheduling strategy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
|
|
2358
2439
|
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib';
|
|
4
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
|
|
7
|
+
const app = new cdk.App();
|
|
8
|
+
const stack = new cdk.Stack(app, 'aws-ecs-canary-deployment');
|
|
9
|
+
|
|
10
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
11
|
+
const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc });
|
|
12
|
+
|
|
13
|
+
const blueTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'BlueTG', {
|
|
14
|
+
vpc: cluster.vpc,
|
|
15
|
+
port: 80,
|
|
16
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
17
|
+
targetType: elbv2.TargetType.IP,
|
|
18
|
+
healthCheck: {
|
|
19
|
+
path: '/',
|
|
20
|
+
healthyHttpCodes: '200',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const greenTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'GreenTG', {
|
|
25
|
+
vpc: cluster.vpc,
|
|
26
|
+
port: 80,
|
|
27
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
28
|
+
targetType: elbv2.TargetType.IP,
|
|
29
|
+
healthCheck: {
|
|
30
|
+
path: '/',
|
|
31
|
+
healthyHttpCodes: '200',
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const lbSecurityGroup = new ec2.SecurityGroup(stack, 'LBSecurityGroup', {
|
|
36
|
+
vpc: cluster.vpc,
|
|
37
|
+
allowAllOutbound: true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const ecsSecurityGroup = new ec2.SecurityGroup(stack, 'ECSSecurityGroup', {
|
|
41
|
+
vpc: cluster.vpc,
|
|
42
|
+
allowAllOutbound: true,
|
|
43
|
+
});
|
|
44
|
+
ecsSecurityGroup.addIngressRule(lbSecurityGroup, ec2.Port.tcp(80));
|
|
45
|
+
|
|
46
|
+
const alb = new elbv2.ApplicationLoadBalancer(stack, 'ALB', {
|
|
47
|
+
vpc: cluster.vpc,
|
|
48
|
+
internetFacing: true,
|
|
49
|
+
securityGroup: lbSecurityGroup,
|
|
50
|
+
idleTimeout: cdk.Duration.seconds(60),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const listener = alb.addListener('ALBListener', {
|
|
54
|
+
port: 80,
|
|
55
|
+
defaultAction: elbv2.ListenerAction.fixedResponse(404),
|
|
56
|
+
open: false,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const prodListenerRule = new elbv2.ApplicationListenerRule(stack, 'ALBProductionListenerRule', {
|
|
60
|
+
listener: listener,
|
|
61
|
+
priority: 1,
|
|
62
|
+
conditions: [
|
|
63
|
+
elbv2.ListenerCondition.pathPatterns(['/*']),
|
|
64
|
+
],
|
|
65
|
+
action: elbv2.ListenerAction.weightedForward([
|
|
66
|
+
{
|
|
67
|
+
targetGroup: blueTargetGroup,
|
|
68
|
+
weight: 100,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
targetGroup: greenTargetGroup,
|
|
72
|
+
weight: 0,
|
|
73
|
+
},
|
|
74
|
+
]),
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
|
|
78
|
+
memoryLimitMiB: 512,
|
|
79
|
+
cpu: 256,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
taskDefinition.addContainer('container', {
|
|
83
|
+
containerName: 'nginx',
|
|
84
|
+
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'),
|
|
85
|
+
portMappings: [{
|
|
86
|
+
name: 'api',
|
|
87
|
+
containerPort: 80,
|
|
88
|
+
appProtocol: ecs.AppProtocol.http,
|
|
89
|
+
}],
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const service = new ecs.FargateService(stack, 'Service', {
|
|
93
|
+
cluster,
|
|
94
|
+
taskDefinition,
|
|
95
|
+
securityGroups: [ecsSecurityGroup],
|
|
96
|
+
deploymentStrategy: ecs.DeploymentStrategy.CANARY,
|
|
97
|
+
canaryConfiguration: {
|
|
98
|
+
stepPercent: 5.0,
|
|
99
|
+
stepBakeTime: cdk.Duration.minutes(10),
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const target = service.loadBalancerTarget({
|
|
104
|
+
containerName: 'nginx',
|
|
105
|
+
containerPort: 80,
|
|
106
|
+
protocol: ecs.Protocol.TCP,
|
|
107
|
+
alternateTarget: new ecs.AlternateTarget('LBAlternateOptions', {
|
|
108
|
+
alternateTargetGroup: greenTargetGroup,
|
|
109
|
+
productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
target.attachToApplicationTargetGroup(blueTargetGroup);
|
|
114
|
+
|
|
115
|
+
new integ.IntegTest(app, 'aws-ecs-canary', {
|
|
116
|
+
testCases: [stack],
|
|
117
|
+
});
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib';
|
|
4
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
|
|
7
|
+
const app = new cdk.App();
|
|
8
|
+
const stack = new cdk.Stack(app, 'aws-ecs-linear-deployment');
|
|
9
|
+
|
|
10
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
11
|
+
const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc });
|
|
12
|
+
|
|
13
|
+
const blueTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'BlueTG', {
|
|
14
|
+
vpc: cluster.vpc,
|
|
15
|
+
port: 80,
|
|
16
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
17
|
+
targetType: elbv2.TargetType.IP,
|
|
18
|
+
healthCheck: {
|
|
19
|
+
path: '/',
|
|
20
|
+
healthyHttpCodes: '200',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const greenTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'GreenTG', {
|
|
25
|
+
vpc: cluster.vpc,
|
|
26
|
+
port: 80,
|
|
27
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
28
|
+
targetType: elbv2.TargetType.IP,
|
|
29
|
+
healthCheck: {
|
|
30
|
+
path: '/',
|
|
31
|
+
healthyHttpCodes: '200',
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const lbSecurityGroup = new ec2.SecurityGroup(stack, 'LBSecurityGroup', {
|
|
36
|
+
vpc: cluster.vpc,
|
|
37
|
+
allowAllOutbound: true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const ecsSecurityGroup = new ec2.SecurityGroup(stack, 'ECSSecurityGroup', {
|
|
41
|
+
vpc: cluster.vpc,
|
|
42
|
+
allowAllOutbound: true,
|
|
43
|
+
});
|
|
44
|
+
ecsSecurityGroup.addIngressRule(lbSecurityGroup, ec2.Port.tcp(80));
|
|
45
|
+
|
|
46
|
+
const alb = new elbv2.ApplicationLoadBalancer(stack, 'ALB', {
|
|
47
|
+
vpc: cluster.vpc,
|
|
48
|
+
internetFacing: true,
|
|
49
|
+
securityGroup: lbSecurityGroup,
|
|
50
|
+
idleTimeout: cdk.Duration.seconds(60),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const listener = alb.addListener('ALBListener', {
|
|
54
|
+
port: 80,
|
|
55
|
+
defaultAction: elbv2.ListenerAction.fixedResponse(404),
|
|
56
|
+
open: false,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const prodListenerRule = new elbv2.ApplicationListenerRule(stack, 'ALBProductionListenerRule', {
|
|
60
|
+
listener: listener,
|
|
61
|
+
priority: 1,
|
|
62
|
+
conditions: [
|
|
63
|
+
elbv2.ListenerCondition.pathPatterns(['/*']),
|
|
64
|
+
],
|
|
65
|
+
action: elbv2.ListenerAction.weightedForward([
|
|
66
|
+
{
|
|
67
|
+
targetGroup: blueTargetGroup,
|
|
68
|
+
weight: 100,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
targetGroup: greenTargetGroup,
|
|
72
|
+
weight: 0,
|
|
73
|
+
},
|
|
74
|
+
]),
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
|
|
78
|
+
memoryLimitMiB: 512,
|
|
79
|
+
cpu: 256,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
taskDefinition.addContainer('container', {
|
|
83
|
+
containerName: 'nginx',
|
|
84
|
+
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'),
|
|
85
|
+
portMappings: [{
|
|
86
|
+
name: 'api',
|
|
87
|
+
containerPort: 80,
|
|
88
|
+
appProtocol: ecs.AppProtocol.http,
|
|
89
|
+
}],
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const service = new ecs.FargateService(stack, 'Service', {
|
|
93
|
+
cluster,
|
|
94
|
+
taskDefinition,
|
|
95
|
+
securityGroups: [ecsSecurityGroup],
|
|
96
|
+
deploymentStrategy: ecs.DeploymentStrategy.LINEAR,
|
|
97
|
+
linearConfiguration: {
|
|
98
|
+
stepPercent: 10.0,
|
|
99
|
+
stepBakeTime: cdk.Duration.minutes(5),
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const target = service.loadBalancerTarget({
|
|
104
|
+
containerName: 'nginx',
|
|
105
|
+
containerPort: 80,
|
|
106
|
+
protocol: ecs.Protocol.TCP,
|
|
107
|
+
alternateTarget: new ecs.AlternateTarget('LBAlternateOptions', {
|
|
108
|
+
alternateTargetGroup: greenTargetGroup,
|
|
109
|
+
productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
target.attachToApplicationTargetGroup(blueTargetGroup);
|
|
114
|
+
|
|
115
|
+
new integ.IntegTest(app, 'aws-ecs-linear', {
|
|
116
|
+
testCases: [stack],
|
|
117
|
+
});
|
|
@@ -49,6 +49,7 @@ const fmiSecurityGroup = new ec2.SecurityGroup(stack, 'ManagedInstancesSecurityG
|
|
|
49
49
|
// Create MI Capacity Provider
|
|
50
50
|
const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(stack, 'ManagedInstancesCapacityProvider', {
|
|
51
51
|
infrastructureRole: infrastructureRole,
|
|
52
|
+
capacityOptionType: ecs.CapacityOptionType.SPOT,
|
|
52
53
|
ec2InstanceProfile: instanceProfile,
|
|
53
54
|
subnets: vpc.privateSubnets,
|
|
54
55
|
securityGroups: [fmiSecurityGroup],
|
|
@@ -32,27 +32,29 @@ Managed policies can be attached using `xxx.addManagedPolicy(ManagedPolicy.fromA
|
|
|
32
32
|
|
|
33
33
|
## Granting permissions to resources
|
|
34
34
|
|
|
35
|
-
Many of the AWS CDK resources have
|
|
35
|
+
Many of the AWS CDK resources have grant methods (accessible via the `grants` attribute) that allow you to grant other
|
|
36
|
+
resources access to that resource. As an example, the following code gives a Lambda function write permissions
|
|
37
|
+
(Put, Update, Delete) to a DynamoDB table.
|
|
36
38
|
|
|
37
39
|
```ts
|
|
38
40
|
declare const fn: lambda.Function;
|
|
39
41
|
declare const table: dynamodb.Table;
|
|
40
42
|
|
|
41
|
-
table.
|
|
43
|
+
table.grants.writeData(fn);
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
The more generic `
|
|
46
|
+
The more generic `actions` method allows you to give specific permissions to a resource:
|
|
45
47
|
|
|
46
48
|
```ts
|
|
47
49
|
declare const fn: lambda.Function;
|
|
48
50
|
declare const table: dynamodb.Table;
|
|
49
51
|
|
|
50
|
-
table.
|
|
52
|
+
table.grants.actions(fn, 'dynamodb:PutItem');
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
The
|
|
55
|
+
The grant methods accept an `IGrantable` object. This interface is implemented by IAM principal resources (groups, users and roles), policies, managed policies and resources that assume a role such as a Lambda function, EC2 instance or a Codebuild project.
|
|
54
56
|
|
|
55
|
-
You can find which
|
|
57
|
+
You can find which grant methods exist for a resource in the [AWS CDK API Reference](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html).
|
|
56
58
|
|
|
57
59
|
## Roles
|
|
58
60
|
|
|
@@ -70,8 +72,8 @@ automatically if you associate the construct with other constructs from the
|
|
|
70
72
|
AWS Construct Library (for example, if you tell an *AWS CodePipeline* to trigger
|
|
71
73
|
an *AWS Lambda Function*, the Pipeline's Role will automatically get
|
|
72
74
|
`lambda:InvokeFunction` permissions on that particular Lambda Function),
|
|
73
|
-
or if you explicitly grant permissions using
|
|
74
|
-
previous section).
|
|
75
|
+
or if you explicitly grant permissions using the public methods in the
|
|
76
|
+
`RoleGrants` class (see the previous section).
|
|
75
77
|
|
|
76
78
|
### Opting out of automatic permissions management
|
|
77
79
|
|
|
@@ -186,7 +188,7 @@ const fn = new lambda.Function(this, 'MyLambda', {
|
|
|
186
188
|
});
|
|
187
189
|
|
|
188
190
|
const bucket = new s3.Bucket(this, 'Bucket');
|
|
189
|
-
bucket.
|
|
191
|
+
bucket.grants.read(fn);
|
|
190
192
|
```
|
|
191
193
|
|
|
192
194
|
The following report will be generated.
|
|
@@ -445,7 +447,8 @@ new iam.Role(this, 'Role', {
|
|
|
445
447
|
|
|
446
448
|
### Granting a principal permission to assume a role
|
|
447
449
|
|
|
448
|
-
A principal can be granted permission to assume a role using `
|
|
450
|
+
A principal can be granted permission to assume a role using `assumeRole` from the `RoleGrants` class.
|
|
451
|
+
For convenience, an instance of this class is available via the `grants` attribute on the `Role` class.
|
|
449
452
|
|
|
450
453
|
Note that this does not apply to service principals or account principals as they must be added to the role trust policy via `assumeRolePolicy`.
|
|
451
454
|
|
|
@@ -455,7 +458,7 @@ const role = new iam.Role(this, 'role', {
|
|
|
455
458
|
assumedBy: new iam.AccountPrincipal(this.account)
|
|
456
459
|
});
|
|
457
460
|
|
|
458
|
-
role.
|
|
461
|
+
role.grants.assumeRole(user);
|
|
459
462
|
```
|
|
460
463
|
|
|
461
464
|
### Granting service and account principals permission to assume a role
|
|
@@ -68,14 +68,14 @@ Or more conveniently, write permissions to the log group can be granted as follo
|
|
|
68
68
|
|
|
69
69
|
```ts
|
|
70
70
|
const logGroup = new logs.LogGroup(this, 'LogGroup');
|
|
71
|
-
logGroup.
|
|
71
|
+
logGroup.grants.write(new iam.ServicePrincipal('es.amazonaws.com'));
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Similarly, read permissions can be granted to the log group as follows.
|
|
75
75
|
|
|
76
76
|
```ts
|
|
77
77
|
const logGroup = new logs.LogGroup(this, 'LogGroup');
|
|
78
|
-
logGroup.
|
|
78
|
+
logGroup.grants.read(new iam.ServicePrincipal('es.amazonaws.com'));
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Be aware that any ARNs or tokenized values passed to the resource policy will be converted into AWS Account IDs.
|
|
@@ -462,6 +462,19 @@ new logs.LogGroup(this, 'LogGroupLambda', {
|
|
|
462
462
|
});
|
|
463
463
|
```
|
|
464
464
|
|
|
465
|
+
## Configure Deletion Protection
|
|
466
|
+
|
|
467
|
+
Indicates whether deletion protection is enabled for this log group. When enabled, deletion protection blocks all deletion operations until it is explicitly disabled.
|
|
468
|
+
|
|
469
|
+
For more information, see [Protecting log groups from deletion](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/protecting-log-groups-from-deletion.html).
|
|
470
|
+
|
|
471
|
+
```ts
|
|
472
|
+
new logs.LogGroup(this, 'LogGroup', {
|
|
473
|
+
deletionProtectionEnabled: true,
|
|
474
|
+
});
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
|
|
465
478
|
## Field Index Policies
|
|
466
479
|
|
|
467
480
|
Creates or updates a field index policy for the specified log group. You can use field index policies to create field indexes on fields found in log events in the log group. Creating field indexes lowers the costs for CloudWatch Logs Insights queries that reference those field indexes, because these queries attempt to skip the processing of log events that are known to not match the indexed field. Good fields to index are fields that you often need to query for and fields that have high cardinality of values.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { App, Stack } from 'aws-cdk-lib';
|
|
2
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
3
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
|
|
5
|
+
const app = new App();
|
|
6
|
+
const stack = new Stack(app, 'aws-cdk-loggroup-grantreads-integ');
|
|
7
|
+
|
|
8
|
+
new LogGroup(stack, 'LogGroup', {
|
|
9
|
+
deletionProtectionEnabled: true,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
new IntegTest(app, 'loggroup-grantreads', {
|
|
13
|
+
testCases: [stack],
|
|
14
|
+
});
|
|
@@ -61,14 +61,14 @@ myTopic.addSubscription(new subscriptions.SqsSubscription(queue));
|
|
|
61
61
|
Note that subscriptions of queues in different accounts need to be manually confirmed by
|
|
62
62
|
reading the initial message from the queue and visiting the link found in it.
|
|
63
63
|
|
|
64
|
-
The `
|
|
64
|
+
The `topic.grants.subscribe` method adds a policy statement to the topic's resource policy, allowing the specified principal to perform the `sns:Subscribe` action.
|
|
65
65
|
It's useful when you want to allow entities, such as another AWS account or resources created later, to subscribe to the topic at their own pace, separating permission granting from the actual subscription process.
|
|
66
66
|
|
|
67
67
|
```ts
|
|
68
68
|
declare const accountPrincipal: iam.AccountPrincipal;
|
|
69
69
|
const myTopic = new sns.Topic(this, 'MyTopic');
|
|
70
70
|
|
|
71
|
-
myTopic.
|
|
71
|
+
myTopic.grants.subscribe(accountPrincipal);
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
### Filter policy
|
|
@@ -628,7 +628,7 @@ The Action can also be used as a Grantable after having been added to a Pipeline
|
|
|
628
628
|
const action = new pipelines.ShellScriptAction({ /* ... */ });
|
|
629
629
|
pipeline.addStage('Test').addActions(action);
|
|
630
630
|
|
|
631
|
-
bucket.
|
|
631
|
+
bucket.grants.read(action);
|
|
632
632
|
```
|
|
633
633
|
|
|
634
634
|
#### Additional files from the source repository
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.71.0
|
|
4
4
|
Summary: An MCP server provides AWS CDK API Reference
|
|
5
5
|
Project-URL: Documentation, https://github.com/konokenj/cdk-api-mcp-server#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/konokenj/cdk-api-mcp-server/issues
|
|
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
|
|
|
26
26
|
[](https://pypi.org/project/konokenj.cdk-api-mcp-server)
|
|
27
27
|
|
|
28
28
|
<!-- DEP-VERSIONS-START -->
|
|
29
|
-
[](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
|
|
30
30
|
<!-- DEP-VERSIONS-END -->
|
|
31
31
|
|
|
32
32
|
---
|
{konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
cdk_api_mcp_server/__about__.py,sha256=
|
|
1
|
+
cdk_api_mcp_server/__about__.py,sha256=ELmDLx0jcVxvUyMP4Isrouontr0IHXk9V4M1xQJuxV0,129
|
|
2
2
|
cdk_api_mcp_server/__init__.py,sha256=yJA6yIEhJviC-qNlB-nC6UR1JblQci_d84i-viHZkc0,187
|
|
3
3
|
cdk_api_mcp_server/models.py,sha256=cMS1Hi29M41YjuBxqqrzNrNvyG3MgnUBb1SqYpMCJ30,692
|
|
4
4
|
cdk_api_mcp_server/resources.py,sha256=R7LVwn29I4BJzU5XAwKbX8j6uy-3ZxcB1b0HzZ_Z2PI,6689
|
|
@@ -9,7 +9,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/app-staging-synthesizer
|
|
|
9
9
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md,sha256=OIdszebPa0EqMIaHhqWgH6A64AcwQioIKC-NHDyZKrI,12636
|
|
10
10
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-applicationsignals-alpha/README.md,sha256=6nqc-WbHB1iFE3vXDr6hyQs8tYS6wwnWutXePY4EF4w,10873
|
|
11
11
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-apprunner-alpha/README.md,sha256=Jtm3RbnP4jQy8BYXwHvaRbMKizUjr4SqvimVMYhu6WQ,11982
|
|
12
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md,sha256=
|
|
12
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md,sha256=neg1NHrIY4VKi9XAIx-q7aKoeHKQvG2FckZsStXkOQg,104221
|
|
13
13
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=ZFThRraeK0rx1CF2foaEDzKsWxL1Qb9yqpCFM8eKvIo,65269
|
|
14
14
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-cloud9-alpha/README.md,sha256=0N8kldvHAKsNQHKtsj8PaQywiDUVrd6rEwVNQV0equY,7718
|
|
15
15
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-codestar-alpha/README.md,sha256=J-c-thqWwZFQT3Exjr_AY95BBgTA14Wb9aJ32gmEizQ,1509
|
|
@@ -17,7 +17,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-custom-resource-sdk
|
|
|
17
17
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-ec2-alpha/README.md,sha256=ZySzpPJ4eUj3ZJ_jWF6YFOX4J9a7F-GU3o6QT_zJggQ,36094
|
|
18
18
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/MANUAL_TEST.md,sha256=uObwqDllAUYBGkoNEAQGioL6JuKqh5ScVbq9KC3x89Q,1862
|
|
19
19
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md,sha256=QaTmJ96HpXe5Iu32NOzqzHWi85jD73aCfo9Rks9za28,46202
|
|
20
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md,sha256=
|
|
20
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md,sha256=V2xDEBsWH7oxb4mO9I8Wfs74jzYqeUwxFpHp_N6NMtg,15215
|
|
21
21
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-gamelift-alpha/README.md,sha256=pZqlGXpIekT05CmRYo99QPI-7S1iGtKoNESGryLQFxQ,28324
|
|
22
22
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md,sha256=0DUUl5AU9qy-x3P4cCIStFMcav2hSQMwZuI3aTq9Q2Q,32235
|
|
23
23
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256=9Kc8-eJ5wjZBMZuXAvKbTn6gEHjEwT4AKJvknmxWtJU,56869
|
|
@@ -40,13 +40,13 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-redshift-alpha/READ
|
|
|
40
40
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-route53resolver-alpha/README.md,sha256=ceGv5PyLGU4OqdgW09YJtg_TQvjGbB31bV3z2JX1BoA,4086
|
|
41
41
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-s3objectlambda-alpha/README.md,sha256=GKYukniYNvgF14rUBtsKKsdzoJKi7uEhzZxw40YZRWA,3653
|
|
42
42
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-s3tables-alpha/README.md,sha256=F1LqyqAGnsf3dRt7fzOGKExMr3fmNVMeK3RpFvR9HIs,6280
|
|
43
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md,sha256=
|
|
43
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md,sha256=uiIOgibWBFKCX2VLUSoeGMGMnrMk3FwQue34ThlDSv8,12351
|
|
44
44
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-servicecatalogappregistry-alpha/README.md,sha256=HmOM14_-P6x_e0UoI1HQ1IbY375T1Pj-xS4rEL1zmdg,13655
|
|
45
45
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/cfnspec/README.md,sha256=nnoF99zdHuBLVTMCVB9k3-eLiqjS6XTETxnIi5hW0Y8,164
|
|
46
46
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/custom-resource-handlers/README.md,sha256=QctOoyGt6AqVWeFhRwpkCSxHZ1XFWj_nCKlkJHDFock,965
|
|
47
47
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/example-construct-library/README.md,sha256=vnVXyvtN9ICph68sw2y6gkdD_gmas0PiUa9TkwNckWQ,4501
|
|
48
48
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md,sha256=VifKLrR404_yLVT0E3ai8f3R5K0h22VNwQplpSUSZqc,17489
|
|
49
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=
|
|
49
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=EXijwUEfn9GyyBrfvxrRmovdNifT828FihwO1tanPdA,10182
|
|
50
50
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=fDaQqPonfLmfQpukU4aAJcjQI5xHI40D3Li0I056Q7s,76468
|
|
51
51
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/MIGRATING.md,sha256=SYGX8QNB1Pm_rVYDBp4QRWkqwnxOb3CHzeFglUy_53k,3347
|
|
52
52
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/README.md,sha256=3yo3D05n5explTIgnuF-vkk01MTYeAYe7_3rcsD2baE,18299
|
|
@@ -207,7 +207,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling-hook
|
|
|
207
207
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/README.md,sha256=fQ0VqirtiyA1y2P_jXCTojMGQyxO1r6S9WYk-ge29Zo,9640
|
|
208
208
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/integ.backup-selection.ts,sha256=kaNB9DQen9nrE5Gj5XZkuP2LaAd53gndrPJGjjYwnaU,2160
|
|
209
209
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/integ.backup.ts,sha256=amNqCqf3dCzUrxLBBKm0zSEbsS--h7BMSNQZ_b7sQ68,2473
|
|
210
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md,sha256=
|
|
210
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md,sha256=Ol-eiW74jmh0NLbUR1fQobAof4_Nr16ztbODlYAaaWY,32427
|
|
211
211
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.batch-unique-name.ts,sha256=3tirUUq3KUiJVTnz7dhtEYSmDlUoLb3azlP9wzFZR2k,1171
|
|
212
212
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.ecs-exec-batch-job.ts,sha256=srHnG37mt_2ePCp0xjle83_q2f8zIz81h8b6hlgjS1o,4984
|
|
213
213
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.ecs-job-definition.ts,sha256=KW_7UN8nM62AJ_GKM6CnsqTp5ONuBaxRs9MGEk7B6ho,3894
|
|
@@ -516,7 +516,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.t
|
|
|
516
516
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-replica.ts,sha256=ZmN5tCVGuefUKdewkwcMC_vd1t8mYj0xowKTaAFq3P4,1613
|
|
517
517
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2.compound.ts,sha256=02z8ojStwkR4JEYiMHDD4VprWGuQQ2pKQMgq5_0rRmQ,1729
|
|
518
518
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-with-customized-role.ts,sha256=CDb1V4J2dg5-JCkFHBtF8wmMOoLaQ-6RDpZT9HnnTBg,2048
|
|
519
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md,sha256=
|
|
519
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md,sha256=MCtJ9Y9RChPkFDoSaAw9xXfIHOMwOiNnBdC9Ju3WEB8,103792
|
|
520
520
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-arm-support.ts,sha256=zgJ4WxeOAsMmxDW_kgxCUw9-i-hGFeBRX3Xd0-EMuFI,786
|
|
521
521
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-disable-al2023-feature-flag.ts,sha256=9gX9xZZuubyUZxCAXqctMSymojJoh893yTgqD-Dfo-k,954
|
|
522
522
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-userdatacausesreplacement.ts,sha256=5Vv0q_dk3vtXkam1V9tvu6HcoIv-cUK9pwIHSZvX0ro,1377
|
|
@@ -602,7 +602,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ
|
|
|
602
602
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-tarball.ts,sha256=pSbNMWSorKT7lUTXxnzkxpcRumKPYWUmcbqRSwwWOgI,937
|
|
603
603
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.nested-stacks-docker.ts,sha256=4hDobse34oIG2r0mjbYXzsEXXLEqv077jUh3pjoYmcc,981
|
|
604
604
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/CONTRIBUTING.md,sha256=TlNwpeYemLdYq4jdo24v7nwDIj3RmZ7u2j_LCQiQR74,2634
|
|
605
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=
|
|
605
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=YPVRivKcYqakbYLT5umv9BpbLI-4UL7HnJ8obDpmC8E,87794
|
|
606
606
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-docker-label.ts,sha256=avHktilCBVPuVelquVaY2ylRkSLraWn7vUIIIFPsbyI,1375
|
|
607
607
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-environment-variable.ts,sha256=sIdwJl7LYh5wlv_EDLPSGCavC2OF6W8IBwZ_hMOnCfw,1143
|
|
608
608
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts,sha256=qhtztZPppP98wdEneOEDI3p0P608q0DtS_Nv-6grLHM,1596
|
|
@@ -610,6 +610,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availa
|
|
|
610
610
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.awslogs-driver.ts,sha256=js3ZnGoPKDVQl5NhZqF-acS5BTNeRkKWBjHUYVJkV0Q,1322
|
|
611
611
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts,sha256=Rh8t4oub7rWxHATyTpwIbSjQwRAR8R8bpUXgAckK_mE,4222
|
|
612
612
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.bottlerocket.ts,sha256=pio8vLSNlFeokyocKepVUq1ZJXhhrC7iH2ZVJiJxatg,728
|
|
613
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.canary-deployment-strategy.ts,sha256=M05Nst_ZXx4KQQMcoI3lo5DIAMTd3LU87v4taHxJplI,3175
|
|
613
614
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider-managed-draining.ts,sha256=K_eRJ9thQNqqo1TrA_dOzgieYkuJnhGEbZQcR0hyBzo,1907
|
|
614
615
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.ts,sha256=i4ybZBXakmn9EOHwGKidhqPDOZlkWQcRxVOt4QoOA_k,1514
|
|
615
616
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-providers.ts,sha256=1JfeuquUWRLNw-FThuQac5sePyc_j4Gjx5iNjV9cbZM,892
|
|
@@ -644,8 +645,9 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.gravit
|
|
|
644
645
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.graviton.ts,sha256=-L0L2_uXEpuszWK0FNPNErOVzYj6jLz_GN__t3-IUJo,719
|
|
645
646
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts,sha256=VGnwETVmq2owapn3crFeJ187sqNYjb1afkBcNZaRNzs,1813
|
|
646
647
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-bridge-nw.ts,sha256=0nlq9ShB7EeFK-6OE6-id-5PCfhGaDf5snnzYNUnHCQ,1822
|
|
648
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.linear-deployment-strategy.ts,sha256=CjogKM6GaQu-5pqM-D2jTAd4FCJ_xS6MRTpqX24ma28,3175
|
|
647
649
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider-default-roles.ts,sha256=CuvR4P7pA9IYH_7SPDMMwXOeMyWlCkaaL4JBuuRLf0Y,2824
|
|
648
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts,sha256=
|
|
650
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts,sha256=jTg1AnixydDXHiDyb28UIx0vhTcIvkCtE0jzvLiI1Wo,3682
|
|
649
651
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts,sha256=2Fc943-G8gfENka_oSUmasxiA-qrTuget9URJhnSFa8,3330
|
|
650
652
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.nlb-awsvpc-nw.ts,sha256=vXdMwV8Ythm3Qa4cHX_mg0WjRESCMYe0GgA3tX_uqTk,1474
|
|
651
653
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.none-log-driver.ts,sha256=R_rAbncMvE7_vP397EaDSb0-e9C7_SXtGktw1l8i0lM,635
|
|
@@ -853,7 +855,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerato
|
|
|
853
855
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator/integ.globalaccelerator-unique-name.ts,sha256=LO9qlrFoOyrqUbi1H_eufzIccMZntbEKPI_p3ODrK1Y,383
|
|
854
856
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator-endpoints/README.md,sha256=ldPU_ydEQx_MPMu_3hTa9hc7JHLtjbnTIWGTvVOpUZA,407
|
|
855
857
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator-endpoints/integ.globalaccelerator.ts,sha256=uk9vhUCdpJUJjWHwURRrPD7PexkbQJ8vBiVgK8PZBEw,2416
|
|
856
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md,sha256=
|
|
858
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md,sha256=9RqavBvcHfeQNv5_mlmchYMZvSTSL4BPowF6eTZ91Cg,33363
|
|
857
859
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.access-key.ts,sha256=22q0DLYwDlurvFK4sErOqJgVliGyz28Xa0TKqGXHrmI,508
|
|
858
860
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.composite-principal.ts,sha256=geaeoyLvnbbSc6qtwGbVur9frN_Ff4fgHNZG7Yah0Rk,624
|
|
859
861
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.condition-with-ref.ts,sha256=yqu0BUZ2WDmMnwO2XKaFhsji4Cp_sqCDolDnDCfcHWw,925
|
|
@@ -991,13 +993,14 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/in
|
|
|
991
993
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.modules.ts,sha256=etsjdg80JJb_gag1tC0I2DgOcARVOCrRZsQYr46sQv0,2323
|
|
992
994
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts,sha256=6gF-Mb9LgF8E5PpGwkBmaWqepqEqzbTuSpnnqKZ1_sU,1721
|
|
993
995
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.specifycode.ts,sha256=JdlBTKpPf5xlQlfTYlXUMbMVwGD0a-heEYPx0ZNFO9U,1938
|
|
994
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=
|
|
996
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=BLjCjO2f3UOQdfF7uQdP-gv_lpBP2T_BZD0nYNxCjEE,25047
|
|
995
997
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric.ts,sha256=nHHNSRyq2eGVZkZe1_UWwdr7vWnBDqdMWoiArzJleHI,1256
|
|
996
998
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-group-metrics.ts,sha256=3t37idu5s4B6dxhZWD_7pNeue7eJCume6MdEgtc1TTs,707
|
|
997
999
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-group.ts,sha256=ffml_7GAfXAFSr_qqzrBZ08eG_ZhLS1T-8d-hdsxNf4,1312
|
|
998
1000
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-resource-policy-any-principal.ts,sha256=koq7lWWdsPm9OJjkE6EWIiKZaEEuUhvQckp-7yIaqEo,829
|
|
999
1001
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention-retries.ts,sha256=b3uLWuEZZeOOkwno6y3yBFVT6AbcX9z1VITcyupKnfQ,1336
|
|
1000
1002
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention.ts,sha256=KPWCfAezyRQ9KZR88gbnsIb9TUrjjUYLDMDjFc54XvU,900
|
|
1003
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-deletionprotection.ts,sha256=Dm6vqjQDHA6P6cCWFsxpv3Dm8ML58FGrX34BdnFWrfI,383
|
|
1001
1004
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-grantread.ts,sha256=3Gjcq80bm6qeqjTmq_rbVVYvbWDTLkGWFclh3_XLY2Q,491
|
|
1002
1005
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts,sha256=2DmUNPzqW5FOnYRckyW74XKJwbubhc2gdIT2YhUoi9E,1271
|
|
1003
1006
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroupclass.ts,sha256=ZiJznICcvepDPf97FzReAD5l9FTnWtL6RsNw1cQABgg,2001
|
|
@@ -1256,7 +1259,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ses-actions/READ
|
|
|
1256
1259
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ses-actions/integ.actions.ts,sha256=9SId0tGcEo_AP0hXSzfzFNKkl0uBBrSMjc63U4mmCy8,3454
|
|
1257
1260
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/README.md,sha256=NuFag3Zu8HNFn_RMoyzge9Lykhs7RE_dYEdwNWe9oL0,1833
|
|
1258
1261
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/integ.signing-profile.ts,sha256=xDR4nUdfDs-rUfOr_IHsHKwxWPVCYY99ZEgxj4bsrs8,790
|
|
1259
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/README.md,sha256=
|
|
1262
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/README.md,sha256=BYeHqkFabyDI4FxlJtivVhCVq7jfn693NPkiEo3S47Y,11113
|
|
1260
1263
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/integ.sns-fifo-archive-policy.ts,sha256=GyvuMcAc7bJSwBNEOrT6Qlkp63wT9pLsiNE2gKU99ZE,579
|
|
1261
1264
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/integ.sns-fifo-throughput-scope.ts,sha256=mRUcBRdBXyaTAsMnMm3OUNQRbNzkcHIOFQ4csRF_FLc,732
|
|
1262
1265
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/integ.sns-fifo.no-name.ts,sha256=AgewawtcfBcxfwZG3O_Aix3FWHIB1szO5u9oIl4l8aQ,352
|
|
@@ -1463,7 +1466,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-awscli/
|
|
|
1463
1466
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-kubectl/integ.kubectl-layer.ts,sha256=lp8Jv0sePcfotHCAspdtoqZVgAWhha9hciDVI5w6Ps4,1513
|
|
1464
1467
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-node-proxy-agent/README.md,sha256=eWYOUl_BRExsSMY1mzF5V1oGsCuxVR-6MSIuapbOS4Y,632
|
|
1465
1468
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-node-proxy-agent/integ.node-proxy-agent.ts,sha256=YSEuo5dS-TMKovqWBuW9uWeJj0NOJd1UgOTt-2wZVMc,1545
|
|
1466
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/ORIGINAL_API.md,sha256=
|
|
1469
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/ORIGINAL_API.md,sha256=McSbYx7QKEfhdahTRYvWBbnHHsGmLO7glGtaKYHPX9w,26758
|
|
1467
1470
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md,sha256=UEyWH7ey2xFDUNla-gNh7-zm081fRRJhkTw9pnK6Ozc,71588
|
|
1468
1471
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.cross-account-pipeline-action.ts,sha256=A18UXJLsi5tyYfCp4Dw6SxI1Vk5JikNX1F0NbfEnICw,4804
|
|
1469
1472
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-reduce-stagerole-scope.ts,sha256=YTTB_Vo8WqHM9Q12ARHyeLQfIyrvE8qGJ-c8Ac8Rx2c,2637
|
|
@@ -1486,8 +1489,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
|
|
|
1486
1489
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
|
|
1487
1490
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
|
|
1488
1491
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=LfeVru_CggiFXKPVa8vwt6Uv43SV3oAioDGmd8PyMHc,2859
|
|
1489
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1490
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1491
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1492
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1493
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1492
|
+
konokenj_cdk_api_mcp_server-0.71.0.dist-info/METADATA,sha256=db6fYQgN-LZstHtQQSfe_ZVp6UVHFX4-G48bfMlnsEs,2646
|
|
1493
|
+
konokenj_cdk_api_mcp_server-0.71.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1494
|
+
konokenj_cdk_api_mcp_server-0.71.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
|
|
1495
|
+
konokenj_cdk_api_mcp_server-0.71.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
|
|
1496
|
+
konokenj_cdk_api_mcp_server-0.71.0.dist-info/RECORD,,
|
{konokenj_cdk_api_mcp_server-0.69.0.dist-info → konokenj_cdk_api_mcp_server-0.71.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|