terraconstructs 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.envrc +5 -0
- package/.jsii +79780 -0
- package/.mise.toml +8 -0
- package/.nvmrc +1 -0
- package/.terraform-version +1 -0
- package/.terraform.d/plugin-cache/.gitignore +5 -0
- package/LICENSE +674 -0
- package/NOTICE.txt +12 -0
- package/README.md +42 -0
- package/bun.lockb +0 -0
- package/go.mod +158 -0
- package/go.sum +1206 -0
- package/lib/aws/arn.d.ts +187 -0
- package/lib/aws/arn.js +383 -0
- package/lib/aws/aws-construct.d.ts +76 -0
- package/lib/aws/aws-construct.js +38 -0
- package/lib/aws/aws-stack.d.ts +201 -0
- package/lib/aws/aws-stack.js +303 -0
- package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
- package/lib/aws/cloudwatch/actions/ec2.js +48 -0
- package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
- package/lib/aws/cloudwatch/actions/index.js +24 -0
- package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
- package/lib/aws/cloudwatch/actions/lambda.js +48 -0
- package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
- package/lib/aws/cloudwatch/alarm-action.js +4 -0
- package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
- package/lib/aws/cloudwatch/alarm-base.js +64 -0
- package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
- package/lib/aws/cloudwatch/alarm-rule.js +116 -0
- package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
- package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
- package/lib/aws/cloudwatch/alarm.d.ts +158 -0
- package/lib/aws/cloudwatch/alarm.js +410 -0
- package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
- package/lib/aws/cloudwatch/composite-alarm.js +98 -0
- package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
- package/lib/aws/cloudwatch/dashboard.js +141 -0
- package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
- package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
- package/lib/aws/cloudwatch/graph.d.ts +792 -0
- package/lib/aws/cloudwatch/graph.js +537 -0
- package/lib/aws/cloudwatch/index.d.ts +26 -0
- package/lib/aws/cloudwatch/index.js +49 -0
- package/lib/aws/cloudwatch/layout.d.ts +89 -0
- package/lib/aws/cloudwatch/layout.js +147 -0
- package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
- package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
- package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
- package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
- package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
- package/lib/aws/cloudwatch/log-group.d.ts +453 -0
- package/lib/aws/cloudwatch/log-group.js +350 -0
- package/lib/aws/cloudwatch/log-query.d.ts +91 -0
- package/lib/aws/cloudwatch/log-query.js +85 -0
- package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
- package/lib/aws/cloudwatch/log-stream.js +57 -0
- package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
- package/lib/aws/cloudwatch/metric-filter.js +69 -0
- package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
- package/lib/aws/cloudwatch/metric-types.js +151 -0
- package/lib/aws/cloudwatch/metric.d.ts +492 -0
- package/lib/aws/cloudwatch/metric.js +493 -0
- package/lib/aws/cloudwatch/pattern.d.ts +195 -0
- package/lib/aws/cloudwatch/pattern.js +412 -0
- package/lib/aws/cloudwatch/policy.d.ts +43 -0
- package/lib/aws/cloudwatch/policy.js +50 -0
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
- package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
- package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
- package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
- package/lib/aws/cloudwatch/private/metric-util.js +132 -0
- package/lib/aws/cloudwatch/private/object.d.ts +1 -0
- package/lib/aws/cloudwatch/private/object.js +18 -0
- package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
- package/lib/aws/cloudwatch/private/rendering.js +181 -0
- package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
- package/lib/aws/cloudwatch/private/statistic.js +176 -0
- package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
- package/lib/aws/cloudwatch/query-definition.js +114 -0
- package/lib/aws/cloudwatch/stats.d.ts +150 -0
- package/lib/aws/cloudwatch/stats.js +207 -0
- package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
- package/lib/aws/cloudwatch/subscription-filter.js +51 -0
- package/lib/aws/cloudwatch/text.d.ts +52 -0
- package/lib/aws/cloudwatch/text.js +53 -0
- package/lib/aws/cloudwatch/variable.d.ts +156 -0
- package/lib/aws/cloudwatch/variable.js +156 -0
- package/lib/aws/cloudwatch/widget.d.ts +62 -0
- package/lib/aws/cloudwatch/widget.js +45 -0
- package/lib/aws/compute/activity.d.ts +81 -0
- package/lib/aws/compute/activity.js +132 -0
- package/lib/aws/compute/architecture.d.ts +33 -0
- package/lib/aws/compute/architecture.js +42 -0
- package/lib/aws/compute/chain.d.ts +52 -0
- package/lib/aws/compute/chain.js +68 -0
- package/lib/aws/compute/condition.d.ts +202 -0
- package/lib/aws/compute/condition.js +409 -0
- package/lib/aws/compute/event-invoke-config.d.ts +74 -0
- package/lib/aws/compute/event-invoke-config.js +63 -0
- package/lib/aws/compute/event-source-filter.d.ts +64 -0
- package/lib/aws/compute/event-source-filter.js +86 -0
- package/lib/aws/compute/event-source-mapping.d.ts +310 -0
- package/lib/aws/compute/event-source-mapping.js +267 -0
- package/lib/aws/compute/event-sources/index.d.ts +4 -0
- package/lib/aws/compute/event-sources/index.js +28 -0
- package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
- package/lib/aws/compute/event-sources/s3.d.ts +24 -0
- package/lib/aws/compute/event-sources/s3.js +25 -0
- package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
- package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
- package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
- package/lib/aws/compute/event-sources/sqs.js +84 -0
- package/lib/aws/compute/fields.d.ts +367 -0
- package/lib/aws/compute/fields.js +546 -0
- package/lib/aws/compute/function-alias.d.ts +148 -0
- package/lib/aws/compute/function-alias.js +176 -0
- package/lib/aws/compute/function-base.d.ts +314 -0
- package/lib/aws/compute/function-base.js +421 -0
- package/lib/aws/compute/function-destination.d.ts +42 -0
- package/lib/aws/compute/function-destination.js +18 -0
- package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
- package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
- package/lib/aws/compute/function-destinations/function.d.ts +34 -0
- package/lib/aws/compute/function-destinations/function.js +55 -0
- package/lib/aws/compute/function-destinations/index.d.ts +3 -0
- package/lib/aws/compute/function-destinations/index.js +22 -0
- package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
- package/lib/aws/compute/function-destinations/sqs.js +27 -0
- package/lib/aws/compute/function-nodejs.d.ts +55 -0
- package/lib/aws/compute/function-nodejs.js +70 -0
- package/lib/aws/compute/function-permission.d.ts +83 -0
- package/lib/aws/compute/function-permission.js +3 -0
- package/lib/aws/compute/function-url.d.ts +210 -0
- package/lib/aws/compute/function-url.js +148 -0
- package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
- package/lib/aws/compute/function-vpc-config.generated.js +3 -0
- package/lib/aws/compute/function.d.ts +492 -0
- package/lib/aws/compute/function.js +692 -0
- package/lib/aws/compute/index.d.ts +42 -0
- package/lib/aws/compute/index.js +64 -0
- package/lib/aws/compute/private/intrinstics.d.ts +86 -0
- package/lib/aws/compute/private/intrinstics.js +220 -0
- package/lib/aws/compute/private/json-path.d.ts +57 -0
- package/lib/aws/compute/private/json-path.js +351 -0
- package/lib/aws/compute/private/util.d.ts +1 -0
- package/lib/aws/compute/private/util.js +38 -0
- package/lib/aws/compute/state-graph.d.ts +100 -0
- package/lib/aws/compute/state-graph.js +177 -0
- package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
- package/lib/aws/compute/state-machine-fragment.js +56 -0
- package/lib/aws/compute/state-machine.d.ts +323 -0
- package/lib/aws/compute/state-machine.js +392 -0
- package/lib/aws/compute/states/choice.d.ts +94 -0
- package/lib/aws/compute/states/choice.js +81 -0
- package/lib/aws/compute/states/custom-state.d.ts +55 -0
- package/lib/aws/compute/states/custom-state.js +114 -0
- package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
- package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
- package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
- package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
- package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
- package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
- package/lib/aws/compute/states/distributed-map.d.ts +153 -0
- package/lib/aws/compute/states/distributed-map.js +207 -0
- package/lib/aws/compute/states/fail.d.ts +74 -0
- package/lib/aws/compute/states/fail.js +83 -0
- package/lib/aws/compute/states/map-base.d.ts +145 -0
- package/lib/aws/compute/states/map-base.js +109 -0
- package/lib/aws/compute/states/map.d.ts +76 -0
- package/lib/aws/compute/states/map.js +110 -0
- package/lib/aws/compute/states/parallel.d.ts +113 -0
- package/lib/aws/compute/states/parallel.js +100 -0
- package/lib/aws/compute/states/pass.d.ts +122 -0
- package/lib/aws/compute/states/pass.js +99 -0
- package/lib/aws/compute/states/private/state-type.d.ts +13 -0
- package/lib/aws/compute/states/private/state-type.js +19 -0
- package/lib/aws/compute/states/state.d.ts +276 -0
- package/lib/aws/compute/states/state.js +482 -0
- package/lib/aws/compute/states/succeed.d.ts +51 -0
- package/lib/aws/compute/states/succeed.js +32 -0
- package/lib/aws/compute/states/task-base.d.ts +225 -0
- package/lib/aws/compute/states/task-base.js +160 -0
- package/lib/aws/compute/states/task.d.ts +127 -0
- package/lib/aws/compute/states/task.js +92 -0
- package/lib/aws/compute/states/wait.d.ts +78 -0
- package/lib/aws/compute/states/wait.js +90 -0
- package/lib/aws/compute/step-functions-task.d.ts +78 -0
- package/lib/aws/compute/step-functions-task.js +27 -0
- package/lib/aws/compute/task-credentials.d.ts +45 -0
- package/lib/aws/compute/task-credentials.js +52 -0
- package/lib/aws/compute/task-input.d.ts +86 -0
- package/lib/aws/compute/task-input.js +107 -0
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
- package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
- package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
- package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
- package/lib/aws/compute/tasks/http/invoke.js +117 -0
- package/lib/aws/compute/tasks/index.d.ts +7 -0
- package/lib/aws/compute/tasks/index.js +42 -0
- package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
- package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
- package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
- package/lib/aws/compute/tasks/private/task-utils.js +36 -0
- package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
- package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
- package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
- package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
- package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
- package/lib/aws/compute/types.d.ts +214 -0
- package/lib/aws/compute/types.js +103 -0
- package/lib/aws/compute/util.d.ts +12 -0
- package/lib/aws/compute/util.js +29 -0
- package/lib/aws/edge/certificate.d.ts +144 -0
- package/lib/aws/edge/certificate.js +191 -0
- package/lib/aws/edge/distribution.d.ts +505 -0
- package/lib/aws/edge/distribution.js +444 -0
- package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
- package/lib/aws/edge/dns-alias-record-targets.js +46 -0
- package/lib/aws/edge/dns-record.d.ts +536 -0
- package/lib/aws/edge/dns-record.js +532 -0
- package/lib/aws/edge/dns-zone.d.ts +169 -0
- package/lib/aws/edge/dns-zone.js +149 -0
- package/lib/aws/edge/function.d.ts +185 -0
- package/lib/aws/edge/function.js +141 -0
- package/lib/aws/edge/index.d.ts +8 -0
- package/lib/aws/edge/index.js +25 -0
- package/lib/aws/edge/key-value-store.d.ts +162 -0
- package/lib/aws/edge/key-value-store.js +163 -0
- package/lib/aws/edge/origin.d.ts +160 -0
- package/lib/aws/edge/origin.js +245 -0
- package/lib/aws/encryption/alias.d.ts +137 -0
- package/lib/aws/encryption/alias.js +216 -0
- package/lib/aws/encryption/index.d.ts +4 -0
- package/lib/aws/encryption/index.js +21 -0
- package/lib/aws/encryption/key-lookup.d.ts +11 -0
- package/lib/aws/encryption/key-lookup.js +4 -0
- package/lib/aws/encryption/key.d.ts +461 -0
- package/lib/aws/encryption/key.js +586 -0
- package/lib/aws/encryption/private/perms.d.ts +5 -0
- package/lib/aws/encryption/private/perms.js +30 -0
- package/lib/aws/encryption/via-service-principal.d.ts +11 -0
- package/lib/aws/encryption/via-service-principal.js +39 -0
- package/lib/aws/iam/grant.d.ts +221 -0
- package/lib/aws/iam/grant.js +239 -0
- package/lib/aws/iam/identity-base.d.ts +20 -0
- package/lib/aws/iam/identity-base.js +3 -0
- package/lib/aws/iam/index.d.ts +16 -0
- package/lib/aws/iam/index.js +34 -0
- package/lib/aws/iam/managed-policy.d.ts +227 -0
- package/lib/aws/iam/managed-policy.js +237 -0
- package/lib/aws/iam/oidc-provider.d.ts +120 -0
- package/lib/aws/iam/oidc-provider.js +82 -0
- package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
- package/lib/aws/iam/policy-document-config.generated.js +3 -0
- package/lib/aws/iam/policy-document.d.ts +150 -0
- package/lib/aws/iam/policy-document.js +172 -0
- package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
- package/lib/aws/iam/policy-statement-props.generated.js +3 -0
- package/lib/aws/iam/policy-statement.d.ts +451 -0
- package/lib/aws/iam/policy-statement.js +947 -0
- package/lib/aws/iam/policy.d.ts +122 -0
- package/lib/aws/iam/policy.js +192 -0
- package/lib/aws/iam/principals.d.ts +668 -0
- package/lib/aws/iam/principals.js +1032 -0
- package/lib/aws/iam/private/adapter.d.ts +21 -0
- package/lib/aws/iam/private/adapter.js +51 -0
- package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
- package/lib/aws/iam/private/assume-role-policy.js +27 -0
- package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
- package/lib/aws/iam/private/comparable-principal.js +20 -0
- package/lib/aws/iam/private/immutable-role.d.ts +43 -0
- package/lib/aws/iam/private/immutable-role.js +76 -0
- package/lib/aws/iam/private/imported-role.d.ts +49 -0
- package/lib/aws/iam/private/imported-role.js +103 -0
- package/lib/aws/iam/private/merge-statements.d.ts +44 -0
- package/lib/aws/iam/private/merge-statements.js +214 -0
- package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
- package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
- package/lib/aws/iam/private/util.d.ts +37 -0
- package/lib/aws/iam/private/util.js +87 -0
- package/lib/aws/iam/role.d.ts +425 -0
- package/lib/aws/iam/role.js +407 -0
- package/lib/aws/iam/saml-provider.d.ts +79 -0
- package/lib/aws/iam/saml-provider.js +79 -0
- package/lib/aws/iam/unknown-principal.d.ts +32 -0
- package/lib/aws/iam/unknown-principal.js +45 -0
- package/lib/aws/iam/utils.d.ts +12 -0
- package/lib/aws/iam/utils.js +41 -0
- package/lib/aws/index.d.ts +13 -0
- package/lib/aws/index.js +34 -0
- package/lib/aws/log-retention.d.ts +97 -0
- package/lib/aws/log-retention.js +103 -0
- package/lib/aws/network/index.d.ts +4 -0
- package/lib/aws/network/index.js +21 -0
- package/lib/aws/network/network.d.ts +77 -0
- package/lib/aws/network/network.js +3 -0
- package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
- package/lib/aws/network/simple-ipv4-vpc.js +236 -0
- package/lib/aws/network/subnet-group.d.ts +42 -0
- package/lib/aws/network/subnet-group.js +72 -0
- package/lib/aws/network/subnet.d.ts +95 -0
- package/lib/aws/network/subnet.js +123 -0
- package/lib/aws/notify/archive.d.ts +77 -0
- package/lib/aws/notify/archive.js +62 -0
- package/lib/aws/notify/connection.d.ts +276 -0
- package/lib/aws/notify/connection.js +261 -0
- package/lib/aws/notify/event-bus.d.ts +298 -0
- package/lib/aws/notify/event-bus.js +326 -0
- package/lib/aws/notify/event-pattern.d.ts +220 -0
- package/lib/aws/notify/event-pattern.js +197 -0
- package/lib/aws/notify/index.d.ts +15 -0
- package/lib/aws/notify/index.js +35 -0
- package/lib/aws/notify/input.d.ts +126 -0
- package/lib/aws/notify/input.js +282 -0
- package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
- package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
- package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
- package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
- package/lib/aws/notify/kinesis-stream.d.ts +705 -0
- package/lib/aws/notify/kinesis-stream.js +541 -0
- package/lib/aws/notify/on-event-options.d.ts +54 -0
- package/lib/aws/notify/on-event-options.js +3 -0
- package/lib/aws/notify/queue-config.generated.d.ts +85 -0
- package/lib/aws/notify/queue-config.generated.js +3 -0
- package/lib/aws/notify/queue-policy.d.ts +35 -0
- package/lib/aws/notify/queue-policy.js +39 -0
- package/lib/aws/notify/queue.d.ts +355 -0
- package/lib/aws/notify/queue.js +305 -0
- package/lib/aws/notify/resource-policy.d.ts +41 -0
- package/lib/aws/notify/resource-policy.js +43 -0
- package/lib/aws/notify/rule.d.ts +153 -0
- package/lib/aws/notify/rule.js +227 -0
- package/lib/aws/notify/schedule.d.ts +83 -0
- package/lib/aws/notify/schedule.js +116 -0
- package/lib/aws/notify/target.d.ts +102 -0
- package/lib/aws/notify/target.js +3 -0
- package/lib/aws/notify/targets/event-bus.d.ts +39 -0
- package/lib/aws/notify/targets/event-bus.js +40 -0
- package/lib/aws/notify/targets/function.d.ts +31 -0
- package/lib/aws/notify/targets/function.js +36 -0
- package/lib/aws/notify/targets/index.d.ts +6 -0
- package/lib/aws/notify/targets/index.js +37 -0
- package/lib/aws/notify/targets/log-group.d.ts +89 -0
- package/lib/aws/notify/targets/log-group.js +110 -0
- package/lib/aws/notify/targets/sqs.d.ts +45 -0
- package/lib/aws/notify/targets/sqs.js +73 -0
- package/lib/aws/notify/targets/state-machine.d.ts +36 -0
- package/lib/aws/notify/targets/state-machine.js +39 -0
- package/lib/aws/notify/targets/util.d.ts +71 -0
- package/lib/aws/notify/targets/util.js +130 -0
- package/lib/aws/notify/util.d.ts +13 -0
- package/lib/aws/notify/util.js +69 -0
- package/lib/aws/provider-config.generated.d.ts +220 -0
- package/lib/aws/provider-config.generated.js +3 -0
- package/lib/aws/storage/bucket-destination.d.ts +41 -0
- package/lib/aws/storage/bucket-destination.js +13 -0
- package/lib/aws/storage/bucket-notifications.d.ts +58 -0
- package/lib/aws/storage/bucket-notifications.js +169 -0
- package/lib/aws/storage/bucket-perms.d.ts +9 -0
- package/lib/aws/storage/bucket-perms.js +33 -0
- package/lib/aws/storage/bucket-policy.d.ts +51 -0
- package/lib/aws/storage/bucket-policy.js +53 -0
- package/lib/aws/storage/bucket-source.d.ts +41 -0
- package/lib/aws/storage/bucket-source.js +79 -0
- package/lib/aws/storage/bucket.d.ts +941 -0
- package/lib/aws/storage/bucket.js +869 -0
- package/lib/aws/storage/cors-config.generated.d.ts +57 -0
- package/lib/aws/storage/cors-config.generated.js +3 -0
- package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
- package/lib/aws/storage/cors-rule-config.generated.js +3 -0
- package/lib/aws/storage/index.d.ts +12 -0
- package/lib/aws/storage/index.js +31 -0
- package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
- package/lib/aws/storage/lifecycle-config.generated.js +3 -0
- package/lib/aws/storage/notification-targets/function.d.ts +11 -0
- package/lib/aws/storage/notification-targets/function.js +48 -0
- package/lib/aws/storage/notification-targets/index.d.ts +2 -0
- package/lib/aws/storage/notification-targets/index.js +21 -0
- package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
- package/lib/aws/storage/notification-targets/queue.js +58 -0
- package/lib/aws/storage/origin-access-identity.d.ts +91 -0
- package/lib/aws/storage/origin-access-identity.js +76 -0
- package/lib/aws/storage/util.d.ts +40 -0
- package/lib/aws/storage/util.js +85 -0
- package/lib/aws/storage/website-config.generated.d.ts +73 -0
- package/lib/aws/storage/website-config.generated.js +3 -0
- package/lib/aws/util.d.ts +4 -0
- package/lib/aws/util.js +25 -0
- package/lib/construct-base.d.ts +69 -0
- package/lib/construct-base.js +89 -0
- package/lib/duration.d.ts +160 -0
- package/lib/duration.js +327 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +24 -0
- package/lib/private/index.d.ts +2 -0
- package/lib/private/index.js +19 -0
- package/lib/private/terraform-dependables-aspect.d.ts +20 -0
- package/lib/private/terraform-dependables-aspect.js +95 -0
- package/lib/private/unique-resource-name.d.ts +9 -0
- package/lib/private/unique-resource-name.js +145 -0
- package/lib/size.d.ts +146 -0
- package/lib/size.js +220 -0
- package/lib/stack-base.d.ts +188 -0
- package/lib/stack-base.js +183 -0
- package/lib/token.d.ts +32 -0
- package/lib/token.js +54 -0
- package/node_modules/camel-case/LICENSE +21 -0
- package/node_modules/camel-case/README.md +47 -0
- package/node_modules/camel-case/dist/index.d.ts +5 -0
- package/node_modules/camel-case/dist/index.js +23 -0
- package/node_modules/camel-case/dist/index.js.map +1 -0
- package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
- package/node_modules/camel-case/dist/index.spec.js +26 -0
- package/node_modules/camel-case/dist/index.spec.js.map +1 -0
- package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
- package/node_modules/camel-case/dist.es2015/index.js +17 -0
- package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
- package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/camel-case/package.json +89 -0
- package/node_modules/capital-case/LICENSE +21 -0
- package/node_modules/capital-case/README.md +37 -0
- package/node_modules/capital-case/dist/index.d.ts +4 -0
- package/node_modules/capital-case/dist/index.js +16 -0
- package/node_modules/capital-case/dist/index.js.map +1 -0
- package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
- package/node_modules/capital-case/dist/index.spec.js +24 -0
- package/node_modules/capital-case/dist/index.spec.js.map +1 -0
- package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
- package/node_modules/capital-case/dist.es2015/index.js +11 -0
- package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
- package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/capital-case/package.json +90 -0
- package/node_modules/change-case/LICENSE +21 -0
- package/node_modules/change-case/README.md +44 -0
- package/node_modules/change-case/dist/index.d.ts +11 -0
- package/node_modules/change-case/dist/index.js +15 -0
- package/node_modules/change-case/dist/index.js.map +1 -0
- package/node_modules/change-case/dist/index.spec.d.ts +1 -0
- package/node_modules/change-case/dist/index.spec.js +9 -0
- package/node_modules/change-case/dist/index.spec.js.map +1 -0
- package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
- package/node_modules/change-case/dist.es2015/index.js +12 -0
- package/node_modules/change-case/dist.es2015/index.js.map +1 -0
- package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
- package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/change-case/package.json +101 -0
- package/node_modules/constant-case/LICENSE +21 -0
- package/node_modules/constant-case/README.md +37 -0
- package/node_modules/constant-case/dist/index.d.ts +3 -0
- package/node_modules/constant-case/dist/index.js +12 -0
- package/node_modules/constant-case/dist/index.js.map +1 -0
- package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
- package/node_modules/constant-case/dist/index.spec.js +26 -0
- package/node_modules/constant-case/dist/index.spec.js.map +1 -0
- package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/constant-case/dist.es2015/index.js +8 -0
- package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
- package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/constant-case/package.json +90 -0
- package/node_modules/dot-case/LICENSE +21 -0
- package/node_modules/dot-case/README.md +37 -0
- package/node_modules/dot-case/dist/index.d.ts +3 -0
- package/node_modules/dot-case/dist/index.js +11 -0
- package/node_modules/dot-case/dist/index.js.map +1 -0
- package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
- package/node_modules/dot-case/dist/index.spec.js +26 -0
- package/node_modules/dot-case/dist/index.spec.js.map +1 -0
- package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/dot-case/dist.es2015/index.js +7 -0
- package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
- package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/dot-case/package.json +89 -0
- package/node_modules/esbuild-wasm/LICENSE.md +21 -0
- package/node_modules/esbuild-wasm/README.md +3 -0
- package/node_modules/esbuild-wasm/bin/esbuild +91 -0
- package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
- package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
- package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
- package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
- package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
- package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
- package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
- package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
- package/node_modules/esbuild-wasm/lib/main.js +2051 -0
- package/node_modules/esbuild-wasm/package.json +19 -0
- package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
- package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
- package/node_modules/header-case/LICENSE +21 -0
- package/node_modules/header-case/README.md +37 -0
- package/node_modules/header-case/dist/index.d.ts +3 -0
- package/node_modules/header-case/dist/index.js +11 -0
- package/node_modules/header-case/dist/index.js.map +1 -0
- package/node_modules/header-case/dist/index.spec.d.ts +1 -0
- package/node_modules/header-case/dist/index.spec.js +24 -0
- package/node_modules/header-case/dist/index.spec.js.map +1 -0
- package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/header-case/dist.es2015/index.js +7 -0
- package/node_modules/header-case/dist.es2015/index.js.map +1 -0
- package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/header-case/package.json +89 -0
- package/node_modules/lower-case/LICENSE +21 -0
- package/node_modules/lower-case/README.md +35 -0
- package/node_modules/lower-case/dist/index.d.ts +8 -0
- package/node_modules/lower-case/dist/index.js +53 -0
- package/node_modules/lower-case/dist/index.js.map +1 -0
- package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
- package/node_modules/lower-case/dist/index.spec.js +36 -0
- package/node_modules/lower-case/dist/index.spec.js.map +1 -0
- package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
- package/node_modules/lower-case/dist.es2015/index.js +48 -0
- package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
- package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
- package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/lower-case/package.json +87 -0
- package/node_modules/mime-db/HISTORY.md +507 -0
- package/node_modules/mime-db/LICENSE +23 -0
- package/node_modules/mime-db/README.md +100 -0
- package/node_modules/mime-db/db.json +8519 -0
- package/node_modules/mime-db/index.js +12 -0
- package/node_modules/mime-db/package.json +60 -0
- package/node_modules/mime-types/HISTORY.md +397 -0
- package/node_modules/mime-types/LICENSE +23 -0
- package/node_modules/mime-types/README.md +113 -0
- package/node_modules/mime-types/index.js +188 -0
- package/node_modules/mime-types/package.json +44 -0
- package/node_modules/no-case/LICENSE +21 -0
- package/node_modules/no-case/README.md +37 -0
- package/node_modules/no-case/dist/index.d.ts +10 -0
- package/node_modules/no-case/dist/index.js +35 -0
- package/node_modules/no-case/dist/index.js.map +1 -0
- package/node_modules/no-case/dist/index.spec.d.ts +1 -0
- package/node_modules/no-case/dist/index.spec.js +59 -0
- package/node_modules/no-case/dist/index.spec.js.map +1 -0
- package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
- package/node_modules/no-case/dist.es2015/index.js +31 -0
- package/node_modules/no-case/dist.es2015/index.js.map +1 -0
- package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
- package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/no-case/package.json +85 -0
- package/node_modules/param-case/LICENSE +21 -0
- package/node_modules/param-case/README.md +37 -0
- package/node_modules/param-case/dist/index.d.ts +3 -0
- package/node_modules/param-case/dist/index.js +11 -0
- package/node_modules/param-case/dist/index.js.map +1 -0
- package/node_modules/param-case/dist/index.spec.d.ts +1 -0
- package/node_modules/param-case/dist/index.spec.js +24 -0
- package/node_modules/param-case/dist/index.spec.js.map +1 -0
- package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/param-case/dist.es2015/index.js +7 -0
- package/node_modules/param-case/dist.es2015/index.js.map +1 -0
- package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/param-case/package.json +91 -0
- package/node_modules/pascal-case/LICENSE +21 -0
- package/node_modules/pascal-case/README.md +47 -0
- package/node_modules/pascal-case/dist/index.d.ts +5 -0
- package/node_modules/pascal-case/dist/index.js +24 -0
- package/node_modules/pascal-case/dist/index.js.map +1 -0
- package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
- package/node_modules/pascal-case/dist/index.spec.js +25 -0
- package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
- package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
- package/node_modules/pascal-case/dist.es2015/index.js +18 -0
- package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/pascal-case/package.json +90 -0
- package/node_modules/path-case/LICENSE +21 -0
- package/node_modules/path-case/README.md +37 -0
- package/node_modules/path-case/dist/index.d.ts +3 -0
- package/node_modules/path-case/dist/index.js +11 -0
- package/node_modules/path-case/dist/index.js.map +1 -0
- package/node_modules/path-case/dist/index.spec.d.ts +1 -0
- package/node_modules/path-case/dist/index.spec.js +24 -0
- package/node_modules/path-case/dist/index.spec.js.map +1 -0
- package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/path-case/dist.es2015/index.js +7 -0
- package/node_modules/path-case/dist.es2015/index.js.map +1 -0
- package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/path-case/package.json +88 -0
- package/node_modules/sentence-case/LICENSE +21 -0
- package/node_modules/sentence-case/README.md +37 -0
- package/node_modules/sentence-case/dist/index.d.ts +4 -0
- package/node_modules/sentence-case/dist/index.js +19 -0
- package/node_modules/sentence-case/dist/index.js.map +1 -0
- package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
- package/node_modules/sentence-case/dist/index.spec.js +24 -0
- package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
- package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
- package/node_modules/sentence-case/dist.es2015/index.js +14 -0
- package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/sentence-case/package.json +89 -0
- package/node_modules/snake-case/LICENSE +21 -0
- package/node_modules/snake-case/README.md +37 -0
- package/node_modules/snake-case/dist/index.d.ts +3 -0
- package/node_modules/snake-case/dist/index.js +11 -0
- package/node_modules/snake-case/dist/index.js.map +1 -0
- package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
- package/node_modules/snake-case/dist/index.spec.js +25 -0
- package/node_modules/snake-case/dist/index.spec.js.map +1 -0
- package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/snake-case/dist.es2015/index.js +7 -0
- package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
- package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
- package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/snake-case/package.json +90 -0
- package/node_modules/tslib/CopyrightNotice.txt +15 -0
- package/node_modules/tslib/LICENSE.txt +12 -0
- package/node_modules/tslib/README.md +164 -0
- package/node_modules/tslib/SECURITY.md +41 -0
- package/node_modules/tslib/modules/index.d.ts +37 -0
- package/node_modules/tslib/modules/index.js +68 -0
- package/node_modules/tslib/modules/package.json +3 -0
- package/node_modules/tslib/package.json +47 -0
- package/node_modules/tslib/tslib.d.ts +453 -0
- package/node_modules/tslib/tslib.es6.html +1 -0
- package/node_modules/tslib/tslib.es6.js +374 -0
- package/node_modules/tslib/tslib.es6.mjs +373 -0
- package/node_modules/tslib/tslib.html +1 -0
- package/node_modules/tslib/tslib.js +424 -0
- package/node_modules/upper-case/README.md +34 -0
- package/node_modules/upper-case/dist/index.d.ts +8 -0
- package/node_modules/upper-case/dist/index.js +49 -0
- package/node_modules/upper-case/dist/index.js.map +1 -0
- package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
- package/node_modules/upper-case/dist/index.spec.js +34 -0
- package/node_modules/upper-case/dist/index.spec.js.map +1 -0
- package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
- package/node_modules/upper-case/dist.es2015/index.js +44 -0
- package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
- package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
- package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/upper-case/package.json +86 -0
- package/node_modules/upper-case-first/LICENSE +21 -0
- package/node_modules/upper-case-first/README.md +32 -0
- package/node_modules/upper-case-first/dist/index.d.ts +4 -0
- package/node_modules/upper-case-first/dist/index.js +11 -0
- package/node_modules/upper-case-first/dist/index.js.map +1 -0
- package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
- package/node_modules/upper-case-first/dist/index.spec.js +20 -0
- package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
- package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
- package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/upper-case-first/package.json +87 -0
- package/package.json +152 -0
- package/setup.js +2 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { lambdaAlias } from "@cdktf/provider-aws";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { Architecture } from "./architecture";
|
|
4
|
+
import { EventInvokeConfigOptions } from "./event-invoke-config";
|
|
5
|
+
import { IFunction, QualifiedFunctionBase } from "./function-base";
|
|
6
|
+
/**
|
|
7
|
+
* Outputs that can be exposed through the grid
|
|
8
|
+
*/
|
|
9
|
+
export interface AliasOutputs {
|
|
10
|
+
/**
|
|
11
|
+
* The Amazon Resource Name (ARN) identifying your Lambda function alias.
|
|
12
|
+
*/
|
|
13
|
+
readonly name: string;
|
|
14
|
+
/**
|
|
15
|
+
* The ARN to be used for invoking Lambda Function from API Gateway - to be used in `aws_api_gateway_integration`'s uri
|
|
16
|
+
*/
|
|
17
|
+
readonly invokeArn: string;
|
|
18
|
+
}
|
|
19
|
+
export interface IAlias extends IFunction {
|
|
20
|
+
/** strongly typed aliasOutputs */
|
|
21
|
+
readonly aliasOutputs: AliasOutputs;
|
|
22
|
+
/**
|
|
23
|
+
* Name of this alias.
|
|
24
|
+
*
|
|
25
|
+
* @attribute
|
|
26
|
+
*/
|
|
27
|
+
readonly aliasName: string;
|
|
28
|
+
/**
|
|
29
|
+
* The underlying Lambda function
|
|
30
|
+
*/
|
|
31
|
+
readonly lambda: IFunction;
|
|
32
|
+
/**
|
|
33
|
+
* The underlying Lambda function version.
|
|
34
|
+
*/
|
|
35
|
+
readonly version: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Options for `lambda.Alias`.
|
|
39
|
+
*/
|
|
40
|
+
export interface AliasOptions extends EventInvokeConfigOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Description for the alias
|
|
43
|
+
*
|
|
44
|
+
* @default No description
|
|
45
|
+
*/
|
|
46
|
+
readonly description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Additional versions with individual weights this alias points to
|
|
49
|
+
*
|
|
50
|
+
* Individual additional version weights specified here should add up to
|
|
51
|
+
* (less than) one. All remaining weight is routed to the default
|
|
52
|
+
* version.
|
|
53
|
+
*
|
|
54
|
+
* For example, the config is
|
|
55
|
+
*
|
|
56
|
+
* version: "1"
|
|
57
|
+
* additionalVersions: [{ version: "2", weight: 0.05 }]
|
|
58
|
+
*
|
|
59
|
+
* Then 5% of traffic will be routed to function version 2, while
|
|
60
|
+
* the remaining 95% of traffic will be routed to function version 1.
|
|
61
|
+
*
|
|
62
|
+
* @default No additional versions
|
|
63
|
+
*/
|
|
64
|
+
readonly additionalVersions?: VersionWeight[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Properties for a new Lambda alias
|
|
68
|
+
*/
|
|
69
|
+
export interface AliasProps extends AliasOptions {
|
|
70
|
+
/**
|
|
71
|
+
* Name of this alias
|
|
72
|
+
*
|
|
73
|
+
* Minimum length of 1. Maximum length of 128.
|
|
74
|
+
* Pattern: (?!^[0-9]+$)([a-zA-Z0-9-_]+)
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
readonly aliasName: string;
|
|
78
|
+
/**
|
|
79
|
+
* Function this alias refers to
|
|
80
|
+
*/
|
|
81
|
+
readonly function: IFunction;
|
|
82
|
+
/**
|
|
83
|
+
* Function version this alias refers to
|
|
84
|
+
*
|
|
85
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/lambda_alias#function_version LambdaAlias#function_version}
|
|
86
|
+
* pattern (\$LATEST|[0-9]+)
|
|
87
|
+
*/
|
|
88
|
+
readonly version: string;
|
|
89
|
+
}
|
|
90
|
+
export interface AliasAttributes {
|
|
91
|
+
readonly aliasName: string;
|
|
92
|
+
readonly function: IFunction;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* A new alias to a particular version of a Lambda function.
|
|
96
|
+
*/
|
|
97
|
+
export declare class Alias extends QualifiedFunctionBase implements IAlias {
|
|
98
|
+
static fromAliasAttributes(scope: Construct, id: string, attrs: AliasAttributes): IAlias;
|
|
99
|
+
readonly resource: lambdaAlias.LambdaAlias;
|
|
100
|
+
private readonly _aliasOutputs;
|
|
101
|
+
get aliasOutputs(): AliasOutputs;
|
|
102
|
+
get outputs(): Record<string, any>;
|
|
103
|
+
/**
|
|
104
|
+
* Name of this alias.
|
|
105
|
+
*
|
|
106
|
+
* @attribute
|
|
107
|
+
*/
|
|
108
|
+
readonly aliasName: string;
|
|
109
|
+
/**
|
|
110
|
+
* Name of this alias
|
|
111
|
+
*
|
|
112
|
+
* Used to be able to use Alias in place of a regular Lambda. Lambda accepts
|
|
113
|
+
* ARNs everywhere it accepts function names.
|
|
114
|
+
*/
|
|
115
|
+
readonly functionName: string;
|
|
116
|
+
readonly lambda: IFunction;
|
|
117
|
+
readonly architecture: Architecture;
|
|
118
|
+
readonly version: string;
|
|
119
|
+
/**
|
|
120
|
+
* ARN of this alias
|
|
121
|
+
*
|
|
122
|
+
* Used to be able to use Alias in place of a regular Lambda. Lambda accepts
|
|
123
|
+
* ARNs everywhere it accepts function names.
|
|
124
|
+
*/
|
|
125
|
+
readonly functionArn: string;
|
|
126
|
+
protected readonly qualifier: string;
|
|
127
|
+
protected readonly canCreatePermissions: boolean;
|
|
128
|
+
constructor(scope: Construct, id: string, props: AliasProps);
|
|
129
|
+
get grantPrincipal(): import("../iam").IPrincipal;
|
|
130
|
+
get role(): import("../iam").IRole | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Calculate the routingConfig parameter from the input props
|
|
133
|
+
*/
|
|
134
|
+
private determineRoutingConfig;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A version/weight pair for routing traffic to Lambda functions
|
|
138
|
+
*/
|
|
139
|
+
export interface VersionWeight {
|
|
140
|
+
/**
|
|
141
|
+
* The version to route traffic to
|
|
142
|
+
*/
|
|
143
|
+
readonly version: string;
|
|
144
|
+
/**
|
|
145
|
+
* How much weight to assign to this version (0..1)
|
|
146
|
+
*/
|
|
147
|
+
readonly weight: number;
|
|
148
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Alias = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const provider_aws_1 = require("@cdktf/provider-aws");
|
|
7
|
+
const function_base_1 = require("./function-base");
|
|
8
|
+
/**
|
|
9
|
+
* A new alias to a particular version of a Lambda function.
|
|
10
|
+
*/
|
|
11
|
+
class Alias extends function_base_1.QualifiedFunctionBase {
|
|
12
|
+
static fromAliasAttributes(scope, id, attrs) {
|
|
13
|
+
class Imported extends function_base_1.QualifiedFunctionBase {
|
|
14
|
+
/**
|
|
15
|
+
* Lambda function version which the alias uses.
|
|
16
|
+
*/
|
|
17
|
+
get version() {
|
|
18
|
+
return this.resource.functionVersion;
|
|
19
|
+
}
|
|
20
|
+
get aliasOutputs() {
|
|
21
|
+
return {
|
|
22
|
+
name: attrs.aliasName,
|
|
23
|
+
invokeArn: this.resource.invokeArn,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
get outputs() {
|
|
27
|
+
return this.aliasOutputs;
|
|
28
|
+
}
|
|
29
|
+
constructor(s, i) {
|
|
30
|
+
super(s, i);
|
|
31
|
+
this.aliasName = attrs.aliasName;
|
|
32
|
+
this.lambda = attrs.function;
|
|
33
|
+
this.functionArn = `${attrs.function.functionArn}:${attrs.aliasName}`;
|
|
34
|
+
this.functionName = `${attrs.function.functionName}:${attrs.aliasName}`;
|
|
35
|
+
this.grantPrincipal = attrs.function.grantPrincipal;
|
|
36
|
+
this.role = attrs.function.role;
|
|
37
|
+
this.architecture = attrs.function.architecture;
|
|
38
|
+
this.canCreatePermissions = this._isStackAccount();
|
|
39
|
+
this.qualifier = attrs.aliasName;
|
|
40
|
+
this.resource = new provider_aws_1.dataAwsLambdaAlias.DataAwsLambdaAlias(this, "Resource", {
|
|
41
|
+
name: this.aliasName,
|
|
42
|
+
functionName: attrs.function.functionName,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return new Imported(scope, id);
|
|
47
|
+
}
|
|
48
|
+
get aliasOutputs() {
|
|
49
|
+
return this._aliasOutputs;
|
|
50
|
+
}
|
|
51
|
+
get outputs() {
|
|
52
|
+
return this._aliasOutputs;
|
|
53
|
+
}
|
|
54
|
+
// // TODO: Re-Add scalable functions
|
|
55
|
+
// private scalableAlias?: ScalableFunctionAttribute;
|
|
56
|
+
// private readonly scalingRole: iam.IRole;
|
|
57
|
+
constructor(scope, id, props) {
|
|
58
|
+
super(scope, id, props);
|
|
59
|
+
this.canCreatePermissions = true;
|
|
60
|
+
this.lambda = props.function;
|
|
61
|
+
// TODO: Does it make sense to just prefix aliasName with GridUUID?
|
|
62
|
+
// should use this.stack.uniqueResourceName instead?
|
|
63
|
+
this.aliasName = `${this.gridUUID}-${props.aliasName}`;
|
|
64
|
+
this.version = props.version;
|
|
65
|
+
this.architecture = this.lambda.architecture;
|
|
66
|
+
this.resource = new provider_aws_1.lambdaAlias.LambdaAlias(this, "Resource", {
|
|
67
|
+
name: this.aliasName,
|
|
68
|
+
description: props.description,
|
|
69
|
+
functionName: this.lambda.functionName,
|
|
70
|
+
functionVersion: props.version,
|
|
71
|
+
routingConfig: this.determineRoutingConfig(props),
|
|
72
|
+
});
|
|
73
|
+
// TODO: Add aws_lambda_provisioned_concurrency_config
|
|
74
|
+
// // Use a Service Linked Role
|
|
75
|
+
// // https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html
|
|
76
|
+
// this.scalingRole = iam.Role.fromRoleArn(
|
|
77
|
+
// this,
|
|
78
|
+
// "ScalingRole",
|
|
79
|
+
// this.stack.formatArn({
|
|
80
|
+
// service: "iam",
|
|
81
|
+
// region: "",
|
|
82
|
+
// resource:
|
|
83
|
+
// "role/aws-service-role/lambda.application-autoscaling.amazonaws.com",
|
|
84
|
+
// resourceName:
|
|
85
|
+
// "AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency",
|
|
86
|
+
// }),
|
|
87
|
+
// );
|
|
88
|
+
// includes qualifier
|
|
89
|
+
this.functionArn = this.resource.invokeArn;
|
|
90
|
+
// this.getResourceArnAttribute(alias.ref, {
|
|
91
|
+
// service: "lambda",
|
|
92
|
+
// resource: "function",
|
|
93
|
+
// resourceName: `${this.lambda.functionName}:${this.aliasName}`,
|
|
94
|
+
// arnFormat: ArnFormat.COLON_RESOURCE_NAME,
|
|
95
|
+
// });
|
|
96
|
+
this.qualifier = this.aliasName;
|
|
97
|
+
if (props.onFailure ||
|
|
98
|
+
props.onSuccess ||
|
|
99
|
+
props.maxEventAge ||
|
|
100
|
+
props.retryAttempts !== undefined) {
|
|
101
|
+
this.configureAsyncInvoke({
|
|
102
|
+
onFailure: props.onFailure,
|
|
103
|
+
onSuccess: props.onSuccess,
|
|
104
|
+
maxEventAge: props.maxEventAge,
|
|
105
|
+
retryAttempts: props.retryAttempts,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// ARN parsing splits on `:`, so we can only get the function's name from the ARN as resourceName...
|
|
109
|
+
// And we're parsing it out (instead of using the underlying function directly) in order to have use of it incur
|
|
110
|
+
// an implicit dependency on the resource.
|
|
111
|
+
//`${this.stack.splitArn(this.functionArn, ArnFormat.COLON_RESOURCE_NAME).resourceName!}:${this.aliasName}`;
|
|
112
|
+
this.functionName = this.resource.functionName;
|
|
113
|
+
this._aliasOutputs = {
|
|
114
|
+
invokeArn: this.resource.invokeArn,
|
|
115
|
+
name: this.aliasName,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
get grantPrincipal() {
|
|
119
|
+
return this.lambda.grantPrincipal;
|
|
120
|
+
}
|
|
121
|
+
get role() {
|
|
122
|
+
return this.lambda.role;
|
|
123
|
+
}
|
|
124
|
+
// /**
|
|
125
|
+
// * Configure provisioned concurrency autoscaling on a function alias. Returns a scalable attribute that can call
|
|
126
|
+
// * `scaleOnUtilization()` and `scaleOnSchedule()`.
|
|
127
|
+
// *
|
|
128
|
+
// * @param options Autoscaling options
|
|
129
|
+
// */
|
|
130
|
+
// public addAutoScaling(
|
|
131
|
+
// options: AutoScalingOptions,
|
|
132
|
+
// ): IScalableFunctionAttribute {
|
|
133
|
+
// if (this.scalableAlias) {
|
|
134
|
+
// throw new Error("AutoScaling already enabled for this alias");
|
|
135
|
+
// }
|
|
136
|
+
// return (this.scalableAlias = new ScalableFunctionAttribute(
|
|
137
|
+
// this,
|
|
138
|
+
// "AliasScaling",
|
|
139
|
+
// {
|
|
140
|
+
// minCapacity: options.minCapacity ?? 1,
|
|
141
|
+
// maxCapacity: options.maxCapacity,
|
|
142
|
+
// resourceId: `function:${this.functionName}`,
|
|
143
|
+
// dimension: "lambda:function:ProvisionedConcurrency",
|
|
144
|
+
// serviceNamespace: appscaling.ServiceNamespace.LAMBDA,
|
|
145
|
+
// role: this.scalingRole,
|
|
146
|
+
// },
|
|
147
|
+
// ));
|
|
148
|
+
// }
|
|
149
|
+
/**
|
|
150
|
+
* Calculate the routingConfig parameter from the input props
|
|
151
|
+
*/
|
|
152
|
+
determineRoutingConfig(props) {
|
|
153
|
+
if (!props.additionalVersions || props.additionalVersions.length === 0) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
let total = 0;
|
|
157
|
+
const additionalVersionWeights = {};
|
|
158
|
+
for (const vw of props.additionalVersions) {
|
|
159
|
+
if (vw.weight < 0 || vw.weight > 1) {
|
|
160
|
+
throw new Error(`Additional version weight must be between 0 and 1, got: ${vw.weight}`);
|
|
161
|
+
}
|
|
162
|
+
total += vw.weight;
|
|
163
|
+
additionalVersionWeights[vw.version] = vw.weight;
|
|
164
|
+
}
|
|
165
|
+
if (total > 1) {
|
|
166
|
+
throw new Error(`Sum of additional version weights must not exceed 1, got: ${total}`);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
additionalVersionWeights,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.Alias = Alias;
|
|
174
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
175
|
+
Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.0.8" };
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFJdEUsbURBQW1FO0FBb0huRTs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFDQUFxQjtJQUN2QyxNQUFNLENBQUMsbUJBQW1CLENBQy9CLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixNQUFNLFFBQVMsU0FBUSxxQ0FBcUI7WUFHMUM7O2VBRUc7WUFDSCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQztZQVFELElBQVcsWUFBWTtnQkFDckIsT0FBTztvQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7aUJBQ25DLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0IsQ0FBQztZQUdELFlBQVksQ0FBWSxFQUFFLENBQVM7Z0JBQ2pDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBMUJFLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQU81QixXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsZ0JBQVcsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakUsaUJBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkUsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQkFD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QyxDQUFDO1FBQ2QsTUFBTSx3QkFBd0IsR0FBOEIsRUFBRSxDQUFDO1FBQy9ELEtBQUssTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQ3ZFLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkIsd0JBQXdCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FDYiw2REFBNkQsS0FBSyxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLHdCQUF3QjtTQUN6QixDQUFDO0lBQ0osQ0FBQzs7QUF4T0gsc0JBa1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhQWxpYXMsIGRhdGFBd3NMYW1iZGFBbGlhcyB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlIH0gZnJvbSBcIi4vYXJjaGl0ZWN0dXJlXCI7XG5pbXBvcnQgeyBFdmVudEludm9rZUNvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi9ldmVudC1pbnZva2UtY29uZmlnXCI7XG5pbXBvcnQgeyBJRnVuY3Rpb24sIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSB9IGZyb20gXCIuL2Z1bmN0aW9uLWJhc2VcIjtcbi8vIGltcG9ydCB7IFNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUgfSBmcm9tIFwiLi9wcml2YXRlL3NjYWxhYmxlLWZ1bmN0aW9uLWF0dHJpYnV0ZVwiO1xuLy8gaW1wb3J0IHtcbi8vICAgQXV0b1NjYWxpbmdPcHRpb25zLFxuLy8gICBJU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZSxcbi8vIH0gZnJvbSBcIi4vc2NhbGFibGUtYXR0cmlidXRlLWFwaVwiO1xuLy8gaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL1wiO1xuXG4vKipcbiAqIE91dHB1dHMgdGhhdCBjYW4gYmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBncmlkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNPdXRwdXRzIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBpZGVudGlmeWluZyB5b3VyIExhbWJkYSBmdW5jdGlvbiBhbGlhcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiB0byBiZSB1c2VkIGZvciBpbnZva2luZyBMYW1iZGEgRnVuY3Rpb24gZnJvbSBBUEkgR2F0ZXdheSAtIHRvIGJlIHVzZWQgaW4gYGF3c19hcGlfZ2F0ZXdheV9pbnRlZ3JhdGlvbmAncyB1cmlcbiAgICovXG4gIHJlYWRvbmx5IGludm9rZUFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBbGlhcyBleHRlbmRzIElGdW5jdGlvbiB7XG4gIC8qKiBzdHJvbmdseSB0eXBlZCBhbGlhc091dHB1dHMgKi9cbiAgcmVhZG9ubHkgYWxpYXNPdXRwdXRzOiBBbGlhc091dHB1dHM7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBhbGlhcy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBsYW1iZGEuQWxpYXNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsaWFzT3B0aW9ucyBleHRlbmRzIEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIGFsaWFzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB2ZXJzaW9ucyB3aXRoIGluZGl2aWR1YWwgd2VpZ2h0cyB0aGlzIGFsaWFzIHBvaW50cyB0b1xuICAgKlxuICAgKiBJbmRpdmlkdWFsIGFkZGl0aW9uYWwgdmVyc2lvbiB3ZWlnaHRzIHNwZWNpZmllZCBoZXJlIHNob3VsZCBhZGQgdXAgdG9cbiAgICogKGxlc3MgdGhhbikgb25lLiBBbGwgcmVtYWluaW5nIHdlaWdodCBpcyByb3V0ZWQgdG8gdGhlIGRlZmF1bHRcbiAgICogdmVyc2lvbi5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHRoZSBjb25maWcgaXNcbiAgICpcbiAgICogICAgdmVyc2lvbjogXCIxXCJcbiAgICogICAgYWRkaXRpb25hbFZlcnNpb25zOiBbeyB2ZXJzaW9uOiBcIjJcIiwgd2VpZ2h0OiAwLjA1IH1dXG4gICAqXG4gICAqIFRoZW4gNSUgb2YgdHJhZmZpYyB3aWxsIGJlIHJvdXRlZCB0byBmdW5jdGlvbiB2ZXJzaW9uIDIsIHdoaWxlXG4gICAqIHRoZSByZW1haW5pbmcgOTUlIG9mIHRyYWZmaWMgd2lsbCBiZSByb3V0ZWQgdG8gZnVuY3Rpb24gdmVyc2lvbiAxLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIHZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVmVyc2lvbnM/OiBWZXJzaW9uV2VpZ2h0W107XG5cbiAgLy8gVE9ETzogcmUtYWRkIHN1cHBvcnQgZm9yIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5XG4gIC8vIC8qKlxuICAvLyAgKiBTcGVjaWZpZXMgYSBwcm92aXNpb25lZCBjb25jdXJyZW5jeSBjb25maWd1cmF0aW9uIGZvciBhIGZ1bmN0aW9uJ3MgYWxpYXMuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IE5vIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5XG4gIC8vICAqL1xuICAvLyByZWFkb25seSBwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IExhbWJkYSBhbGlhc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsaWFzUHJvcHMgZXh0ZW5kcyBBbGlhc09wdGlvbnMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDEyOC5cbiAgICogUGF0dGVybjogKD8hXlswLTldKyQpKFthLXpBLVowLTktX10rKVxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRoaXMgYWxpYXMgcmVmZXJzIHRvXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB2ZXJzaW9uIHRoaXMgYWxpYXMgcmVmZXJzIHRvXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL2xhbWJkYV9hbGlhcyNmdW5jdGlvbl92ZXJzaW9uIExhbWJkYUFsaWFzI2Z1bmN0aW9uX3ZlcnNpb259XG4gICAqIHBhdHRlcm4gKFxcJExBVEVTVHxbMC05XSspXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNBdHRyaWJ1dGVzIHtcbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogQSBuZXcgYWxpYXMgdG8gYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgYSBMYW1iZGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlhcyBleHRlbmRzIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSBpbXBsZW1lbnRzIElBbGlhcyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFsaWFzQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEFsaWFzQXR0cmlidXRlcyxcbiAgKTogSUFsaWFzIHtcbiAgICBjbGFzcyBJbXBvcnRlZCBleHRlbmRzIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSBpbXBsZW1lbnRzIElBbGlhcyB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGRhdGFBd3NMYW1iZGFBbGlhcy5EYXRhQXdzTGFtYmRhQWxpYXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNOYW1lID0gYXR0cnMuYWxpYXNOYW1lO1xuICAgICAgLyoqXG4gICAgICAgKiBMYW1iZGEgZnVuY3Rpb24gdmVyc2lvbiB3aGljaCB0aGUgYWxpYXMgdXNlcy5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5mdW5jdGlvblZlcnNpb247XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhID0gYXR0cnMuZnVuY3Rpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm4gPSBgJHthdHRycy5mdW5jdGlvbi5mdW5jdGlvbkFybn06JHthdHRycy5hbGlhc05hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbk5hbWUgPSBgJHthdHRycy5mdW5jdGlvbi5mdW5jdGlvbk5hbWV9OiR7YXR0cnMuYWxpYXNOYW1lfWA7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWwgPSBhdHRycy5mdW5jdGlvbi5ncmFudFByaW5jaXBhbDtcbiAgICAgIHB1YmxpYyByZWFkb25seSByb2xlID0gYXR0cnMuZnVuY3Rpb24ucm9sZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhcmNoaXRlY3R1cmUgPSBhdHRycy5mdW5jdGlvbi5hcmNoaXRlY3R1cmU7XG5cbiAgICAgIHB1YmxpYyBnZXQgYWxpYXNPdXRwdXRzKCk6IEFsaWFzT3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogYXR0cnMuYWxpYXNOYW1lLFxuICAgICAgICAgIGludm9rZUFybjogdGhpcy5yZXNvdXJjZS5pbnZva2VBcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsaWFzT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5DcmVhdGVQZXJtaXNzaW9ucyA9IHRoaXMuX2lzU3RhY2tBY2NvdW50KCk7XG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVhbGlmaWVyID0gYXR0cnMuYWxpYXNOYW1lO1xuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZGF0YUF3c0xhbWJkYUFsaWFzLkRhdGFBd3NMYW1iZGFBbGlhcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmFsaWFzTmFtZSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogYXR0cnMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBsYW1iZGFBbGlhcy5MYW1iZGFBbGlhcztcbiAgcHJpdmF0ZSByZWFkb25seSBfYWxpYXNPdXRwdXRzOiBBbGlhc091dHB1dHM7XG4gIHB1YmxpYyBnZXQgYWxpYXNPdXRwdXRzKCk6IEFsaWFzT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX2FsaWFzT3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsaWFzT3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIFVzZWQgdG8gYmUgYWJsZSB0byB1c2UgQWxpYXMgaW4gcGxhY2Ugb2YgYSByZWd1bGFyIExhbWJkYS4gTGFtYmRhIGFjY2VwdHNcbiAgICogQVJOcyBldmVyeXdoZXJlIGl0IGFjY2VwdHMgZnVuY3Rpb24gbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYTogSUZ1bmN0aW9uO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyBhbGlhc1xuICAgKlxuICAgKiBVc2VkIHRvIGJlIGFibGUgdG8gdXNlIEFsaWFzIGluIHBsYWNlIG9mIGEgcmVndWxhciBMYW1iZGEuIExhbWJkYSBhY2NlcHRzXG4gICAqIEFSTnMgZXZlcnl3aGVyZSBpdCBhY2NlcHRzIGZ1bmN0aW9uIG5hbWVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1YWxpZmllcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5DcmVhdGVQZXJtaXNzaW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLy8gLy8gVE9ETzogUmUtQWRkIHNjYWxhYmxlIGZ1bmN0aW9uc1xuICAvLyBwcml2YXRlIHNjYWxhYmxlQWxpYXM/OiBTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlO1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IHNjYWxpbmdSb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsaWFzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMubGFtYmRhID0gcHJvcHMuZnVuY3Rpb247XG4gICAgLy8gVE9ETzogRG9lcyBpdCBtYWtlIHNlbnNlIHRvIGp1c3QgcHJlZml4IGFsaWFzTmFtZSB3aXRoIEdyaWRVVUlEP1xuICAgIC8vIHNob3VsZCB1c2UgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUgaW5zdGVhZD9cbiAgICB0aGlzLmFsaWFzTmFtZSA9IGAke3RoaXMuZ3JpZFVVSUR9LSR7cHJvcHMuYWxpYXNOYW1lfWA7XG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHMudmVyc2lvbjtcbiAgICB0aGlzLmFyY2hpdGVjdHVyZSA9IHRoaXMubGFtYmRhLmFyY2hpdGVjdHVyZTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgbGFtYmRhQWxpYXMuTGFtYmRhQWxpYXModGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiB0aGlzLmFsaWFzTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5sYW1iZGEuZnVuY3Rpb25OYW1lLFxuICAgICAgZnVuY3Rpb25WZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgcm91dGluZ0NvbmZpZzogdGhpcy5kZXRlcm1pbmVSb3V0aW5nQ29uZmlnKHByb3BzKSxcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IEFkZCBhd3NfbGFtYmRhX3Byb3Zpc2lvbmVkX2NvbmN1cnJlbmN5X2NvbmZpZ1xuXG4gICAgLy8gLy8gVXNlIGEgU2VydmljZSBMaW5rZWQgUm9sZVxuICAgIC8vIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvYXBwbGljYXRpb24tYXV0by1zY2FsaW5nLXNlcnZpY2UtbGlua2VkLXJvbGVzLmh0bWxcbiAgICAvLyB0aGlzLnNjYWxpbmdSb2xlID0gaWFtLlJvbGUuZnJvbVJvbGVBcm4oXG4gICAgLy8gICB0aGlzLFxuICAgIC8vICAgXCJTY2FsaW5nUm9sZVwiLFxuICAgIC8vICAgdGhpcy5zdGFjay5mb3JtYXRBcm4oe1xuICAgIC8vICAgICBzZXJ2aWNlOiBcImlhbVwiLFxuICAgIC8vICAgICByZWdpb246IFwiXCIsXG4gICAgLy8gICAgIHJlc291cmNlOlxuICAgIC8vICAgICAgIFwicm9sZS9hd3Mtc2VydmljZS1yb2xlL2xhbWJkYS5hcHBsaWNhdGlvbi1hdXRvc2NhbGluZy5hbWF6b25hd3MuY29tXCIsXG4gICAgLy8gICAgIHJlc291cmNlTmFtZTpcbiAgICAvLyAgICAgICBcIkFXU1NlcnZpY2VSb2xlRm9yQXBwbGljYXRpb25BdXRvU2NhbGluZ19MYW1iZGFDb25jdXJyZW5jeVwiLFxuICAgIC8vICAgfSksXG4gICAgLy8gKTtcblxuICAgIC8vIGluY2x1ZGVzIHF1YWxpZmllclxuICAgIHRoaXMuZnVuY3Rpb25Bcm4gPSB0aGlzLnJlc291cmNlLmludm9rZUFybjtcblxuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUoYWxpYXMucmVmLCB7XG4gICAgLy8gICBzZXJ2aWNlOiBcImxhbWJkYVwiLFxuICAgIC8vICAgcmVzb3VyY2U6IFwiZnVuY3Rpb25cIixcbiAgICAvLyAgIHJlc291cmNlTmFtZTogYCR7dGhpcy5sYW1iZGEuZnVuY3Rpb25OYW1lfToke3RoaXMuYWxpYXNOYW1lfWAsXG4gICAgLy8gICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgIC8vIH0pO1xuXG4gICAgdGhpcy5xdWFsaWZpZXIgPSB0aGlzLmFsaWFzTmFtZTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLm9uRmFpbHVyZSB8fFxuICAgICAgcHJvcHMub25TdWNjZXNzIHx8XG4gICAgICBwcm9wcy5tYXhFdmVudEFnZSB8fFxuICAgICAgcHJvcHMucmV0cnlBdHRlbXB0cyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZUFzeW5jSW52b2tlKHtcbiAgICAgICAgb25GYWlsdXJlOiBwcm9wcy5vbkZhaWx1cmUsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgICBtYXhFdmVudEFnZTogcHJvcHMubWF4RXZlbnRBZ2UsXG4gICAgICAgIHJldHJ5QXR0ZW1wdHM6IHByb3BzLnJldHJ5QXR0ZW1wdHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBUk4gcGFyc2luZyBzcGxpdHMgb24gYDpgLCBzbyB3ZSBjYW4gb25seSBnZXQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSBmcm9tIHRoZSBBUk4gYXMgcmVzb3VyY2VOYW1lLi4uXG4gICAgLy8gQW5kIHdlJ3JlIHBhcnNpbmcgaXQgb3V0IChpbnN0ZWFkIG9mIHVzaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGRpcmVjdGx5KSBpbiBvcmRlciB0byBoYXZlIHVzZSBvZiBpdCBpbmN1clxuICAgIC8vIGFuIGltcGxpY2l0IGRlcGVuZGVuY3kgb24gdGhlIHJlc291cmNlLlxuXG4gICAgLy9gJHt0aGlzLnN0YWNrLnNwbGl0QXJuKHRoaXMuZnVuY3Rpb25Bcm4sIEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhfToke3RoaXMuYWxpYXNOYW1lfWA7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uTmFtZTtcbiAgICB0aGlzLl9hbGlhc091dHB1dHMgPSB7XG4gICAgICBpbnZva2VBcm46IHRoaXMucmVzb3VyY2UuaW52b2tlQXJuLFxuICAgICAgbmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JhbnRQcmluY2lwYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFtYmRhLmdyYW50UHJpbmNpcGFsO1xuICB9XG5cbiAgcHVibGljIGdldCByb2xlKCkge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYS5yb2xlO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIENvbmZpZ3VyZSBwcm92aXNpb25lZCBjb25jdXJyZW5jeSBhdXRvc2NhbGluZyBvbiBhIGZ1bmN0aW9uIGFsaWFzLiBSZXR1cm5zIGEgc2NhbGFibGUgYXR0cmlidXRlIHRoYXQgY2FuIGNhbGxcbiAgLy8gICogYHNjYWxlT25VdGlsaXphdGlvbigpYCBhbmQgYHNjYWxlT25TY2hlZHVsZSgpYC5cbiAgLy8gICpcbiAgLy8gICogQHBhcmFtIG9wdGlvbnMgQXV0b3NjYWxpbmcgb3B0aW9uc1xuICAvLyAgKi9cbiAgLy8gcHVibGljIGFkZEF1dG9TY2FsaW5nKFxuICAvLyAgIG9wdGlvbnM6IEF1dG9TY2FsaW5nT3B0aW9ucyxcbiAgLy8gKTogSVNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUge1xuICAvLyAgIGlmICh0aGlzLnNjYWxhYmxlQWxpYXMpIHtcbiAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcIkF1dG9TY2FsaW5nIGFscmVhZHkgZW5hYmxlZCBmb3IgdGhpcyBhbGlhc1wiKTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuICh0aGlzLnNjYWxhYmxlQWxpYXMgPSBuZXcgU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZShcbiAgLy8gICAgIHRoaXMsXG4gIC8vICAgICBcIkFsaWFzU2NhbGluZ1wiLFxuICAvLyAgICAge1xuICAvLyAgICAgICBtaW5DYXBhY2l0eTogb3B0aW9ucy5taW5DYXBhY2l0eSA/PyAxLFxuICAvLyAgICAgICBtYXhDYXBhY2l0eTogb3B0aW9ucy5tYXhDYXBhY2l0eSxcbiAgLy8gICAgICAgcmVzb3VyY2VJZDogYGZ1bmN0aW9uOiR7dGhpcy5mdW5jdGlvbk5hbWV9YCxcbiAgLy8gICAgICAgZGltZW5zaW9uOiBcImxhbWJkYTpmdW5jdGlvbjpQcm92aXNpb25lZENvbmN1cnJlbmN5XCIsXG4gIC8vICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IGFwcHNjYWxpbmcuU2VydmljZU5hbWVzcGFjZS5MQU1CREEsXG4gIC8vICAgICAgIHJvbGU6IHRoaXMuc2NhbGluZ1JvbGUsXG4gIC8vICAgICB9LFxuICAvLyAgICkpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgcm91dGluZ0NvbmZpZyBwYXJhbWV0ZXIgZnJvbSB0aGUgaW5wdXQgcHJvcHNcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lUm91dGluZ0NvbmZpZyhcbiAgICBwcm9wczogQWxpYXNQcm9wcyxcbiAgKTogbGFtYmRhQWxpYXMuTGFtYmRhQWxpYXNSb3V0aW5nQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLmFkZGl0aW9uYWxWZXJzaW9ucyB8fCBwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgY29uc3QgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZm9yIChjb25zdCB2dyBvZiBwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMpIHtcbiAgICAgIGlmICh2dy53ZWlnaHQgPCAwIHx8IHZ3LndlaWdodCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBZGRpdGlvbmFsIHZlcnNpb24gd2VpZ2h0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLCBnb3Q6ICR7dncud2VpZ2h0fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0b3RhbCArPSB2dy53ZWlnaHQ7XG4gICAgICBhZGRpdGlvbmFsVmVyc2lvbldlaWdodHNbdncudmVyc2lvbl0gPSB2dy53ZWlnaHQ7XG4gICAgfVxuICAgIGlmICh0b3RhbCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFN1bSBvZiBhZGRpdGlvbmFsIHZlcnNpb24gd2VpZ2h0cyBtdXN0IG5vdCBleGNlZWQgMSwgZ290OiAke3RvdGFsfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhZGRpdGlvbmFsVmVyc2lvbldlaWdodHMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBWYWxpZGF0ZSB0aGF0IHRoZSBwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIG1ha2VzIHNlbnNlXG4gIC8vICAqXG4gIC8vICAqIE1lbWJlciBtdXN0IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcbiAgLy8gICovXG4gIC8vIHByaXZhdGUgZGV0ZXJtaW5lUHJvdmlzaW9uZWRDb25jdXJyZW5jeShcbiAgLy8gICBwcm9wczogQWxpYXNQcm9wcyxcbiAgLy8gKTpcbiAgLy8gICB8IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzLlByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgLy8gICB8IHVuZGVmaW5lZCB7XG4gIC8vICAgaWYgKCFwcm9wcy5wcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gIC8vICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAvLyAgIH1cblxuICAvLyAgIGlmIChwcm9wcy5wcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIDw9IDApIHtcbiAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcbiAgLy8gICAgICAgXCJwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIG11c3QgaGF2ZSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMVwiLFxuICAvLyAgICAgKTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgcHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9uczogcHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyxcbiAgLy8gICB9O1xuICAvLyB9XG59XG5cbi8qKlxuICogQSB2ZXJzaW9uL3dlaWdodCBwYWlyIGZvciByb3V0aW5nIHRyYWZmaWMgdG8gTGFtYmRhIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25XZWlnaHQge1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gdG8gcm91dGUgdHJhZmZpYyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgbXVjaCB3ZWlnaHQgdG8gYXNzaWduIHRvIHRoaXMgdmVyc2lvbiAoMC4uMSlcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodDogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { IResolvable } from "cdktf";
|
|
2
|
+
import { Node } from "constructs";
|
|
3
|
+
import { AwsConstructBase, IAwsConstruct } from "../aws-construct";
|
|
4
|
+
import { Architecture } from "./architecture";
|
|
5
|
+
import { EventInvokeConfigOptions } from "./event-invoke-config";
|
|
6
|
+
import { EventSourceMapping, EventSourceMappingOptions } from "./event-source-mapping";
|
|
7
|
+
import { Permission } from "./function-permission";
|
|
8
|
+
import { FunctionUrlOptions, FunctionUrl } from "./function-url";
|
|
9
|
+
import * as iam from "../iam";
|
|
10
|
+
/**
|
|
11
|
+
* Represents a Lambda function defined outside of this stack.
|
|
12
|
+
*/
|
|
13
|
+
export interface FunctionAttributes {
|
|
14
|
+
/**
|
|
15
|
+
* The ARN of the Lambda function.
|
|
16
|
+
*
|
|
17
|
+
* Format: arn:<partition>:lambda:<region>:<account-id>:function:<function-name>
|
|
18
|
+
*/
|
|
19
|
+
readonly functionArn: string;
|
|
20
|
+
/**
|
|
21
|
+
* The IAM execution role associated with this function.
|
|
22
|
+
*
|
|
23
|
+
* If the role is not specified, any role-related operations will no-op.
|
|
24
|
+
*/
|
|
25
|
+
readonly role?: iam.IRole;
|
|
26
|
+
/**
|
|
27
|
+
* The security group of this Lambda, if in a VPC.
|
|
28
|
+
*
|
|
29
|
+
* This needs to be given in order to support allowing connections
|
|
30
|
+
* to this Lambda.
|
|
31
|
+
*/
|
|
32
|
+
readonly securityGroup?: string | IResolvable;
|
|
33
|
+
/**
|
|
34
|
+
* Setting this property informs the CDK that the imported function is in the same environment as the stack.
|
|
35
|
+
* This affects certain behaviours such as, whether this function's permission can be modified.
|
|
36
|
+
* When not configured, the CDK attempts to auto-determine this. For environment agnostic stacks, i.e., stacks
|
|
37
|
+
* where the account is not specified with the `env` property, this is determined to be false.
|
|
38
|
+
*
|
|
39
|
+
* Set this to property *ONLY IF* the imported function is in the same account as the stack
|
|
40
|
+
* it's imported in.
|
|
41
|
+
* @default - depends: true, if the Stack is configured with an explicit `env` (account and region) and the account is the same as this function.
|
|
42
|
+
* For environment-agnostic stacks this will default to `false`.
|
|
43
|
+
*/
|
|
44
|
+
readonly sameEnvironment?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Setting this property informs the TerraConstruct that the imported function ALREADY HAS the necessary permissions
|
|
47
|
+
* for what you are trying to do. When not configured, E.T, attempts to auto-determine whether or not
|
|
48
|
+
* additional permissions are necessary on the function when grant APIs are used. If TerraConstruct tried to add
|
|
49
|
+
* permissions on an imported lambda, it will fail.
|
|
50
|
+
*
|
|
51
|
+
* Set this property *ONLY IF* you are committing to manage the imported function's permissions outside of
|
|
52
|
+
* this TerraConstruct stack. You are acknowledging that your TerraConstruct code alone will have insufficient permissions to access the
|
|
53
|
+
* imported function.
|
|
54
|
+
*
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
readonly skipPermissions?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64).
|
|
60
|
+
* @default - Architecture.X86_64
|
|
61
|
+
*/
|
|
62
|
+
readonly architecture?: Architecture;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A Lambda function.
|
|
66
|
+
*/
|
|
67
|
+
export interface IFunction extends IAwsConstruct, iam.IGrantable {
|
|
68
|
+
/**
|
|
69
|
+
* The name of the function.
|
|
70
|
+
*
|
|
71
|
+
* @attribute
|
|
72
|
+
*/
|
|
73
|
+
readonly functionName: string;
|
|
74
|
+
/**
|
|
75
|
+
* The ARN of the function.
|
|
76
|
+
*
|
|
77
|
+
* @attribute
|
|
78
|
+
*/
|
|
79
|
+
readonly functionArn: string;
|
|
80
|
+
/**
|
|
81
|
+
* The IAM role associated with this function.
|
|
82
|
+
*/
|
|
83
|
+
readonly role?: iam.IRole;
|
|
84
|
+
/**
|
|
85
|
+
* The construct node where permissions are attached.
|
|
86
|
+
*/
|
|
87
|
+
readonly permissionsNode: Node;
|
|
88
|
+
/**
|
|
89
|
+
* The system architectures compatible with this lambda function.
|
|
90
|
+
*/
|
|
91
|
+
readonly architecture: Architecture;
|
|
92
|
+
/**
|
|
93
|
+
* Adds an event source that maps to this AWS Lambda function.
|
|
94
|
+
* @param id construct ID
|
|
95
|
+
* @param options mapping options
|
|
96
|
+
*/
|
|
97
|
+
addEventSourceMapping(id: string, options: EventSourceMappingOptions): EventSourceMapping;
|
|
98
|
+
/**
|
|
99
|
+
* Adds an event source to this function.
|
|
100
|
+
*
|
|
101
|
+
* The following example adds an SQS Queue as an event source:
|
|
102
|
+
* ```
|
|
103
|
+
* import { compute } from 'terraconstructs';
|
|
104
|
+
* myFunction.addEventSource(new compute.SqsEventSource(myQueue));
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
addEventSource(source: IEventSource): void;
|
|
108
|
+
/**
|
|
109
|
+
* Adds a permission to the Lambda resource policy.
|
|
110
|
+
* @param id The id for the permission construct
|
|
111
|
+
* @param permission The permission to grant to this Lambda function. @see Permission for details.
|
|
112
|
+
*/
|
|
113
|
+
addPermission(id: string, permission: Permission): void;
|
|
114
|
+
/**
|
|
115
|
+
* Adds a statement to the IAM role assumed by the instance.
|
|
116
|
+
*/
|
|
117
|
+
addToRolePolicy(statement: iam.PolicyStatement): void;
|
|
118
|
+
/**
|
|
119
|
+
* Grant the given identity permissions to invoke this Lambda
|
|
120
|
+
*/
|
|
121
|
+
grantInvoke(identity: iam.IGrantable): iam.Grant;
|
|
122
|
+
/**
|
|
123
|
+
* Grant the given identity permissions to invoke the $LATEST version or
|
|
124
|
+
* unqualified version of this Lambda
|
|
125
|
+
*/
|
|
126
|
+
grantInvokeLatestVersion(identity: iam.IGrantable): iam.Grant;
|
|
127
|
+
/**
|
|
128
|
+
* Grant the given identity permissions to invoke the given (or latest) version of this Lambda
|
|
129
|
+
*/
|
|
130
|
+
grantInvokeVersion(identity: iam.IGrantable, version: string): iam.Grant;
|
|
131
|
+
/**
|
|
132
|
+
* Grant the given identity permissions to invoke this Lambda Function URL
|
|
133
|
+
*/
|
|
134
|
+
grantInvokeUrl(identity: iam.IGrantable): iam.Grant;
|
|
135
|
+
/**
|
|
136
|
+
* Grant multiple principals the ability to invoke this Lambda via CompositePrincipal
|
|
137
|
+
*/
|
|
138
|
+
grantInvokeCompositePrincipal(compositePrincipal: iam.CompositePrincipal): iam.Grant[];
|
|
139
|
+
/**
|
|
140
|
+
* Configures options for asynchronous invocation.
|
|
141
|
+
*/
|
|
142
|
+
configureAsyncInvoke(options: EventInvokeConfigOptions): void;
|
|
143
|
+
/**
|
|
144
|
+
* Adds a url to this lambda function.
|
|
145
|
+
*/
|
|
146
|
+
addFunctionUrl(options?: FunctionUrlOptions): FunctionUrl;
|
|
147
|
+
}
|
|
148
|
+
export declare abstract class LambdaFunctionBase extends AwsConstructBase implements IFunction {
|
|
149
|
+
/**
|
|
150
|
+
* The name of the function.
|
|
151
|
+
*/
|
|
152
|
+
abstract readonly functionName: string;
|
|
153
|
+
/**
|
|
154
|
+
* The principal this Lambda Function is running as
|
|
155
|
+
*/
|
|
156
|
+
abstract readonly grantPrincipal: iam.IPrincipal;
|
|
157
|
+
/**
|
|
158
|
+
* The ARN fo the function.
|
|
159
|
+
*
|
|
160
|
+
* Should include version (if versioning is enabled via publish = true)
|
|
161
|
+
*/
|
|
162
|
+
abstract readonly functionArn: string;
|
|
163
|
+
/**
|
|
164
|
+
* Latest published version of your Lambda Function.
|
|
165
|
+
*
|
|
166
|
+
* Used as qualifier of the version or alias of this function.
|
|
167
|
+
* A qualifier is the identifier that's appended to a version or alias ARN.
|
|
168
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#API_GetFunctionConfiguration_RequestParameters
|
|
169
|
+
*/
|
|
170
|
+
abstract readonly version: string;
|
|
171
|
+
/**
|
|
172
|
+
* The qualifier of the version or alias of this function.
|
|
173
|
+
* A qualifier is the identifier that's appended to a version or alias ARN.
|
|
174
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#API_GetFunctionConfiguration_RequestParameters
|
|
175
|
+
*/
|
|
176
|
+
/**
|
|
177
|
+
* The IAM role associated with this function.
|
|
178
|
+
*
|
|
179
|
+
* Undefined if the function was imported without a role.
|
|
180
|
+
*/
|
|
181
|
+
abstract readonly role?: iam.IRole;
|
|
182
|
+
/**
|
|
183
|
+
* The construct node where permissions are attached.
|
|
184
|
+
*/
|
|
185
|
+
abstract readonly permissionsNode: Node;
|
|
186
|
+
/**
|
|
187
|
+
* The architecture of this Lambda Function.
|
|
188
|
+
*/
|
|
189
|
+
abstract readonly architecture: Architecture;
|
|
190
|
+
/**
|
|
191
|
+
* Whether the addPermission() call adds any permissions
|
|
192
|
+
*
|
|
193
|
+
* True for new Lambdas, false for version $LATEST and imported Lambdas
|
|
194
|
+
* from different accounts.
|
|
195
|
+
*/
|
|
196
|
+
protected abstract readonly canCreatePermissions: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* The ARN(s) to put into the resource field of the generated IAM policy for grantInvoke()
|
|
199
|
+
*/
|
|
200
|
+
abstract readonly resourceArnsForGrantInvoke: string[];
|
|
201
|
+
/**
|
|
202
|
+
* Whether the user decides to skip adding permissions.
|
|
203
|
+
* The only use case is for cross-account, imported lambdas
|
|
204
|
+
* where the user commits to modifying the permisssions
|
|
205
|
+
* on the imported lambda outside this TerraConstruct Spec.
|
|
206
|
+
* @internal
|
|
207
|
+
*/
|
|
208
|
+
protected readonly _skipPermissions?: boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Mapping of invocation principals to grants. Used to de-dupe `grantInvoke()` calls.
|
|
211
|
+
* @internal
|
|
212
|
+
*/
|
|
213
|
+
protected _invocationGrants: Record<string, iam.Grant>;
|
|
214
|
+
/**
|
|
215
|
+
* Mapping of fucntion URL invocation principals to grants. Used to de-dupe `grantInvokeUrl()` calls.
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
protected _functionUrlInvocationGrants: Record<string, iam.Grant>;
|
|
219
|
+
/**
|
|
220
|
+
* Adds a permission to the Lambda resource policy.
|
|
221
|
+
* @param id The id for the permission construct
|
|
222
|
+
* @param permission The permission to grant to this Lambda function. @see Permission for details.
|
|
223
|
+
*/
|
|
224
|
+
addPermission(id: string, permission: Permission): void;
|
|
225
|
+
/**
|
|
226
|
+
* Adds a statement to the IAM role assumed by the instance.
|
|
227
|
+
*/
|
|
228
|
+
addToRolePolicy(statement: iam.PolicyStatement): void;
|
|
229
|
+
addEventSourceMapping(id: string, options: EventSourceMappingOptions): EventSourceMapping;
|
|
230
|
+
/**
|
|
231
|
+
* Grant the given identity permissions to invoke this Lambda
|
|
232
|
+
*/
|
|
233
|
+
grantInvoke(grantee: iam.IGrantable): iam.Grant;
|
|
234
|
+
/**
|
|
235
|
+
* Grant the given identity permissions to invoke the $LATEST version or
|
|
236
|
+
* unqualified version of this Lambda
|
|
237
|
+
*/
|
|
238
|
+
grantInvokeLatestVersion(grantee: iam.IGrantable): iam.Grant;
|
|
239
|
+
/**
|
|
240
|
+
* Grant the given identity permissions to invoke the given version of this Lambda
|
|
241
|
+
*/
|
|
242
|
+
grantInvokeVersion(grantee: iam.IGrantable, version: string): iam.Grant;
|
|
243
|
+
/**
|
|
244
|
+
* Grant the given identity permissions to invoke this Lambda Function URL
|
|
245
|
+
*/
|
|
246
|
+
grantInvokeUrl(grantee: iam.IGrantable): iam.Grant;
|
|
247
|
+
/**
|
|
248
|
+
* Grant multiple principals the ability to invoke this Lambda via CompositePrincipal
|
|
249
|
+
*/
|
|
250
|
+
grantInvokeCompositePrincipal(compositePrincipal: iam.CompositePrincipal): iam.Grant[];
|
|
251
|
+
addEventSource(source: IEventSource): void;
|
|
252
|
+
configureAsyncInvoke(options: EventInvokeConfigOptions): void;
|
|
253
|
+
/**
|
|
254
|
+
* A function URL is a dedicated HTTP(S) endpoint for a Lambda function.
|
|
255
|
+
*/
|
|
256
|
+
addFunctionUrl(options?: FunctionUrlOptions): FunctionUrl;
|
|
257
|
+
/**
|
|
258
|
+
* Returns the construct tree node that corresponds to the lambda function.
|
|
259
|
+
* For use internally for constructs, when the tree is set up in non-standard ways. Ex: SingletonFunction.
|
|
260
|
+
* @internal
|
|
261
|
+
*/
|
|
262
|
+
protected _functionNode(): Node;
|
|
263
|
+
/**
|
|
264
|
+
* Given the function arn, check if the account id matches this account
|
|
265
|
+
*
|
|
266
|
+
* Function ARNs look like this:
|
|
267
|
+
*
|
|
268
|
+
* arn:aws:lambda:region:account-id:function:function-name
|
|
269
|
+
*
|
|
270
|
+
* ..which means that in order to extract the `account-id` component from the ARN, we can
|
|
271
|
+
* split the ARN using ":" and select the component in index 4.
|
|
272
|
+
*
|
|
273
|
+
* @returns true if account id of function matches the account specified on the stack, false otherwise.
|
|
274
|
+
*
|
|
275
|
+
* @internal
|
|
276
|
+
*/
|
|
277
|
+
protected _isStackAccount(): boolean;
|
|
278
|
+
private grant;
|
|
279
|
+
/**
|
|
280
|
+
* Translate IPrincipal to something we can pass to aws_lambda_permission
|
|
281
|
+
* https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-Principal
|
|
282
|
+
* https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/lambda_permission#principal
|
|
283
|
+
*
|
|
284
|
+
* Do some nasty things because `Permission` supports a subset of what the
|
|
285
|
+
* full IAM principal language supports, and we may not be able to parse strings
|
|
286
|
+
* outright because they may be tokens.
|
|
287
|
+
*
|
|
288
|
+
* Try to recognize some specific Principal classes first, then try a generic
|
|
289
|
+
* fallback.
|
|
290
|
+
*/
|
|
291
|
+
private parsePermissionPrincipal;
|
|
292
|
+
private validateConditionCombinations;
|
|
293
|
+
private validateConditions;
|
|
294
|
+
private isPrincipalWithConditions;
|
|
295
|
+
}
|
|
296
|
+
export declare abstract class QualifiedFunctionBase extends LambdaFunctionBase {
|
|
297
|
+
/** The underlying `IFunction` */
|
|
298
|
+
abstract readonly lambda: IFunction;
|
|
299
|
+
readonly permissionsNode: Node;
|
|
300
|
+
get resourceArnsForGrantInvoke(): string[];
|
|
301
|
+
configureAsyncInvoke(options: EventInvokeConfigOptions): void;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* An abstract class which represents an AWS Lambda event source.
|
|
305
|
+
*/
|
|
306
|
+
export interface IEventSource {
|
|
307
|
+
/**
|
|
308
|
+
* Called by `lambda.addEventSource` to allow the event source to bind to this
|
|
309
|
+
* function.
|
|
310
|
+
*
|
|
311
|
+
* @param target That lambda function to bind to.
|
|
312
|
+
*/
|
|
313
|
+
bind(target: IFunction): void;
|
|
314
|
+
}
|