terraconstructs 0.1.4 → 0.1.6

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 (270) hide show
  1. package/.jsii +662 -282
  2. package/lib/asset-staging.js +1 -1
  3. package/lib/aws/arn.js +1 -1
  4. package/lib/aws/aws-asset-manager.js +1 -1
  5. package/lib/aws/aws-construct.js +1 -1
  6. package/lib/aws/aws-stack.js +1 -1
  7. package/lib/aws/aws-tags.js +2 -2
  8. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  9. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  10. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  11. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  12. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  13. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  14. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  15. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  16. package/lib/aws/cloudwatch/alarm.js +1 -1
  17. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  18. package/lib/aws/cloudwatch/dashboard.js +1 -1
  19. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  20. package/lib/aws/cloudwatch/graph.js +8 -8
  21. package/lib/aws/cloudwatch/layout.js +3 -3
  22. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  23. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  24. package/lib/aws/cloudwatch/log-group.js +1 -1
  25. package/lib/aws/cloudwatch/log-query.js +1 -1
  26. package/lib/aws/cloudwatch/log-stream.js +1 -1
  27. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  28. package/lib/aws/cloudwatch/metric.js +2 -2
  29. package/lib/aws/cloudwatch/pattern.js +3 -3
  30. package/lib/aws/cloudwatch/policy.js +1 -1
  31. package/lib/aws/cloudwatch/query-definition.js +2 -2
  32. package/lib/aws/cloudwatch/stats.js +1 -1
  33. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  34. package/lib/aws/cloudwatch/text.js +1 -1
  35. package/lib/aws/cloudwatch/variable.js +3 -3
  36. package/lib/aws/cloudwatch/widget.js +1 -1
  37. package/lib/aws/compute/access-log.js +4 -4
  38. package/lib/aws/compute/activity.js +1 -1
  39. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  40. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  42. package/lib/aws/compute/alb/application-listener.js +1 -1
  43. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  44. package/lib/aws/compute/alb/application-target-group.js +1 -1
  45. package/lib/aws/compute/alb/conditions.js +1 -1
  46. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  47. package/lib/aws/compute/alb/trust-store.js +1 -1
  48. package/lib/aws/compute/api-definition.js +3 -3
  49. package/lib/aws/compute/api-key.js +2 -2
  50. package/lib/aws/compute/architecture.js +1 -1
  51. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  52. package/lib/aws/compute/authorizer.js +1 -1
  53. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  54. package/lib/aws/compute/authorizers/lambda.js +2 -2
  55. package/lib/aws/compute/base-path-mapping.js +1 -1
  56. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  57. package/lib/aws/compute/bastion-host.js +1 -1
  58. package/lib/aws/compute/chain.js +1 -1
  59. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  60. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  61. package/lib/aws/compute/client-vpn-route.js +2 -2
  62. package/lib/aws/compute/code.js +44 -11
  63. package/lib/aws/compute/condition.js +1 -1
  64. package/lib/aws/compute/connections.js +1 -1
  65. package/lib/aws/compute/cors.js +1 -1
  66. package/lib/aws/compute/deployment.js +1 -1
  67. package/lib/aws/compute/domain-name.js +1 -1
  68. package/lib/aws/compute/event-invoke-config.js +1 -1
  69. package/lib/aws/compute/event-source-filter.js +2 -2
  70. package/lib/aws/compute/event-source-mapping.js +1 -1
  71. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  72. package/lib/aws/compute/event-sources/s3.js +1 -1
  73. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  74. package/lib/aws/compute/event-sources/sqs.js +1 -1
  75. package/lib/aws/compute/fields.js +4 -4
  76. package/lib/aws/compute/function-alias.js +1 -1
  77. package/lib/aws/compute/function-base.d.ts +20 -0
  78. package/lib/aws/compute/function-base.js +23 -3
  79. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  80. package/lib/aws/compute/function-destinations/function.js +1 -1
  81. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  82. package/lib/aws/compute/function-nodejs/function.js +1 -1
  83. package/lib/aws/compute/function-url.js +1 -1
  84. package/lib/aws/compute/function.d.ts +88 -1
  85. package/lib/aws/compute/function.js +108 -18
  86. package/lib/aws/compute/gateway-response.js +2 -2
  87. package/lib/aws/compute/handler.js +1 -1
  88. package/lib/aws/compute/instance-types.js +1 -1
  89. package/lib/aws/compute/instance.js +1 -1
  90. package/lib/aws/compute/integration.js +1 -1
  91. package/lib/aws/compute/integrations/aws.js +1 -1
  92. package/lib/aws/compute/integrations/http.js +1 -1
  93. package/lib/aws/compute/integrations/lambda.js +1 -1
  94. package/lib/aws/compute/integrations/mock.js +1 -1
  95. package/lib/aws/compute/integrations/stepfunctions.js +1 -1
  96. package/lib/aws/compute/ip-addresses.js +2 -2
  97. package/lib/aws/compute/ipam.js +1 -1
  98. package/lib/aws/compute/key-pair.js +1 -1
  99. package/lib/aws/compute/lambda-api.js +1 -1
  100. package/lib/aws/compute/launch-template.js +2 -2
  101. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  102. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  103. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  104. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  105. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  106. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  107. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  108. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  109. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  110. package/lib/aws/compute/load-balancer.js +3 -3
  111. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  112. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  113. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  114. package/lib/aws/compute/machine-image/common.js +1 -1
  115. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  116. package/lib/aws/compute/method.js +1 -1
  117. package/lib/aws/compute/model.js +3 -3
  118. package/lib/aws/compute/nat.js +5 -5
  119. package/lib/aws/compute/network-acl-types.js +2 -2
  120. package/lib/aws/compute/network-acl.js +3 -3
  121. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  122. package/lib/aws/compute/nlb/network-listener.js +1 -1
  123. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  124. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  125. package/lib/aws/compute/peer.js +1 -1
  126. package/lib/aws/compute/placement-group.js +1 -1
  127. package/lib/aws/compute/port.js +1 -1
  128. package/lib/aws/compute/prefix-list.js +1 -1
  129. package/lib/aws/compute/requestvalidator.js +1 -1
  130. package/lib/aws/compute/resource.js +3 -3
  131. package/lib/aws/compute/restapi.js +3 -3
  132. package/lib/aws/compute/route.js +8 -8
  133. package/lib/aws/compute/runtime.js +1 -1
  134. package/lib/aws/compute/scalable-target.js +1 -1
  135. package/lib/aws/compute/schedule.js +1 -1
  136. package/lib/aws/compute/security-group.js +1 -1
  137. package/lib/aws/compute/stage.js +2 -2
  138. package/lib/aws/compute/state-graph.js +1 -1
  139. package/lib/aws/compute/state-machine-fragment.js +1 -1
  140. package/lib/aws/compute/state-machine.js +4 -4
  141. package/lib/aws/compute/states/choice.js +1 -1
  142. package/lib/aws/compute/states/custom-state.js +1 -1
  143. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  144. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  145. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  146. package/lib/aws/compute/states/distributed-map.js +1 -1
  147. package/lib/aws/compute/states/fail.js +1 -1
  148. package/lib/aws/compute/states/map-base.js +1 -1
  149. package/lib/aws/compute/states/map.js +1 -1
  150. package/lib/aws/compute/states/parallel.js +1 -1
  151. package/lib/aws/compute/states/pass.js +2 -2
  152. package/lib/aws/compute/states/state.js +1 -1
  153. package/lib/aws/compute/states/succeed.js +1 -1
  154. package/lib/aws/compute/states/task-base.js +2 -2
  155. package/lib/aws/compute/states/task.js +1 -1
  156. package/lib/aws/compute/states/wait.js +2 -2
  157. package/lib/aws/compute/step-scaling-action.js +1 -1
  158. package/lib/aws/compute/step-scaling-policy.js +1 -1
  159. package/lib/aws/compute/stepfunctions-api.js +1 -1
  160. package/lib/aws/compute/subnet-v2.js +2 -2
  161. package/lib/aws/compute/subnet.js +1 -1
  162. package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
  163. package/lib/aws/compute/task-credentials.js +1 -1
  164. package/lib/aws/compute/task-input.js +1 -1
  165. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  166. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  167. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  168. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  169. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  170. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  171. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  172. package/lib/aws/compute/types.js +1 -1
  173. package/lib/aws/compute/usage-plan.js +1 -1
  174. package/lib/aws/compute/user-data.js +3 -3
  175. package/lib/aws/compute/volume.js +2 -2
  176. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  177. package/lib/aws/compute/vpc-endpoint.js +6 -6
  178. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  179. package/lib/aws/compute/vpc-link.js +1 -1
  180. package/lib/aws/compute/vpc-v2-base.js +1 -1
  181. package/lib/aws/compute/vpc-v2.js +2 -2
  182. package/lib/aws/compute/vpc.js +4 -4
  183. package/lib/aws/compute/vpn.js +3 -3
  184. package/lib/aws/edge/certificate.js +1 -1
  185. package/lib/aws/edge/distribution.js +3 -3
  186. package/lib/aws/edge/dns-alias-record-targets.d.ts +40 -1
  187. package/lib/aws/edge/dns-alias-record-targets.js +71 -9
  188. package/lib/aws/edge/dns-record.js +13 -13
  189. package/lib/aws/edge/dns-zone.js +1 -1
  190. package/lib/aws/edge/function.js +2 -2
  191. package/lib/aws/edge/key-value-store.js +4 -4
  192. package/lib/aws/edge/origin.js +3 -3
  193. package/lib/aws/edge/response-headers-policy.js +1 -1
  194. package/lib/aws/encryption/alias.js +1 -1
  195. package/lib/aws/encryption/key.js +1 -1
  196. package/lib/aws/encryption/via-service-principal.js +1 -1
  197. package/lib/aws/iam/grant.js +2 -2
  198. package/lib/aws/iam/group.js +1 -1
  199. package/lib/aws/iam/instance-profile.js +1 -1
  200. package/lib/aws/iam/managed-policy.js +1 -1
  201. package/lib/aws/iam/oidc-provider.js +1 -1
  202. package/lib/aws/iam/policy-document.js +1 -1
  203. package/lib/aws/iam/policy-statement.js +1 -1
  204. package/lib/aws/iam/policy.js +1 -1
  205. package/lib/aws/iam/principals.js +20 -20
  206. package/lib/aws/iam/role.js +1 -1
  207. package/lib/aws/iam/saml-provider.js +2 -2
  208. package/lib/aws/iam/unknown-principal.js +1 -1
  209. package/lib/aws/iam/user.js +1 -1
  210. package/lib/aws/network/simple-ipv4-vpc.d.ts +1 -0
  211. package/lib/aws/network/simple-ipv4-vpc.js +3 -2
  212. package/lib/aws/network/subnet-group.js +3 -3
  213. package/lib/aws/network/subnet.d.ts +9 -0
  214. package/lib/aws/network/subnet.js +14 -5
  215. package/lib/aws/notify/archive.js +1 -1
  216. package/lib/aws/notify/connection.js +3 -3
  217. package/lib/aws/notify/event-bus.js +3 -3
  218. package/lib/aws/notify/event-pattern.js +1 -1
  219. package/lib/aws/notify/input.js +2 -2
  220. package/lib/aws/notify/kinesis-stream.js +1 -1
  221. package/lib/aws/notify/notification-rule.js +1 -1
  222. package/lib/aws/notify/policy.js +1 -1
  223. package/lib/aws/notify/queue-policy.js +1 -1
  224. package/lib/aws/notify/queue.js +1 -1
  225. package/lib/aws/notify/resource-policy.js +1 -1
  226. package/lib/aws/notify/rule.js +1 -1
  227. package/lib/aws/notify/schedule.js +1 -1
  228. package/lib/aws/notify/subscription-filter.js +1 -1
  229. package/lib/aws/notify/subscription.js +4 -4
  230. package/lib/aws/notify/subscriptions/email.js +1 -1
  231. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  232. package/lib/aws/notify/subscriptions/sms.js +1 -1
  233. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  234. package/lib/aws/notify/subscriptions/url.js +1 -1
  235. package/lib/aws/notify/targets/event-bus.js +1 -1
  236. package/lib/aws/notify/targets/function.js +1 -1
  237. package/lib/aws/notify/targets/log-group.js +2 -2
  238. package/lib/aws/notify/targets/sqs.js +1 -1
  239. package/lib/aws/notify/targets/state-machine.js +1 -1
  240. package/lib/aws/notify/topic-base.js +1 -1
  241. package/lib/aws/notify/topic.js +1 -1
  242. package/lib/aws/storage/assets/image-asset.js +3 -3
  243. package/lib/aws/storage/assets/s3.js +1 -1
  244. package/lib/aws/storage/auth-token.js +2 -2
  245. package/lib/aws/storage/billing.js +1 -1
  246. package/lib/aws/storage/bucket-notifications.js +1 -1
  247. package/lib/aws/storage/bucket-policy.js +1 -1
  248. package/lib/aws/storage/bucket-source.js +1 -1
  249. package/lib/aws/storage/bucket.js +2 -2
  250. package/lib/aws/storage/capacity.js +1 -1
  251. package/lib/aws/storage/ecr-repository.js +3 -3
  252. package/lib/aws/storage/encryption.js +6 -14
  253. package/lib/aws/storage/notification-targets/function.js +1 -1
  254. package/lib/aws/storage/notification-targets/queue.js +1 -1
  255. package/lib/aws/storage/origin-access-identity.js +1 -1
  256. package/lib/aws/storage/parameter.js +2 -2
  257. package/lib/aws/storage/table.js +3 -3
  258. package/lib/bundling.js +3 -3
  259. package/lib/construct-base.js +2 -2
  260. package/lib/duration.js +1 -1
  261. package/lib/errors.d.ts +118 -0
  262. package/lib/errors.js +215 -0
  263. package/lib/expiration.js +1 -1
  264. package/lib/fs/ignore.js +4 -4
  265. package/lib/fs/index.js +1 -1
  266. package/lib/size.js +1 -1
  267. package/lib/stack-base.js +1 -1
  268. package/lib/terra-func.js +1 -1
  269. package/lib/time-zone.js +1 -1
  270. package/package.json +1 -1
@@ -10,10 +10,12 @@ import { AliasOptions, Alias } from "./function-alias";
10
10
  import { LambdaFunctionBase, IFunction, FunctionAttributes, IEventSource } from "./function-base";
11
11
  import { FunctionUrl, FunctionUrlOptions } from "./function-url";
12
12
  import { VpcConfig } from "./function-vpc-config.generated";
13
+ import { Runtime } from "./runtime";
14
+ import { ISecurityGroup } from "./security-group";
15
+ import { IVpc, SubnetSelection } from "./vpc";
13
16
  import { Duration } from "../../duration";
14
17
  import * as iam from "../iam";
15
18
  import { IQueue } from "../notify";
16
- import { Runtime } from "./runtime";
17
19
  export interface FunctionOutputs {
18
20
  /**
19
21
  * AWS Lambda function name
@@ -131,6 +133,14 @@ export interface FunctionOptions extends EventInvokeConfigOptions {
131
133
  * Both supplied and generated roles can always be changed by calling `addToRolePolicy`.
132
134
  */
133
135
  readonly role?: iam.IRole;
136
+ /**
137
+ * Lambda Functions in a public subnet can NOT access the internet.
138
+ * Use this property to acknowledge this limitation and still place the function in a public subnet.
139
+ * @see https://stackoverflow.com/questions/52992085/why-cant-an-aws-lambda-function-inside-a-public-subnet-in-a-vpc-connect-to-the/52994841#52994841
140
+ *
141
+ * @default false
142
+ */
143
+ readonly allowPublicSubnet?: boolean;
134
144
  /**
135
145
  * Config for network connectivity to AWS resources in a VPC, specify a list
136
146
  * of subnet, and optionally security groups, in the VPC.
@@ -141,8 +151,74 @@ export interface FunctionOptions extends EventInvokeConfigOptions {
141
151
  * When you connect a function to a VPC, it can only access resources and the internet through that VPC.
142
152
  *
143
153
  * See [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).
154
+ *
155
+ * @deprecated - This property is deprecated, use vpc and other related properties instead
144
156
  */
145
157
  readonly networkConfig?: VpcConfig;
158
+ /**
159
+ * VPC network to place Lambda network interfaces
160
+ *
161
+ * Specify this if the Lambda function needs to access resources in a VPC.
162
+ * This is required when `vpcSubnets` is specified.
163
+ *
164
+ * @default - Function is not placed within a VPC.
165
+ */
166
+ readonly vpc?: IVpc;
167
+ /**
168
+ * Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.
169
+ *
170
+ * Only used if 'vpc' is supplied.
171
+ *
172
+ * @default false
173
+ */
174
+ readonly ipv6AllowedForDualStack?: boolean;
175
+ /**
176
+ * Where to place the network interfaces within the VPC.
177
+ *
178
+ * This requires `vpc` to be specified in order for interfaces to actually be
179
+ * placed in the subnets. If `vpc` is not specify, this will raise an error.
180
+ *
181
+ * Note: Internet access for Lambda Functions requires a NAT Gateway, so picking
182
+ * public subnets is not allowed (unless `allowPublicSubnet` is set to `true`).
183
+ *
184
+ * @default - the Vpc default strategy if not specified
185
+ */
186
+ readonly vpcSubnets?: SubnetSelection;
187
+ /**
188
+ * The list of security groups to associate with the Lambda's network interfaces.
189
+ *
190
+ * Only used if 'vpc' is supplied.
191
+ *
192
+ * @default - If the function is placed within a VPC and a security group is
193
+ * not specified, either by this or securityGroup prop, a dedicated security
194
+ * group will be created for this function.
195
+ */
196
+ readonly securityGroups?: ISecurityGroup[];
197
+ /**
198
+ * Whether to allow the Lambda to send all network traffic (except ipv6)
199
+ *
200
+ * If set to false, you must individually add traffic rules to allow the
201
+ * Lambda to connect to network targets.
202
+ *
203
+ * Do not specify this property if the `securityGroups` or `securityGroup` property is set.
204
+ * Instead, configure `allowAllOutbound` directly on the security group.
205
+ *
206
+ * @default true
207
+ */
208
+ readonly allowAllOutbound?: boolean;
209
+ /**
210
+ * Whether to allow the Lambda to send all ipv6 network traffic
211
+ *
212
+ * If set to true, there will only be a single egress rule which allows all
213
+ * outbound ipv6 traffic. If set to false, you must individually add traffic rules to allow the
214
+ * Lambda to connect to network targets using ipv6.
215
+ *
216
+ * Do not specify this property if the `securityGroups` or `securityGroup` property is set.
217
+ * Instead, configure `allowAllIpv6Outbound` directly on the security group.
218
+ *
219
+ * @default false
220
+ */
221
+ readonly allowAllIpv6Outbound?: boolean;
146
222
  /**
147
223
  * The SQS DLQ.
148
224
  *
@@ -327,6 +403,10 @@ export declare class LambdaFunction extends LambdaFunctionBase implements IFunct
327
403
  * Undefined if the function was imported without a role.
328
404
  */
329
405
  readonly role?: iam.IRole;
406
+ /**
407
+ * The runtime configured for this lambda.
408
+ */
409
+ readonly runtime: Runtime;
330
410
  /**
331
411
  * The DLQ (as queue) associated with this Lambda Function (this is an optional attribute).
332
412
  */
@@ -415,6 +495,13 @@ export declare class LambdaFunction extends LambdaFunctionBase implements IFunct
415
495
  * Optionally create LambdaFunctionVpcConfig
416
496
  */
417
497
  private parseVpcConfig;
498
+ /**
499
+ * If configured, set up the VPC-related properties
500
+ *
501
+ * Returns the VpcConfig that should be added to the
502
+ * Lambda creation properties.
503
+ */
504
+ private configureVpc;
418
505
  private isQueue;
419
506
  private buildDeadLetterQueue;
420
507
  /**