aws-cdk 2.1006.0 → 3.0.0

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.
Files changed (256) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +104 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth.d.ts +1 -0
  6. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  7. package/lib/api/bootstrap.d.ts +1 -0
  8. package/lib/api/bootstrap.js +18 -0
  9. package/lib/api/cloud-assembly.d.ts +1 -0
  10. package/lib/api/cloud-assembly.js +18 -0
  11. package/lib/api/cloudformation.d.ts +1 -0
  12. package/lib/api/cloudformation.js +18 -0
  13. package/lib/api/context.d.ts +1 -40
  14. package/lib/api/context.js +16 -80
  15. package/lib/api/deployments.d.ts +1 -0
  16. package/lib/api/deployments.js +18 -0
  17. package/lib/api/environment.d.ts +1 -0
  18. package/lib/api/environment.js +18 -0
  19. package/lib/api/garbage-collection.d.ts +1 -0
  20. package/lib/api/garbage-collection.js +18 -0
  21. package/lib/api/hotswap.d.ts +1 -0
  22. package/lib/api/hotswap.js +18 -0
  23. package/lib/api/index.d.ts +5 -1
  24. package/lib/api/index.js +6 -2
  25. package/lib/api/logs-monitor.d.ts +1 -0
  26. package/lib/api/logs-monitor.js +18 -0
  27. package/lib/api/notices.d.ts +1 -0
  28. package/lib/api/notices.js +18 -0
  29. package/lib/api/plugin.d.ts +1 -0
  30. package/lib/api/{resource-import/index.js → plugin.js} +2 -3
  31. package/lib/api/resource-import.d.ts +1 -0
  32. package/lib/api/resource-import.js +18 -0
  33. package/lib/api/rwlock.d.ts +1 -0
  34. package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
  35. package/lib/api/settings.d.ts +1 -26
  36. package/lib/api/settings.js +16 -103
  37. package/lib/api/stack-events.d.ts +1 -0
  38. package/lib/api/stack-events.js +18 -0
  39. package/lib/api/tags.d.ts +1 -9
  40. package/lib/api/tags.js +16 -8
  41. package/lib/api/toolkit-info.d.ts +1 -52
  42. package/lib/api/toolkit-info.js +16 -152
  43. package/lib/api/tree.d.ts +1 -31
  44. package/lib/api/tree.js +16 -35
  45. package/lib/api/work-graph.d.ts +1 -0
  46. package/lib/api/work-graph.js +18 -0
  47. package/lib/api-private.d.ts +3 -0
  48. package/lib/api-private.js +22 -0
  49. package/lib/cli/cdk-toolkit.d.ts +20 -16
  50. package/lib/cli/cdk-toolkit.js +102 -37
  51. package/lib/cli/cli-config.js +2 -2
  52. package/lib/cli/cli.d.ts +1 -1
  53. package/lib/cli/cli.js +22 -19
  54. package/lib/cli/io-host/cli-io-host.js +2 -2
  55. package/lib/cli/pretty-print-error.js +3 -1
  56. package/lib/cli/util/npm.d.ts +4 -1
  57. package/lib/cli/util/npm.js +25 -13
  58. package/lib/cli/version.d.ts +1 -1
  59. package/lib/cli/version.js +21 -25
  60. package/lib/commands/context.js +3 -2
  61. package/lib/commands/diff.d.ts +1 -50
  62. package/lib/commands/diff.js +5 -213
  63. package/lib/commands/init/init.js +3 -2
  64. package/lib/commands/list-stacks.js +4 -4
  65. package/lib/context-providers/ami.d.ts +1 -13
  66. package/lib/context-providers/ami.js +16 -48
  67. package/lib/context-providers/availability-zones.d.ts +1 -13
  68. package/lib/context-providers/availability-zones.js +16 -25
  69. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  70. package/lib/context-providers/cc-api-provider.js +16 -136
  71. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  72. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  73. package/lib/context-providers/hosted-zones.d.ts +1 -12
  74. package/lib/context-providers/hosted-zones.js +16 -65
  75. package/lib/context-providers/index.d.ts +1 -44
  76. package/lib/context-providers/index.js +15 -126
  77. package/lib/context-providers/keys.d.ts +1 -13
  78. package/lib/context-providers/keys.js +16 -50
  79. package/lib/context-providers/load-balancers.d.ts +1 -20
  80. package/lib/context-providers/load-balancers.js +16 -154
  81. package/lib/context-providers/security-groups.d.ts +1 -9
  82. package/lib/context-providers/security-groups.js +16 -66
  83. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  84. package/lib/context-providers/ssm-parameters.js +16 -57
  85. package/lib/context-providers/vpcs.d.ts +1 -13
  86. package/lib/context-providers/vpcs.js +16 -285
  87. package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
  88. package/lib/cxapp/cloud-assembly.js +108 -0
  89. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
  90. package/lib/cxapp/cloud-executable.js +92 -0
  91. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  92. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  93. package/lib/cxapp/exec.d.ts +14 -0
  94. package/lib/cxapp/exec.js +157 -0
  95. package/lib/cxapp/index.d.ts +4 -0
  96. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  97. package/lib/index.js +134493 -125222
  98. package/lib/init-templates/.init-version.json +1 -1
  99. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  100. package/lib/legacy-aws-auth.d.ts +74 -0
  101. package/lib/legacy-aws-auth.js +40 -0
  102. package/lib/legacy-exports-source.d.ts +13 -18
  103. package/lib/legacy-exports-source.js +42 -49
  104. package/lib/legacy-exports.d.ts +3 -6
  105. package/lib/legacy-exports.js +5 -5
  106. package/lib/legacy-types.d.ts +31 -0
  107. package/lib/legacy-types.js +3 -0
  108. package/package.json +19 -18
  109. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  110. package/lib/api/aws-auth/account-cache.js +0 -99
  111. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  112. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  113. package/lib/api/aws-auth/cached.d.ts +0 -11
  114. package/lib/api/aws-auth/cached.js +0 -26
  115. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  116. package/lib/api/aws-auth/credential-plugins.js +0 -152
  117. package/lib/api/aws-auth/index.d.ts +0 -3
  118. package/lib/api/aws-auth/index.js +0 -20
  119. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  120. package/lib/api/aws-auth/provider-caching.js +0 -24
  121. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  122. package/lib/api/aws-auth/sdk-logger.js +0 -124
  123. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  124. package/lib/api/aws-auth/sdk-provider.js +0 -357
  125. package/lib/api/aws-auth/sdk.d.ts +0 -229
  126. package/lib/api/aws-auth/sdk.js +0 -373
  127. package/lib/api/aws-auth/tracing.d.ts +0 -11
  128. package/lib/api/aws-auth/tracing.js +0 -60
  129. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  130. package/lib/api/aws-auth/user-agent.js +0 -20
  131. package/lib/api/aws-auth/util.d.ts +0 -6
  132. package/lib/api/aws-auth/util.js +0 -23
  133. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  134. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  135. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  136. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  137. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  138. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  139. package/lib/api/bootstrap/index.d.ts +0 -2
  140. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  141. package/lib/api/bootstrap/legacy-template.js +0 -82
  142. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  143. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  144. package/lib/api/cloudformation/index.d.ts +0 -4
  145. package/lib/api/cloudformation/index.js +0 -21
  146. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
  147. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  148. package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
  149. package/lib/api/cloudformation/stack-helpers.js +0 -158
  150. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  151. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  152. package/lib/api/cxapp/cloud-assembly.js +0 -304
  153. package/lib/api/cxapp/cloud-executable.js +0 -89
  154. package/lib/api/cxapp/exec.d.ts +0 -56
  155. package/lib/api/cxapp/exec.js +0 -272
  156. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  157. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  158. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  159. package/lib/api/deployments/asset-publishing.js +0 -141
  160. package/lib/api/deployments/assets.d.ts +0 -11
  161. package/lib/api/deployments/assets.js +0 -109
  162. package/lib/api/deployments/cfn-api.d.ts +0 -138
  163. package/lib/api/deployments/cfn-api.js +0 -438
  164. package/lib/api/deployments/checks.d.ts +0 -9
  165. package/lib/api/deployments/checks.js +0 -72
  166. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  167. package/lib/api/deployments/deploy-stack.js +0 -478
  168. package/lib/api/deployments/deployment-method.d.ts +0 -24
  169. package/lib/api/deployments/deployment-method.js +0 -3
  170. package/lib/api/deployments/deployment-result.d.ts +0 -21
  171. package/lib/api/deployments/deployment-result.js +0 -10
  172. package/lib/api/deployments/deployments.d.ts +0 -296
  173. package/lib/api/deployments/deployments.js +0 -331
  174. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  175. package/lib/api/deployments/hotswap-deployments.js +0 -441
  176. package/lib/api/deployments/index.d.ts +0 -4
  177. package/lib/api/deployments/index.js +0 -21
  178. package/lib/api/environment/environment-access.d.ts +0 -140
  179. package/lib/api/environment/environment-access.js +0 -202
  180. package/lib/api/environment/environment-resources.d.ts +0 -75
  181. package/lib/api/environment/environment-resources.js +0 -207
  182. package/lib/api/environment/index.d.ts +0 -3
  183. package/lib/api/environment/index.js +0 -20
  184. package/lib/api/environment/placeholders.d.ts +0 -10
  185. package/lib/api/environment/placeholders.js +0 -23
  186. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  187. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  188. package/lib/api/garbage-collection/index.d.ts +0 -1
  189. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  190. package/lib/api/garbage-collection/progress-printer.js +0 -70
  191. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  192. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  193. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  194. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  195. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  196. package/lib/api/hotswap/code-build-projects.js +0 -62
  197. package/lib/api/hotswap/common.d.ts +0 -89
  198. package/lib/api/hotswap/common.js +0 -128
  199. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  200. package/lib/api/hotswap/ecs-services.js +0 -159
  201. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  202. package/lib/api/hotswap/lambda-functions.js +0 -297
  203. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  204. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  205. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  206. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  207. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  208. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  209. package/lib/api/logs/index.d.ts +0 -2
  210. package/lib/api/logs/logs-monitor.d.ts +0 -76
  211. package/lib/api/logs/logs-monitor.js +0 -187
  212. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  213. package/lib/api/plugin/context-provider-plugin.js +0 -7
  214. package/lib/api/plugin/index.d.ts +0 -3
  215. package/lib/api/plugin/index.js +0 -20
  216. package/lib/api/plugin/mode.d.ts +0 -4
  217. package/lib/api/plugin/mode.js +0 -9
  218. package/lib/api/plugin/plugin.d.ts +0 -63
  219. package/lib/api/plugin/plugin.js +0 -102
  220. package/lib/api/resource-import/importer.d.ts +0 -220
  221. package/lib/api/resource-import/importer.js +0 -331
  222. package/lib/api/resource-import/index.d.ts +0 -2
  223. package/lib/api/resource-import/migrator.d.ts +0 -26
  224. package/lib/api/resource-import/migrator.js +0 -71
  225. package/lib/api/stack-events/index.d.ts +0 -3
  226. package/lib/api/stack-events/index.js +0 -20
  227. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  228. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  229. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  230. package/lib/api/stack-events/stack-event-poller.js +0 -128
  231. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  232. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  233. package/lib/api/stack-events/stack-status.d.ts +0 -42
  234. package/lib/api/stack-events/stack-status.js +0 -88
  235. package/lib/api/util/rwlock.d.ts +0 -65
  236. package/lib/api/util/rwlock.js +0 -179
  237. package/lib/api/work-graph/index.d.ts +0 -3
  238. package/lib/api/work-graph/index.js +0 -20
  239. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  240. package/lib/api/work-graph/work-graph-builder.js +0 -168
  241. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  242. package/lib/api/work-graph/work-graph-types.js +0 -13
  243. package/lib/api/work-graph/work-graph.d.ts +0 -72
  244. package/lib/api/work-graph/work-graph.js +0 -346
  245. package/lib/cli/activity-printer/base.d.ts +0 -50
  246. package/lib/cli/activity-printer/base.js +0 -114
  247. package/lib/cli/activity-printer/current.d.ts +0 -26
  248. package/lib/cli/activity-printer/current.js +0 -118
  249. package/lib/cli/activity-printer/display.d.ts +0 -13
  250. package/lib/cli/activity-printer/display.js +0 -80
  251. package/lib/cli/activity-printer/history.d.ts +0 -32
  252. package/lib/cli/activity-printer/history.js +0 -108
  253. package/lib/cli/activity-printer/index.d.ts +0 -3
  254. package/lib/cli/activity-printer/index.js +0 -20
  255. package/lib/notices.d.ts +0 -203
  256. package/lib/notices.js +0 -411
@@ -1,140 +0,0 @@
1
- import type * as cxapi from '@aws-cdk/cx-api';
2
- import type { SDK } from '../aws-auth';
3
- import type { EnvironmentResources } from './environment-resources';
4
- import type { StringWithoutPlaceholders } from './placeholders';
5
- import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
6
- import type { SdkProvider } from '../aws-auth/sdk-provider';
7
- /**
8
- * Access particular AWS resources, based on information from the CX manifest
9
- *
10
- * It is not possible to grab direct access to AWS credentials; 9 times out of 10
11
- * we have to allow for role assumption, and role assumption can only work if
12
- * there is a CX Manifest that contains a role ARN.
13
- *
14
- * This class exists so new code isn't tempted to go and get SDK credentials directly.
15
- */
16
- export declare class EnvironmentAccess {
17
- private readonly sdkProvider;
18
- private readonly sdkCache;
19
- private readonly environmentResources;
20
- private readonly ioHelper;
21
- constructor(sdkProvider: SdkProvider, toolkitStackName: string, ioHelper: IoHelper);
22
- /**
23
- * Resolves the environment for a stack.
24
- */
25
- resolveStackEnvironment(stack: cxapi.CloudFormationStackArtifact): Promise<cxapi.Environment>;
26
- /**
27
- * Get an SDK to access the given stack's environment for stack operations
28
- *
29
- * Will ask plugins for readonly credentials if available, use the default
30
- * AWS credentials if not.
31
- *
32
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
33
- * policies to see what you can do with this role.
34
- */
35
- accessStackForReadOnlyStackOperations(stack: cxapi.CloudFormationStackArtifact): Promise<TargetEnvironment>;
36
- /**
37
- * Get an SDK to access the given stack's environment for stack operations
38
- *
39
- * Will ask plugins for mutating credentials if available, use the default AWS
40
- * credentials if not. The `mode` parameter is only used for querying
41
- * plugins.
42
- *
43
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
44
- * policies to see what you can do with this role.
45
- */
46
- accessStackForMutableStackOperations(stack: cxapi.CloudFormationStackArtifact): Promise<TargetEnvironment>;
47
- /**
48
- * Get an SDK to access the given stack's environment for environmental lookups
49
- *
50
- * Will use a plugin if available, use the default AWS credentials if not.
51
- * The `mode` parameter is only used for querying plugins.
52
- *
53
- * Will assume the lookup role if configured on the stack. Check the default `lookup-role`
54
- * policies to see what you can do with this role. It can generally read everything
55
- * in the account that does not require KMS access.
56
- *
57
- * ---
58
- *
59
- * For backwards compatibility reasons, there are some scenarios that are handled here:
60
- *
61
- * 1. The lookup role may not exist (it was added in bootstrap stack version 7). If so:
62
- * a. Return the default credentials if the default credentials are for the stack account
63
- * (you will notice this as `isFallbackCredentials=true`).
64
- * b. Throw an error if the default credentials are not for the stack account.
65
- *
66
- * 2. The lookup role may not have the correct permissions (for example, ReadOnlyAccess was added in
67
- * bootstrap stack version 8); the stack will have a minimum version number on it.
68
- * a. If it does not we throw an error which should be handled in the calling
69
- * function (and fallback to use a different role, etc)
70
- *
71
- * Upon success, caller will have an SDK for the right account, which may or may not have
72
- * the right permissions.
73
- */
74
- accessStackForLookup(stack: cxapi.CloudFormationStackArtifact): Promise<TargetEnvironment>;
75
- /**
76
- * Get an SDK to access the given stack's environment for reading stack attributes
77
- *
78
- * Will use a plugin if available, use the default AWS credentials if not.
79
- * The `mode` parameter is only used for querying plugins.
80
- *
81
- * Will try to assume the lookup role if given, will use the regular stack operations
82
- * access (deploy-role) otherwise. When calling this, you should assume that you will get
83
- * the least privileged role, so don't try to use it for anything the `deploy-role`
84
- * wouldn't be able to do. Also you cannot rely on being able to read encrypted anything.
85
- */
86
- accessStackForLookupBestEffort(stack: cxapi.CloudFormationStackArtifact): Promise<TargetEnvironment>;
87
- /**
88
- * Get an SDK to access the given stack's environment for stack operations
89
- *
90
- * Will use a plugin if available, use the default AWS credentials if not.
91
- * The `mode` parameter is only used for querying plugins.
92
- *
93
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
94
- * policies to see what you can do with this role.
95
- */
96
- private accessStackForStackOperations;
97
- /**
98
- * Prepare an SDK for use in the given environment and optionally with a role assumed.
99
- */
100
- private prepareSdk;
101
- private cachedSdkForEnvironment;
102
- }
103
- /**
104
- * SDK obtained by assuming the deploy role
105
- * for a given environment
106
- */
107
- export interface TargetEnvironment {
108
- /**
109
- * The SDK for the given environment
110
- */
111
- readonly sdk: SDK;
112
- /**
113
- * The resolved environment for the stack
114
- * (no more 'unknown-account/unknown-region')
115
- */
116
- readonly resolvedEnvironment: cxapi.Environment;
117
- /**
118
- * Access class for environmental resources to help the deployment
119
- */
120
- readonly resources: EnvironmentResources;
121
- /**
122
- * Whether or not we assumed a role in the process of getting these credentials
123
- */
124
- readonly didAssumeRole: boolean;
125
- /**
126
- * Whether or not these are fallback credentials
127
- *
128
- * Fallback credentials means that assuming the intended role failed, but the
129
- * base credentials happen to be for the right account so we just picked those
130
- * and hope the future SDK calls succeed.
131
- *
132
- * This is a backwards compatibility mechanism from around the time we introduced
133
- * deployment roles.
134
- */
135
- readonly isFallbackCredentials: boolean;
136
- /**
137
- * Replace environment placeholders according to the current environment
138
- */
139
- replacePlaceholders(x: string | undefined): Promise<StringWithoutPlaceholders | undefined>;
140
- }
@@ -1,202 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnvironmentAccess = void 0;
4
- const environment_resources_1 = require("./environment-resources");
5
- const placeholders_1 = require("./placeholders");
6
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
7
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
8
- const util_1 = require("../../util");
9
- const mode_1 = require("../plugin/mode");
10
- /**
11
- * Access particular AWS resources, based on information from the CX manifest
12
- *
13
- * It is not possible to grab direct access to AWS credentials; 9 times out of 10
14
- * we have to allow for role assumption, and role assumption can only work if
15
- * there is a CX Manifest that contains a role ARN.
16
- *
17
- * This class exists so new code isn't tempted to go and get SDK credentials directly.
18
- */
19
- class EnvironmentAccess {
20
- constructor(sdkProvider, toolkitStackName, ioHelper) {
21
- this.sdkProvider = sdkProvider;
22
- this.sdkCache = new Map();
23
- this.environmentResources = new environment_resources_1.EnvironmentResourcesRegistry(toolkitStackName);
24
- this.ioHelper = ioHelper;
25
- }
26
- /**
27
- * Resolves the environment for a stack.
28
- */
29
- async resolveStackEnvironment(stack) {
30
- return this.sdkProvider.resolveEnvironment(stack.environment);
31
- }
32
- /**
33
- * Get an SDK to access the given stack's environment for stack operations
34
- *
35
- * Will ask plugins for readonly credentials if available, use the default
36
- * AWS credentials if not.
37
- *
38
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
39
- * policies to see what you can do with this role.
40
- */
41
- async accessStackForReadOnlyStackOperations(stack) {
42
- return this.accessStackForStackOperations(stack, mode_1.Mode.ForReading);
43
- }
44
- /**
45
- * Get an SDK to access the given stack's environment for stack operations
46
- *
47
- * Will ask plugins for mutating credentials if available, use the default AWS
48
- * credentials if not. The `mode` parameter is only used for querying
49
- * plugins.
50
- *
51
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
52
- * policies to see what you can do with this role.
53
- */
54
- async accessStackForMutableStackOperations(stack) {
55
- return this.accessStackForStackOperations(stack, mode_1.Mode.ForWriting);
56
- }
57
- /**
58
- * Get an SDK to access the given stack's environment for environmental lookups
59
- *
60
- * Will use a plugin if available, use the default AWS credentials if not.
61
- * The `mode` parameter is only used for querying plugins.
62
- *
63
- * Will assume the lookup role if configured on the stack. Check the default `lookup-role`
64
- * policies to see what you can do with this role. It can generally read everything
65
- * in the account that does not require KMS access.
66
- *
67
- * ---
68
- *
69
- * For backwards compatibility reasons, there are some scenarios that are handled here:
70
- *
71
- * 1. The lookup role may not exist (it was added in bootstrap stack version 7). If so:
72
- * a. Return the default credentials if the default credentials are for the stack account
73
- * (you will notice this as `isFallbackCredentials=true`).
74
- * b. Throw an error if the default credentials are not for the stack account.
75
- *
76
- * 2. The lookup role may not have the correct permissions (for example, ReadOnlyAccess was added in
77
- * bootstrap stack version 8); the stack will have a minimum version number on it.
78
- * a. If it does not we throw an error which should be handled in the calling
79
- * function (and fallback to use a different role, etc)
80
- *
81
- * Upon success, caller will have an SDK for the right account, which may or may not have
82
- * the right permissions.
83
- */
84
- async accessStackForLookup(stack) {
85
- if (!stack.environment) {
86
- throw new api_1.ToolkitError(`The stack ${stack.displayName} does not have an environment`);
87
- }
88
- const lookupEnv = await this.prepareSdk({
89
- environment: stack.environment,
90
- mode: mode_1.Mode.ForReading,
91
- assumeRoleArn: stack.lookupRole?.arn,
92
- assumeRoleExternalId: stack.lookupRole?.assumeRoleExternalId,
93
- assumeRoleAdditionalOptions: stack.lookupRole?.assumeRoleAdditionalOptions,
94
- });
95
- // if we succeed in assuming the lookup role, make sure we have the correct bootstrap stack version
96
- if (lookupEnv.didAssumeRole && stack.lookupRole?.bootstrapStackVersionSsmParameter && stack.lookupRole.requiresBootstrapStackVersion) {
97
- const version = await lookupEnv.resources.versionFromSsmParameter(stack.lookupRole.bootstrapStackVersionSsmParameter);
98
- if (version < stack.lookupRole.requiresBootstrapStackVersion) {
99
- throw new api_1.ToolkitError(`Bootstrap stack version '${stack.lookupRole.requiresBootstrapStackVersion}' is required, found version '${version}'. To get rid of this error, please upgrade to bootstrap version >= ${stack.lookupRole.requiresBootstrapStackVersion}`);
100
- }
101
- }
102
- if (lookupEnv.isFallbackCredentials) {
103
- const arn = await lookupEnv.replacePlaceholders(stack.lookupRole?.arn);
104
- await this.ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_WARN.msg(`Lookup role ${arn} was not assumed. Proceeding with default credentials.`));
105
- }
106
- return lookupEnv;
107
- }
108
- /**
109
- * Get an SDK to access the given stack's environment for reading stack attributes
110
- *
111
- * Will use a plugin if available, use the default AWS credentials if not.
112
- * The `mode` parameter is only used for querying plugins.
113
- *
114
- * Will try to assume the lookup role if given, will use the regular stack operations
115
- * access (deploy-role) otherwise. When calling this, you should assume that you will get
116
- * the least privileged role, so don't try to use it for anything the `deploy-role`
117
- * wouldn't be able to do. Also you cannot rely on being able to read encrypted anything.
118
- */
119
- async accessStackForLookupBestEffort(stack) {
120
- if (!stack.environment) {
121
- throw new api_1.ToolkitError(`The stack ${stack.displayName} does not have an environment`);
122
- }
123
- try {
124
- return await this.accessStackForLookup(stack);
125
- }
126
- catch (e) {
127
- await this.ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_WARN.msg(`${(0, util_1.formatErrorMessage)(e)}`));
128
- }
129
- return this.accessStackForStackOperations(stack, mode_1.Mode.ForReading);
130
- }
131
- /**
132
- * Get an SDK to access the given stack's environment for stack operations
133
- *
134
- * Will use a plugin if available, use the default AWS credentials if not.
135
- * The `mode` parameter is only used for querying plugins.
136
- *
137
- * Will assume the deploy role if configured on the stack. Check the default `deploy-role`
138
- * policies to see what you can do with this role.
139
- */
140
- async accessStackForStackOperations(stack, mode) {
141
- if (!stack.environment) {
142
- throw new api_1.ToolkitError(`The stack ${stack.displayName} does not have an environment`);
143
- }
144
- return this.prepareSdk({
145
- environment: stack.environment,
146
- mode,
147
- assumeRoleArn: stack.assumeRoleArn,
148
- assumeRoleExternalId: stack.assumeRoleExternalId,
149
- assumeRoleAdditionalOptions: stack.assumeRoleAdditionalOptions,
150
- });
151
- }
152
- /**
153
- * Prepare an SDK for use in the given environment and optionally with a role assumed.
154
- */
155
- async prepareSdk(options) {
156
- const resolvedEnvironment = await this.sdkProvider.resolveEnvironment(options.environment);
157
- // Substitute any placeholders with information about the current environment
158
- const { assumeRoleArn } = await (0, placeholders_1.replaceEnvPlaceholders)({
159
- assumeRoleArn: options.assumeRoleArn,
160
- }, resolvedEnvironment, this.sdkProvider);
161
- const stackSdk = await this.cachedSdkForEnvironment(resolvedEnvironment, options.mode, {
162
- assumeRoleArn,
163
- assumeRoleExternalId: options.assumeRoleExternalId,
164
- assumeRoleAdditionalOptions: options.assumeRoleAdditionalOptions,
165
- });
166
- return {
167
- sdk: stackSdk.sdk,
168
- resolvedEnvironment,
169
- resources: this.environmentResources.for(resolvedEnvironment, stackSdk.sdk, this.ioHelper),
170
- // If we asked for a role, did not successfully assume it, and yet got here without an exception: that
171
- // means we must have fallback credentials.
172
- isFallbackCredentials: !stackSdk.didAssumeRole && !!assumeRoleArn,
173
- didAssumeRole: stackSdk.didAssumeRole,
174
- replacePlaceholders: async (str) => {
175
- const ret = await (0, placeholders_1.replaceEnvPlaceholders)({ str }, resolvedEnvironment, this.sdkProvider);
176
- return ret.str;
177
- },
178
- };
179
- }
180
- async cachedSdkForEnvironment(environment, mode, options) {
181
- const cacheKeyElements = [
182
- environment.account,
183
- environment.region,
184
- `${mode}`,
185
- options?.assumeRoleArn ?? '',
186
- options?.assumeRoleExternalId ?? '',
187
- ];
188
- if (options?.assumeRoleAdditionalOptions) {
189
- cacheKeyElements.push(JSON.stringify(options.assumeRoleAdditionalOptions));
190
- }
191
- const cacheKey = cacheKeyElements.join(':');
192
- const existing = this.sdkCache.get(cacheKey);
193
- if (existing) {
194
- return existing;
195
- }
196
- const ret = await this.sdkProvider.forEnvironment(environment, mode, options);
197
- this.sdkCache.set(cacheKey, ret);
198
- return ret;
199
- }
200
- }
201
- exports.EnvironmentAccess = EnvironmentAccess;
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnQtYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLG1FQUF1RTtBQUV2RSxpREFBd0Q7QUFDeEQsMEVBQWdGO0FBQ2hGLHlGQUFnRztBQUNoRyxxQ0FBZ0Q7QUFFaEQseUNBQXNDO0FBRXRDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxpQkFBaUI7SUFLNUIsWUFBNkIsV0FBd0IsRUFBRSxnQkFBd0IsRUFBRSxRQUFrQjtRQUF0RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUpwQyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7UUFLL0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksb0RBQTRCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBd0M7UUFDM0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMscUNBQXFDLENBQUMsS0FBd0M7UUFDekYsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLFdBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLEtBQXdDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxXQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUF3QztR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ICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBTREsgfSBmcm9tICcuLi9hd3MtYXV0aCc7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRSZXNvdXJjZXNSZWdpc3RyeSB9IGZyb20gJy4vZW52aXJvbm1lbnQtcmVzb3VyY2VzJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nV2l0aG91dFBsYWNlaG9sZGVycyB9IGZyb20gJy4vcGxhY2Vob2xkZXJzJztcbmltcG9ydCB7IHJlcGxhY2VFbnZQbGFjZWhvbGRlcnMgfSBmcm9tICcuL3BsYWNlaG9sZGVycyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGknO1xuaW1wb3J0IHsgSU8sIHR5cGUgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbHNPcHRpb25zLCBTZGtGb3JFbnZpcm9ubWVudCwgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hd3MtYXV0aC9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbi9tb2RlJztcblxuLyoqXG4gKiBBY2Nlc3MgcGFydGljdWxhciBBV1MgcmVzb3VyY2VzLCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBDWCBtYW5pZmVzdFxuICpcbiAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBncmFiIGRpcmVjdCBhY2Nlc3MgdG8gQVdTIGNyZWRlbnRpYWxzOyA5IHRpbWVzIG91dCBvZiAxMFxuICogd2UgaGF2ZSB0byBhbGxvdyBmb3Igcm9sZSBhc3N1bXB0aW9uLCBhbmQgcm9sZSBhc3N1bXB0aW9uIGNhbiBvbmx5IHdvcmsgaWZcbiAqIHRoZXJlIGlzIGEgQ1ggTWFuaWZlc3QgdGhhdCBjb250YWlucyBhIHJvbGUgQVJOLlxuICpcbiAqIFRoaXMgY2xhc3MgZXhpc3RzIHNvIG5ldyBjb2RlIGlzbid0IHRlbXB0ZWQgdG8gZ28gYW5kIGdldCBTREsgY3JlZGVudGlhbHMgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudEFjY2VzcyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2RrQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgU2RrRm9yRW52aXJvbm1lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnRSZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzUmVnaXN0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLCB0b29sa2l0U3RhY2tOYW1lOiBzdHJpbmcsIGlvSGVscGVyOiBJb0hlbHBlcikge1xuICAgIHRoaXMuZW52aXJvbm1lbnRSZXNvdXJjZXMgPSBuZXcgRW52aXJvbm1lbnRSZXNvdXJjZXNSZWdpc3RyeSh0b29sa2l0U3RhY2tOYW1lKTtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGVudmlyb25tZW50IGZvciBhIHN0YWNrLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlc29sdmVTdGFja0Vudmlyb25tZW50KHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPGN4YXBpLkVudmlyb25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gU0RLIHRvIGFjY2VzcyB0aGUgZ2l2ZW4gc3RhY2sncyBlbnZpcm9ubWVudCBmb3Igc3RhY2sgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBXaWxsIGFzayBwbHVnaW5zIGZvciByZWFkb25seSBjcmVkZW50aWFscyBpZiBhdmFpbGFibGUsIHVzZSB0aGUgZGVmYXVsdFxuICAgKiBBV1MgY3JlZGVudGlhbHMgaWYgbm90LlxuICAgKlxuICAgKiBXaWxsIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUgaWYgY29uZmlndXJlZCBvbiB0aGUgc3RhY2suIENoZWNrIHRoZSBkZWZhdWx0IGBkZXBsb3ktcm9sZWBcbiAgICogcG9saWNpZXMgdG8gc2VlIHdoYXQgeW91IGNhbiBkbyB3aXRoIHRoaXMgcm9sZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBhY2Nlc3NTdGFja0ZvclJlYWRPbmx5U3RhY2tPcGVyYXRpb25zKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPFRhcmdldEVudmlyb25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzU3RhY2tGb3JTdGFja09wZXJhdGlvbnMoc3RhY2ssIE1vZGUuRm9yUmVhZGluZyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIFNESyB0byBhY2Nlc3MgdGhlIGdpdmVuIHN0YWNrJ3MgZW52aXJvbm1lbnQgZm9yIHN0YWNrIG9wZXJhdGlvbnNcbiAgICpcbiAgICogV2lsbCBhc2sgcGx1Z2lucyBmb3IgbXV0YXRpbmcgY3JlZGVudGlhbHMgaWYgYXZhaWxhYmxlLCB1c2UgdGhlIGRlZmF1bHQgQVdTXG4gICAqIGNyZWRlbnRpYWxzIGlmIG5vdC4gIFRoZSBgbW9kZWAgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCBmb3IgcXVlcnlpbmdcbiAgICogcGx1Z2lucy5cbiAgICpcbiAgICogV2lsbCBhc3N1bWUgdGhlIGRlcGxveSByb2xlIGlmIGNvbmZpZ3VyZWQgb24gdGhlIHN0YWNrLiBDaGVjayB0aGUgZGVmYXVsdCBgZGVwbG95LXJvbGVgXG4gICAqIHBvbGljaWVzIHRvIHNlZSB3aGF0IHlvdSBjYW4gZG8gd2l0aCB0aGlzIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWNjZXNzU3RhY2tGb3JNdXRhYmxlU3RhY2tPcGVyYXRpb25zKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPFRhcmdldEVudmlyb25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzU3RhY2tGb3JTdGFja09wZXJhdGlvbnMoc3RhY2ssIE1vZGUuRm9yV3JpdGluZyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIFNESyB0byBhY2Nlc3MgdGhlIGdpdmVuIHN0YWNrJ3MgZW52aXJvbm1lbnQgZm9yIGVudmlyb25tZW50YWwgbG9va3Vwc1xuICAgKlxuICAgKiBXaWxsIHVzZSBhIHBsdWdpbiBpZiBhdmFpbGFibGUsIHVzZSB0aGUgZGVmYXVsdCBBV1MgY3JlZGVudGlhbHMgaWYgbm90LlxuICAgKiBUaGUgYG1vZGVgIHBhcmFtZXRlciBpcyBvbmx5IHVzZWQgZm9yIHF1ZXJ5aW5nIHBsdWdpbnMuXG4gICAqXG4gICAqIFdpbGwgYXNzdW1lIHRoZSBsb29rdXAgcm9sZSBpZiBjb25maWd1cmVkIG9uIHRoZSBzdGFjay4gQ2hlY2sgdGhlIGRlZmF1bHQgYGxvb2t1cC1yb2xlYFxuICAgKiBwb2xpY2llcyB0byBzZWUgd2hhdCB5b3UgY2FuIGRvIHdpdGggdGhpcyByb2xlLiBJdCBjYW4gZ2VuZXJhbGx5IHJlYWQgZXZlcnl0aGluZ1xuICAgKiBpbiB0aGUgYWNjb3VudCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgS01TIGFjY2Vzcy5cbiAgICpcbiAgICogLS0tXG4gICAqXG4gICAqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBzY2VuYXJpb3MgdGhhdCBhcmUgaGFuZGxlZCBoZXJlOlxuICAgKlxuICAgKiAgMS4gVGhlIGxvb2t1cCByb2xlIG1heSBub3QgZXhpc3QgKGl0IHdhcyBhZGRlZCBpbiBib290c3RyYXAgc3RhY2sgdmVyc2lvbiA3KS4gSWYgc286XG4gICAqICAgICBhLiBSZXR1cm4gdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgaWYgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgYXJlIGZvciB0aGUgc3RhY2sgYWNjb3VudFxuICAgKiAgICAgICAgKHlvdSB3aWxsIG5vdGljZSB0aGlzIGFzIGBpc0ZhbGxiYWNrQ3JlZGVudGlhbHM9dHJ1ZWApLlxuICAgKiAgICAgYi4gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgYXJlIG5vdCBmb3IgdGhlIHN0YWNrIGFjY291bnQuXG4gICAqXG4gICAqICAyLiBUaGUgbG9va3VwIHJvbGUgbWF5IG5vdCBoYXZlIHRoZSBjb3JyZWN0IHBlcm1pc3Npb25zIChmb3IgZXhhbXBsZSwgUmVhZE9ubHlBY2Nlc3Mgd2FzIGFkZGVkIGluXG4gICAqICAgICBib290c3RyYXAgc3RhY2sgdmVyc2lvbiA4KTsgdGhlIHN0YWNrIHdpbGwgaGF2ZSBhIG1pbmltdW0gdmVyc2lvbiBudW1iZXIgb24gaXQuXG4gICAqICAgICBhLiBJZiBpdCBkb2VzIG5vdCB3ZSB0aHJvdyBhbiBlcnJvciB3aGljaCBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgY2FsbGluZ1xuICAgKiAgICAgICAgZnVuY3Rpb24gKGFuZCBmYWxsYmFjayB0byB1c2UgYSBkaWZmZXJlbnQgcm9sZSwgZXRjKVxuICAgKlxuICAgKiBVcG9uIHN1Y2Nlc3MsIGNhbGxlciB3aWxsIGhhdmUgYW4gU0RLIGZvciB0aGUgcmlnaHQgYWNjb3VudCwgd2hpY2ggbWF5IG9yIG1heSBub3QgaGF2ZVxuICAgKiB0aGUgcmlnaHQgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWNjZXNzU3RhY2tGb3JMb29rdXAoc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCk6IFByb21pc2U8VGFyZ2V0RW52aXJvbm1lbnQ+IHtcbiAgICBpZiAoIXN0YWNrLmVudmlyb25tZW50KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBUaGUgc3RhY2sgJHtzdGFjay5kaXNwbGF5TmFtZX0gZG9lcyBub3QgaGF2ZSBhbiBlbnZpcm9ubWVudGApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvb2t1cEVudiA9IGF3YWl0IHRoaXMucHJlcGFyZVNkayh7XG4gICAgICBlbnZpcm9ubWVudDogc3RhY2suZW52aXJvbm1lbnQsXG4gICAgICBtb2RlOiBNb2RlLkZvclJlYWRpbmcsXG4gICAgICBhc3N1bWVSb2xlQXJuOiBzdGFjay5sb29rdXBSb2xlPy5hcm4sXG4gICAgICBhc3N1bWVSb2xlRXh0ZXJuYWxJZDogc3RhY2subG9va3VwUm9sZT8uYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgICBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM6IHN0YWNrLmxvb2t1cFJvbGU/LmFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyxcbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIHN1Y2NlZWQgaW4gYXNzdW1pbmcgdGhlIGxvb2t1cCByb2xlLCBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgIGlmIChsb29rdXBFbnYuZGlkQXNzdW1lUm9sZSAmJiBzdGFjay5sb29rdXBSb2xlPy5ib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIgJiYgc3RhY2subG9va3VwUm9sZS5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbikge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGxvb2t1cEVudi5yZXNvdXJjZXMudmVyc2lvbkZyb21Tc21QYXJhbWV0ZXIoc3RhY2subG9va3VwUm9sZS5ib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIpO1xuICAgICAgaWYgKHZlcnNpb24gPCBzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uICcke3N0YWNrLmxvb2t1cFJvbGUucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb259JyBpcyByZXF1aXJlZCwgZm91bmQgdmVyc2lvbiAnJHt2ZXJzaW9ufScuIFRvIGdldCByaWQgb2YgdGhpcyBlcnJvciwgcGxlYXNlIHVwZ3JhZGUgdG8gYm9vdHN0cmFwIHZlcnNpb24gPj0gJHtzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9ufWApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobG9va3VwRW52LmlzRmFsbGJhY2tDcmVkZW50aWFscykge1xuICAgICAgY29uc3QgYXJuID0gYXdhaXQgbG9va3VwRW52LnJlcGxhY2VQbGFjZWhvbGRlcnMoc3RhY2subG9va3VwUm9sZT8uYXJuKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfVE9PTEtJVF9XQVJOLm1zZyhgTG9va3VwIHJvbGUgJHthcm59IHdhcyBub3QgYXNzdW1lZC4gUHJvY2VlZGluZyB3aXRoIGRlZmF1bHQgY3JlZGVudGlhbHMuYCkpO1xuICAgIH1cbiAgICByZXR1cm4gbG9va3VwRW52O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBTREsgdG8gYWNjZXNzIHRoZSBnaXZlbiBzdGFjaydzIGVudmlyb25tZW50IGZvciByZWFkaW5nIHN0YWNrIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogV2lsbCB1c2UgYSBwbHVnaW4gaWYgYXZhaWxhYmxlLCB1c2UgdGhlIGRlZmF1bHQgQVdTIGNyZWRlbnRpYWxzIGlmIG5vdC5cbiAgICogVGhlIGBtb2RlYCBwYXJhbWV0ZXIgaXMgb25seSB1c2VkIGZvciBxdWVyeWluZyBwbHVnaW5zLlxuICAgKlxuICAgKiBXaWxsIHRyeSB0byBhc3N1bWUgdGhlIGxvb2t1cCByb2xlIGlmIGdpdmVuLCB3aWxsIHVzZSB0aGUgcmVndWxhciBzdGFjayBvcGVyYXRpb25zXG4gICAqIGFjY2VzcyAoZGVwbG95LXJvbGUpIG90aGVyd2lzZS4gV2hlbiBjYWxsaW5nIHRoaXMsIHlvdSBzaG91bGQgYXNzdW1lIHRoYXQgeW91IHdpbGwgZ2V0XG4gICAqIHRoZSBsZWFzdCBwcml2aWxlZ2VkIHJvbGUsIHNvIGRvbid0IHRyeSB0byB1c2UgaXQgZm9yIGFueXRoaW5nIHRoZSBgZGVwbG95LXJvbGVgXG4gICAqIHdvdWxkbid0IGJlIGFibGUgdG8gZG8uIEFsc28geW91IGNhbm5vdCByZWx5IG9uIGJlaW5nIGFibGUgdG8gcmVhZCBlbmNyeXB0ZWQgYW55dGhpbmcuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWNjZXNzU3RhY2tGb3JMb29rdXBCZXN0RWZmb3J0KHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPFRhcmdldEVudmlyb25tZW50PiB7XG4gICAgaWYgKCFzdGFjay5lbnZpcm9ubWVudCkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhlIHN0YWNrICR7c3RhY2suZGlzcGxheU5hbWV9IGRvZXMgbm90IGhhdmUgYW4gZW52aXJvbm1lbnRgKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWNjZXNzU3RhY2tGb3JMb29rdXAoc3RhY2spO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9UT09MS0lUX1dBUk4ubXNnKGAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFjY2Vzc1N0YWNrRm9yU3RhY2tPcGVyYXRpb25zKHN0YWNrLCBNb2RlLkZvclJlYWRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBTREsgdG8gYWNjZXNzIHRoZSBnaXZlbiBzdGFjaydzIGVudmlyb25tZW50IGZvciBzdGFjayBvcGVyYXRpb25zXG4gICAqXG4gICAqIFdpbGwgdXNlIGEgcGx1Z2luIGlmIGF2YWlsYWJsZSwgdXNlIHRoZSBkZWZhdWx0IEFXUyBjcmVkZW50aWFscyBpZiBub3QuXG4gICAqIFRoZSBgbW9kZWAgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCBmb3IgcXVlcnlpbmcgcGx1Z2lucy5cbiAgICpcbiAgICogV2lsbCBhc3N1bWUgdGhlIGRlcGxveSByb2xlIGlmIGNvbmZpZ3VyZWQgb24gdGhlIHN0YWNrLiBDaGVjayB0aGUgZGVmYXVsdCBgZGVwbG95LXJvbGVgXG4gICAqIHBvbGljaWVzIHRvIHNlZSB3aGF0IHlvdSBjYW4gZG8gd2l0aCB0aGlzIHJvbGUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFjY2Vzc1N0YWNrRm9yU3RhY2tPcGVyYXRpb25zKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIG1vZGU6IE1vZGUpOiBQcm9taXNlPFRhcmdldEVudmlyb25tZW50PiB7XG4gICAgaWYgKCFzdGFjay5lbnZpcm9ubWVudCkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhlIHN0YWNrICR7c3RhY2suZGlzcGxheU5hbWV9IGRvZXMgbm90IGhhdmUgYW4gZW52aXJvbm1lbnRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlU2RrKHtcbiAgICAgIGVudmlyb25tZW50OiBzdGFjay5lbnZpcm9ubWVudCxcbiAgICAgIG1vZGUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiBzdGFjay5hc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IHN0YWNrLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgICAgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zOiBzdGFjay5hc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBhbiBTREsgZm9yIHVzZSBpbiB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQgYW5kIG9wdGlvbmFsbHkgd2l0aCBhIHJvbGUgYXNzdW1lZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVNkayhcbiAgICBvcHRpb25zOiBQcmVwYXJlU2RrUm9sZU9wdGlvbnMsXG4gICk6IFByb21pc2U8VGFyZ2V0RW52aXJvbm1lbnQ+IHtcbiAgICBjb25zdCByZXNvbHZlZEVudmlyb25tZW50ID0gYXdhaXQgdGhpcy5zZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQob3B0aW9ucy5lbnZpcm9ubWVudCk7XG5cbiAgICAvLyBTdWJzdGl0dXRlIGFueSBwbGFjZWhvbGRlcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxuICAgIGNvbnN0IHsgYXNzdW1lUm9sZUFybiB9ID0gYXdhaXQgcmVwbGFjZUVudlBsYWNlaG9sZGVycyh7XG4gICAgICBhc3N1bWVSb2xlQXJuOiBvcHRpb25zLmFzc3VtZVJvbGVBcm4sXG4gICAgfSwgcmVzb2x2ZWRFbnZpcm9ubWVudCwgdGhpcy5zZGtQcm92aWRlcik7XG5cbiAgICBjb25zdCBzdGFja1NkayA9IGF3YWl0IHRoaXMuY2FjaGVkU2RrRm9yRW52aXJvbm1lbnQocmVzb2x2ZWRFbnZpcm9ubWVudCwgb3B0aW9ucy5tb2RlLCB7XG4gICAgICBhc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IG9wdGlvbnMuYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgICBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM6IG9wdGlvbnMuYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNkazogc3RhY2tTZGsuc2RrLFxuICAgICAgcmVzb2x2ZWRFbnZpcm9ubWVudCxcbiAgICAgIHJlc291cmNlczogdGhpcy5lbnZpcm9ubWVudFJlc291cmNlcy5mb3IocmVzb2x2ZWRFbnZpcm9ubWVudCwgc3RhY2tTZGsuc2RrLCB0aGlzLmlvSGVscGVyKSxcbiAgICAgIC8vIElmIHdlIGFza2VkIGZvciBhIHJvbGUsIGRpZCBub3Qgc3VjY2Vzc2Z1bGx5IGFzc3VtZSBpdCwgYW5kIHlldCBnb3QgaGVyZSB3aXRob3V0IGFuIGV4Y2VwdGlvbjogdGhhdFxuICAgICAgLy8gbWVhbnMgd2UgbXVzdCBoYXZlIGZhbGxiYWNrIGNyZWRlbnRpYWxzLlxuICAgICAgaXNGYWxsYmFja0NyZWRlbnRpYWxzOiAhc3RhY2tTZGsuZGlkQXNzdW1lUm9sZSAmJiAhIWFzc3VtZVJvbGVBcm4sXG4gICAgICBkaWRBc3N1bWVSb2xlOiBzdGFja1Nkay5kaWRBc3N1bWVSb2xlLFxuICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyczogYXN5bmMgPEEgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+KHN0cjogQSkgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCByZXBsYWNlRW52UGxhY2Vob2xkZXJzKHsgc3RyIH0sIHJlc29sdmVkRW52aXJvbm1lbnQsIHRoaXMuc2RrUHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gcmV0LnN0cjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FjaGVkU2RrRm9yRW52aXJvbm1lbnQoXG4gICAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuICAgIG1vZGU6IE1vZGUsXG4gICAgb3B0aW9ucz86IENyZWRlbnRpYWxzT3B0aW9ucyxcbiAgKSB7XG4gICAgY29uc3QgY2FjaGVLZXlFbGVtZW50cyA9IFtcbiAgICAgIGVudmlyb25tZW50LmFjY291bnQsXG4gICAgICBlbnZpcm9ubWVudC5yZWdpb24sXG4gICAgICBgJHttb2RlfWAsXG4gICAgICBvcHRpb25zPy5hc3N1bWVSb2xlQXJuID8/ICcnLFxuICAgICAgb3B0aW9ucz8uYXNzdW1lUm9sZUV4dGVybmFsSWQgPz8gJycsXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zPy5hc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMpIHtcbiAgICAgIGNhY2hlS2V5RWxlbWVudHMucHVzaChKU09OLnN0cmluZ2lmeShvcHRpb25zLmFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucykpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY2FjaGVLZXlFbGVtZW50cy5qb2luKCc6Jyk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnNka0NhY2hlLmdldChjYWNoZUtleSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIGNvbnN0IHJldCA9IGF3YWl0IHRoaXMuc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIG1vZGUsIG9wdGlvbnMpO1xuICAgIHRoaXMuc2RrQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTREsgb2J0YWluZWQgYnkgYXNzdW1pbmcgdGhlIGRlcGxveSByb2xlXG4gKiBmb3IgYSBnaXZlbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBTREsgZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2RrOiBTREs7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCBlbnZpcm9ubWVudCBmb3IgdGhlIHN0YWNrXG4gICAqIChubyBtb3JlICd1bmtub3duLWFjY291bnQvdW5rbm93bi1yZWdpb24nKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRFbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyBjbGFzcyBmb3IgZW52aXJvbm1lbnRhbCByZXNvdXJjZXMgdG8gaGVscCB0aGUgZGVwbG95bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3Qgd2UgYXNzdW1lZCBhIHJvbGUgaW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyB0aGVzZSBjcmVkZW50aWFsc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlkQXNzdW1lUm9sZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlc2UgYXJlIGZhbGxiYWNrIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIEZhbGxiYWNrIGNyZWRlbnRpYWxzIG1lYW5zIHRoYXQgYXNzdW1pbmcgdGhlIGludGVuZGVkIHJvbGUgZmFpbGVkLCBidXQgdGhlXG4gICAqIGJhc2UgY3JlZGVudGlhbHMgaGFwcGVuIHRvIGJlIGZvciB0aGUgcmlnaHQgYWNjb3VudCBzbyB3ZSBqdXN0IHBpY2tlZCB0aG9zZVxuICAgKiBhbmQgaG9wZSB0aGUgZnV0dXJlIFNESyBjYWxscyBzdWNjZWVkLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgbWVjaGFuaXNtIGZyb20gYXJvdW5kIHRoZSB0aW1lIHdlIGludHJvZHVjZWRcbiAgICogZGVwbG95bWVudCByb2xlcy5cbiAgICovXG4gIHJlYWRvbmx5IGlzRmFsbGJhY2tDcmVkZW50aWFsczogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwbGFjZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGVudmlyb25tZW50XG4gICAqL1xuICByZXBsYWNlUGxhY2Vob2xkZXJzKHg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8U3RyaW5nV2l0aG91dFBsYWNlaG9sZGVycyB8IHVuZGVmaW5lZD47XG59XG5cbmludGVyZmFjZSBQcmVwYXJlU2RrUm9sZU9wdGlvbnMge1xuICByZWFkb25seSBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IG1vZGU6IE1vZGU7XG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuIl19
@@ -1,75 +0,0 @@
1
- import type { Environment } from '@aws-cdk/cx-api';
2
- import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
3
- import type { SDK } from '../aws-auth';
4
- import { type EcrRepositoryInfo, ToolkitInfo } from '../toolkit-info';
5
- /**
6
- * Registry class for `EnvironmentResources`.
7
- *
8
- * The state management of this class is a bit non-standard. We want to cache
9
- * data related to toolkit stacks and SSM parameters, but we are not in charge
10
- * of ensuring caching of SDKs. Since `EnvironmentResources` needs an SDK to
11
- * function, we treat it as an ephemeral class, and store the actual cached data
12
- * in `EnvironmentResourcesRegistry`.
13
- */
14
- export declare class EnvironmentResourcesRegistry {
15
- private readonly toolkitStackName?;
16
- private readonly cache;
17
- constructor(toolkitStackName?: string | undefined);
18
- for(resolvedEnvironment: Environment, sdk: SDK, ioHelper: IoHelper): EnvironmentResources;
19
- }
20
- /**
21
- * Interface with the account and region we're deploying into
22
- *
23
- * Manages lookups for bootstrapped resources, falling back to the legacy "CDK Toolkit"
24
- * original bootstrap stack if necessary.
25
- *
26
- * The state management of this class is a bit non-standard. We want to cache
27
- * data related to toolkit stacks and SSM parameters, but we are not in charge
28
- * of ensuring caching of SDKs. Since `EnvironmentResources` needs an SDK to
29
- * function, we treat it as an ephemeral class, and store the actual cached data
30
- * in `EnvironmentResourcesRegistry`.
31
- */
32
- export declare class EnvironmentResources {
33
- readonly environment: Environment;
34
- private readonly sdk;
35
- private readonly ioHelper;
36
- private readonly cache;
37
- private readonly toolkitStackName?;
38
- constructor(environment: Environment, sdk: SDK, ioHelper: IoHelper, cache: EnvironmentCache, toolkitStackName?: string | undefined);
39
- /**
40
- * Look up the toolkit for a given environment, using a given SDK
41
- */
42
- lookupToolkit(): Promise<ToolkitInfo>;
43
- /**
44
- * Validate that the bootstrap stack version matches or exceeds the expected version
45
- *
46
- * Use the SSM parameter name to read the version number if given, otherwise use the version
47
- * discovered on the bootstrap stack.
48
- *
49
- * Pass in the SSM parameter name so we can cache the lookups an don't need to do the same
50
- * lookup again and again for every artifact.
51
- */
52
- validateVersion(expectedVersion: number | undefined, ssmParameterName: string | undefined): Promise<void>;
53
- /**
54
- * Read a version from an SSM parameter, cached
55
- */
56
- versionFromSsmParameter(parameterName: string): Promise<number>;
57
- prepareEcrRepository(repositoryName: string): Promise<EcrRepositoryInfo>;
58
- }
59
- export declare class NoBootstrapStackEnvironmentResources extends EnvironmentResources {
60
- constructor(environment: Environment, sdk: SDK, ioHelper: IoHelper);
61
- /**
62
- * Look up the toolkit for a given environment, using a given SDK
63
- */
64
- lookupToolkit(): Promise<ToolkitInfo>;
65
- }
66
- /**
67
- * Data that is cached on a per-environment level
68
- *
69
- * This cache may be shared between different instances of the `EnvironmentResources` class.
70
- */
71
- interface EnvironmentCache {
72
- readonly ssmParameters: Map<string, number>;
73
- toolkitInfo?: ToolkitInfo;
74
- }
75
- export {};