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,21 @@
|
|
|
1
|
+
import { AwsConstructBase } from "../../aws-construct";
|
|
2
|
+
import { IPolicyDocument, PolicyDocumentOutputs } from "../policy-document";
|
|
3
|
+
import { PolicyStatement } from "../policy-statement";
|
|
4
|
+
/**
|
|
5
|
+
* A PolicyDocument adapter that can modify statements flowing through it
|
|
6
|
+
*/
|
|
7
|
+
export declare class MutatingPolicyDocumentAdapter extends AwsConstructBase implements IPolicyDocument {
|
|
8
|
+
private readonly wrapped;
|
|
9
|
+
private readonly mutator;
|
|
10
|
+
constructor(wrapped: IPolicyDocument, mutator: (s: PolicyStatement) => PolicyStatement);
|
|
11
|
+
get policyDocumentOutputs(): PolicyDocumentOutputs;
|
|
12
|
+
get isEmpty(): boolean;
|
|
13
|
+
get outputs(): Record<string, any>;
|
|
14
|
+
get statementCount(): number;
|
|
15
|
+
get json(): string;
|
|
16
|
+
addStatements(...statements: PolicyStatement[]): void;
|
|
17
|
+
validateForAnyPolicy(): string[];
|
|
18
|
+
validateForIdentityPolicy(): string[];
|
|
19
|
+
validateForResourcePolicy(): string[];
|
|
20
|
+
toDocumentJson(): any;
|
|
21
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MutatingPolicyDocumentAdapter = void 0;
|
|
4
|
+
const aws_construct_1 = require("../../aws-construct");
|
|
5
|
+
/**
|
|
6
|
+
* A PolicyDocument adapter that can modify statements flowing through it
|
|
7
|
+
*/
|
|
8
|
+
class MutatingPolicyDocumentAdapter extends aws_construct_1.AwsConstructBase {
|
|
9
|
+
constructor(wrapped, mutator) {
|
|
10
|
+
if (wrapped.node.scope === undefined) {
|
|
11
|
+
throw new Error("The wrapped PolicyDocument must have a scope");
|
|
12
|
+
}
|
|
13
|
+
super(wrapped.node.scope, `Mutating${wrapped.node.id}`, {});
|
|
14
|
+
this.wrapped = wrapped;
|
|
15
|
+
this.mutator = mutator;
|
|
16
|
+
}
|
|
17
|
+
get policyDocumentOutputs() {
|
|
18
|
+
return this.wrapped.policyDocumentOutputs;
|
|
19
|
+
}
|
|
20
|
+
get isEmpty() {
|
|
21
|
+
return this.wrapped.isEmpty;
|
|
22
|
+
}
|
|
23
|
+
get outputs() {
|
|
24
|
+
return this.wrapped.outputs;
|
|
25
|
+
}
|
|
26
|
+
get statementCount() {
|
|
27
|
+
return this.wrapped.statementCount;
|
|
28
|
+
}
|
|
29
|
+
get json() {
|
|
30
|
+
return this.wrapped.json;
|
|
31
|
+
}
|
|
32
|
+
addStatements(...statements) {
|
|
33
|
+
for (const st of statements) {
|
|
34
|
+
this.wrapped.addStatements(this.mutator(st));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
validateForAnyPolicy() {
|
|
38
|
+
return this.wrapped.validateForAnyPolicy();
|
|
39
|
+
}
|
|
40
|
+
validateForIdentityPolicy() {
|
|
41
|
+
return this.wrapped.validateForIdentityPolicy();
|
|
42
|
+
}
|
|
43
|
+
validateForResourcePolicy() {
|
|
44
|
+
return this.wrapped.validateForResourcePolicy();
|
|
45
|
+
}
|
|
46
|
+
toDocumentJson() {
|
|
47
|
+
return this.wrapped.toDocumentJson();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.MutatingPolicyDocumentAdapter = MutatingPolicyDocumentAdapter;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvaWFtL3ByaXZhdGUvYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBdUQ7QUFJdkQ7O0dBRUc7QUFDSCxNQUFhLDZCQUNYLFNBQVEsZ0NBQWdCO0lBR3hCLFlBQ21CLE9BQXdCLEVBQ3hCLE9BQWdEO1FBRWpFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTjNDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQXlDO0lBTW5FLENBQUM7SUFDRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7SUFDckMsQ0FBQztJQUNELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUNNLGFBQWEsQ0FBQyxHQUFHLFVBQTZCO1FBQ25ELEtBQUssTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBQ00sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFDTSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUNNLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBQ00sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBN0NELHNFQTZDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UgfSBmcm9tIFwiLi4vLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSVBvbGljeURvY3VtZW50LCBQb2xpY3lEb2N1bWVudE91dHB1dHMgfSBmcm9tIFwiLi4vcG9saWN5LWRvY3VtZW50XCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcG9saWN5LXN0YXRlbWVudFwiO1xuXG4vKipcbiAqIEEgUG9saWN5RG9jdW1lbnQgYWRhcHRlciB0aGF0IGNhbiBtb2RpZnkgc3RhdGVtZW50cyBmbG93aW5nIHRocm91Z2ggaXRcbiAqL1xuZXhwb3J0IGNsYXNzIE11dGF0aW5nUG9saWN5RG9jdW1lbnRBZGFwdGVyXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElQb2xpY3lEb2N1bWVudFxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdyYXBwZWQ6IElQb2xpY3lEb2N1bWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG11dGF0b3I6IChzOiBQb2xpY3lTdGF0ZW1lbnQpID0+IFBvbGljeVN0YXRlbWVudCxcbiAgKSB7XG4gICAgaWYgKHdyYXBwZWQubm9kZS5zY29wZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgd3JhcHBlZCBQb2xpY3lEb2N1bWVudCBtdXN0IGhhdmUgYSBzY29wZVwiKTtcbiAgICB9XG4gICAgc3VwZXIod3JhcHBlZC5ub2RlLnNjb3BlLCBgTXV0YXRpbmcke3dyYXBwZWQubm9kZS5pZH1gLCB7fSk7XG4gIH1cbiAgcHVibGljIGdldCBwb2xpY3lEb2N1bWVudE91dHB1dHMoKTogUG9saWN5RG9jdW1lbnRPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVkLnBvbGljeURvY3VtZW50T3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud3JhcHBlZC5pc0VtcHR5O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVkLm91dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBzdGF0ZW1lbnRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndyYXBwZWQuc3RhdGVtZW50Q291bnQ7XG4gIH1cbiAgcHVibGljIGdldCBqc29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud3JhcHBlZC5qc29uO1xuICB9XG4gIHB1YmxpYyBhZGRTdGF0ZW1lbnRzKC4uLnN0YXRlbWVudHM6IFBvbGljeVN0YXRlbWVudFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLndyYXBwZWQuYWRkU3RhdGVtZW50cyh0aGlzLm11dGF0b3Ioc3QpKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHZhbGlkYXRlRm9yQW55UG9saWN5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVkLnZhbGlkYXRlRm9yQW55UG9saWN5KCk7XG4gIH1cbiAgcHVibGljIHZhbGlkYXRlRm9ySWRlbnRpdHlQb2xpY3koKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLndyYXBwZWQudmFsaWRhdGVGb3JJZGVudGl0eVBvbGljeSgpO1xuICB9XG4gIHB1YmxpYyB2YWxpZGF0ZUZvclJlc291cmNlUG9saWN5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVkLnZhbGlkYXRlRm9yUmVzb3VyY2VQb2xpY3koKTtcbiAgfVxuICBwdWJsaWMgdG9Eb2N1bWVudEpzb24oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVkLnRvRG9jdW1lbnRKc29uKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IPolicyDocument } from "../policy-document";
|
|
2
|
+
import { IPrincipal } from "../principals";
|
|
3
|
+
/**
|
|
4
|
+
* Add a principal to an AssumeRolePolicyDocument in the right way
|
|
5
|
+
*
|
|
6
|
+
* Delegate to the principal if it can do the job itself, do a default job if it can't.
|
|
7
|
+
*/
|
|
8
|
+
export declare function defaultAddPrincipalToAssumeRole(principal: IPrincipal, doc: IPolicyDocument): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultAddPrincipalToAssumeRole = void 0;
|
|
4
|
+
const policy_statement_1 = require("../policy-statement");
|
|
5
|
+
/**
|
|
6
|
+
* Add a principal to an AssumeRolePolicyDocument in the right way
|
|
7
|
+
*
|
|
8
|
+
* Delegate to the principal if it can do the job itself, do a default job if it can't.
|
|
9
|
+
*/
|
|
10
|
+
function defaultAddPrincipalToAssumeRole(principal, doc) {
|
|
11
|
+
if (isAssumeRolePrincipal(principal)) {
|
|
12
|
+
// Principal knows how to add itself
|
|
13
|
+
principal.addToAssumeRolePolicy(doc);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
// Principal can't add itself, we do it for them
|
|
17
|
+
doc.addStatements(new policy_statement_1.PolicyStatement({
|
|
18
|
+
actions: [principal.assumeRoleAction],
|
|
19
|
+
principals: [principal],
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.defaultAddPrincipalToAssumeRole = defaultAddPrincipalToAssumeRole;
|
|
24
|
+
function isAssumeRolePrincipal(principal) {
|
|
25
|
+
return !!principal.addToAssumeRolePolicy;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzdW1lLXJvbGUtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pYW0vcHJpdmF0ZS9hc3N1bWUtcm9sZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMERBQXNEO0FBR3REOzs7O0dBSUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FDN0MsU0FBcUIsRUFDckIsR0FBb0I7SUFFcEIsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLG9DQUFvQztRQUNwQyxTQUFTLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztTQUFNLENBQUM7UUFDTixnREFBZ0Q7UUFDaEQsR0FBRyxDQUFDLGFBQWEsQ0FDZixJQUFJLGtDQUFlLENBQUM7WUFDbEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1lBQ3JDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBaEJELDBFQWdCQztBQUVELFNBQVMscUJBQXFCLENBQzVCLFNBQXFCO0lBRXJCLE9BQU8sQ0FBQyxDQUFFLFNBQWtDLENBQUMscUJBQXFCLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuLi9wb2xpY3ktZG9jdW1lbnRcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5pbXBvcnQgeyBJUHJpbmNpcGFsLCBJQXNzdW1lUm9sZVByaW5jaXBhbCB9IGZyb20gXCIuLi9wcmluY2lwYWxzXCI7XG5cbi8qKlxuICogQWRkIGEgcHJpbmNpcGFsIHRvIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBpbiB0aGUgcmlnaHQgd2F5XG4gKlxuICogRGVsZWdhdGUgdG8gdGhlIHByaW5jaXBhbCBpZiBpdCBjYW4gZG8gdGhlIGpvYiBpdHNlbGYsIGRvIGEgZGVmYXVsdCBqb2IgaWYgaXQgY2FuJ3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QWRkUHJpbmNpcGFsVG9Bc3N1bWVSb2xlKFxuICBwcmluY2lwYWw6IElQcmluY2lwYWwsXG4gIGRvYzogSVBvbGljeURvY3VtZW50LFxuKSB7XG4gIGlmIChpc0Fzc3VtZVJvbGVQcmluY2lwYWwocHJpbmNpcGFsKSkge1xuICAgIC8vIFByaW5jaXBhbCBrbm93cyBob3cgdG8gYWRkIGl0c2VsZlxuICAgIHByaW5jaXBhbC5hZGRUb0Fzc3VtZVJvbGVQb2xpY3koZG9jKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBQcmluY2lwYWwgY2FuJ3QgYWRkIGl0c2VsZiwgd2UgZG8gaXQgZm9yIHRoZW1cbiAgICBkb2MuYWRkU3RhdGVtZW50cyhcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbcHJpbmNpcGFsLmFzc3VtZVJvbGVBY3Rpb25dLFxuICAgICAgICBwcmluY2lwYWxzOiBbcHJpbmNpcGFsXSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBc3N1bWVSb2xlUHJpbmNpcGFsKFxuICBwcmluY2lwYWw6IElQcmluY2lwYWwsXG4pOiBwcmluY2lwYWwgaXMgSUFzc3VtZVJvbGVQcmluY2lwYWwge1xuICByZXR1cm4gISEocHJpbmNpcGFsIGFzIElBc3N1bWVSb2xlUHJpbmNpcGFsKS5hZGRUb0Fzc3VtZVJvbGVQb2xpY3k7XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.partitionPrincipals = void 0;
|
|
4
|
+
const principals_1 = require("../principals");
|
|
5
|
+
function partitionPrincipals(xs) {
|
|
6
|
+
const nonComparable = [];
|
|
7
|
+
const comparable = {};
|
|
8
|
+
for (const x of xs) {
|
|
9
|
+
const dedupe = principals_1.ComparablePrincipal.dedupeStringFor(x);
|
|
10
|
+
if (dedupe) {
|
|
11
|
+
comparable[dedupe] = x;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
nonComparable.push(x);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { comparable, nonComparable };
|
|
18
|
+
}
|
|
19
|
+
exports.partitionPrincipals = partitionPrincipals;
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYWJsZS1wcmluY2lwYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2lhbS9wcml2YXRlL2NvbXBhcmFibGUtcHJpbmNpcGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUFnRTtBQUVoRSxTQUFnQixtQkFBbUIsQ0FBQyxFQUFnQjtJQUNsRCxNQUFNLGFBQWEsR0FBaUIsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sVUFBVSxHQUErQixFQUFFLENBQUM7SUFFbEQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxnQ0FBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBZEQsa0RBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUHJpbmNpcGFsLCBDb21wYXJhYmxlUHJpbmNpcGFsIH0gZnJvbSBcIi4uL3ByaW5jaXBhbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpdGlvblByaW5jaXBhbHMoeHM6IElQcmluY2lwYWxbXSk6IFBhcnRpdGlvblJlc3VsdCB7XG4gIGNvbnN0IG5vbkNvbXBhcmFibGU6IElQcmluY2lwYWxbXSA9IFtdO1xuICBjb25zdCBjb21wYXJhYmxlOiBSZWNvcmQ8c3RyaW5nLCBJUHJpbmNpcGFsPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIGNvbnN0IGRlZHVwZSA9IENvbXBhcmFibGVQcmluY2lwYWwuZGVkdXBlU3RyaW5nRm9yKHgpO1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGNvbXBhcmFibGVbZGVkdXBlXSA9IHg7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkNvbXBhcmFibGUucHVzaCh4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBjb21wYXJhYmxlLCBub25Db21wYXJhYmxlIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uUmVzdWx0IHtcbiAgcmVhZG9ubHkgbm9uQ29tcGFyYWJsZTogSVByaW5jaXBhbFtdO1xuICByZWFkb25seSBjb21wYXJhYmxlOiBSZWNvcmQ8c3RyaW5nLCBJUHJpbmNpcGFsPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { AwsConstructBase, AwsStack } from "../..";
|
|
3
|
+
import { Grant } from "../grant";
|
|
4
|
+
import { IManagedPolicy } from "../managed-policy";
|
|
5
|
+
import { Policy } from "../policy";
|
|
6
|
+
import { PolicyStatement } from "../policy-statement";
|
|
7
|
+
import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from "../principals";
|
|
8
|
+
import { IRole, RoleOutputs } from "../role";
|
|
9
|
+
/**
|
|
10
|
+
* An immutable wrapper around an IRole
|
|
11
|
+
*
|
|
12
|
+
* This wrapper ignores all mutating operations, like attaching policies or
|
|
13
|
+
* adding policy statements.
|
|
14
|
+
*
|
|
15
|
+
* Useful in cases where you want to turn off CDK's automatic permissions
|
|
16
|
+
* management, and instead have full control over all permissions.
|
|
17
|
+
*
|
|
18
|
+
* Note: if you want to ignore all mutations for an externally defined role
|
|
19
|
+
* which was imported into the CDK with `Role.fromRoleArn`, you don't have to use this class -
|
|
20
|
+
* simply pass the property mutable = false when calling `Role.fromRoleArn`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ImmutableRole extends AwsConstructBase implements IRole {
|
|
23
|
+
private readonly addGrantsToResources;
|
|
24
|
+
readonly assumeRoleAction: string;
|
|
25
|
+
readonly policyFragment: PrincipalPolicyFragment;
|
|
26
|
+
readonly grantPrincipal: this;
|
|
27
|
+
readonly principalAccount: string | undefined;
|
|
28
|
+
readonly roleArn: string;
|
|
29
|
+
readonly roleName: string;
|
|
30
|
+
readonly stack: AwsStack;
|
|
31
|
+
private readonly _roleOutputs;
|
|
32
|
+
get roleOutputs(): RoleOutputs;
|
|
33
|
+
get outputs(): RoleOutputs;
|
|
34
|
+
private readonly role;
|
|
35
|
+
constructor(scope: Construct, id: string, role: IRole, addGrantsToResources: boolean);
|
|
36
|
+
attachInlinePolicy(_policy: Policy): void;
|
|
37
|
+
addManagedPolicy(_policy: IManagedPolicy): void;
|
|
38
|
+
addToPolicy(statement: PolicyStatement): boolean;
|
|
39
|
+
addToPrincipalPolicy(_statement: PolicyStatement): AddToPrincipalPolicyResult;
|
|
40
|
+
grant(grantee: IPrincipal, ...actions: string[]): Grant;
|
|
41
|
+
grantPassRole(grantee: IPrincipal): Grant;
|
|
42
|
+
grantAssumeRole(identity: IPrincipal): Grant;
|
|
43
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImmutableRole = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
/**
|
|
7
|
+
* An immutable wrapper around an IRole
|
|
8
|
+
*
|
|
9
|
+
* This wrapper ignores all mutating operations, like attaching policies or
|
|
10
|
+
* adding policy statements.
|
|
11
|
+
*
|
|
12
|
+
* Useful in cases where you want to turn off CDK's automatic permissions
|
|
13
|
+
* management, and instead have full control over all permissions.
|
|
14
|
+
*
|
|
15
|
+
* Note: if you want to ignore all mutations for an externally defined role
|
|
16
|
+
* which was imported into the CDK with `Role.fromRoleArn`, you don't have to use this class -
|
|
17
|
+
* simply pass the property mutable = false when calling `Role.fromRoleArn`.
|
|
18
|
+
*/
|
|
19
|
+
class ImmutableRole extends __1.AwsConstructBase {
|
|
20
|
+
get roleOutputs() {
|
|
21
|
+
return this._roleOutputs;
|
|
22
|
+
}
|
|
23
|
+
get outputs() {
|
|
24
|
+
return this.roleOutputs;
|
|
25
|
+
}
|
|
26
|
+
constructor(scope, id, role, addGrantsToResources) {
|
|
27
|
+
super(scope, id, {
|
|
28
|
+
account: role.env.account,
|
|
29
|
+
region: role.env.region,
|
|
30
|
+
});
|
|
31
|
+
this.addGrantsToResources = addGrantsToResources;
|
|
32
|
+
this.grantPrincipal = this;
|
|
33
|
+
this.role = role;
|
|
34
|
+
this.assumeRoleAction = role.assumeRoleAction;
|
|
35
|
+
this.policyFragment = this.role.policyFragment;
|
|
36
|
+
this.principalAccount = this.role.principalAccount;
|
|
37
|
+
this.roleArn = this.role.roleArn;
|
|
38
|
+
this.roleName = this.role.roleName;
|
|
39
|
+
this.stack = this.role.stack;
|
|
40
|
+
// implement IDependable privately
|
|
41
|
+
constructs_1.Dependable.implement(this, {
|
|
42
|
+
dependencyRoots: [role],
|
|
43
|
+
});
|
|
44
|
+
this.node.defaultChild = role.node.defaultChild;
|
|
45
|
+
this._roleOutputs = this.role.roleOutputs;
|
|
46
|
+
}
|
|
47
|
+
attachInlinePolicy(_policy) {
|
|
48
|
+
// do nothing
|
|
49
|
+
}
|
|
50
|
+
addManagedPolicy(_policy) {
|
|
51
|
+
// do nothing
|
|
52
|
+
}
|
|
53
|
+
addToPolicy(statement) {
|
|
54
|
+
return this.addToPrincipalPolicy(statement).statementAdded;
|
|
55
|
+
}
|
|
56
|
+
addToPrincipalPolicy(_statement) {
|
|
57
|
+
// If we return `false`, the grants will try to add the statement to the resource
|
|
58
|
+
// (if possible).
|
|
59
|
+
const pretendSuccess = !this.addGrantsToResources;
|
|
60
|
+
return {
|
|
61
|
+
statementAdded: pretendSuccess,
|
|
62
|
+
policyDependable: this.role,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
grant(grantee, ...actions) {
|
|
66
|
+
return this.role.grant(grantee, ...actions);
|
|
67
|
+
}
|
|
68
|
+
grantPassRole(grantee) {
|
|
69
|
+
return this.role.grantPassRole(grantee);
|
|
70
|
+
}
|
|
71
|
+
grantAssumeRole(identity) {
|
|
72
|
+
return this.role.grantAssumeRole(identity);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ImmutableRole = ImmutableRole;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1tdXRhYmxlLXJvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2lhbS9wcml2YXRlL2ltbXV0YWJsZS1yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFtRDtBQUNuRCw2QkFBbUQ7QUFZbkQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsb0JBQWdCO0lBVWpELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUlELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLElBQVcsRUFDTSxvQkFBNkI7UUFFOUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU07U0FDeEIsQ0FBQyxDQUFDO1FBTGMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFTO1FBcEJoQyxtQkFBYyxHQUFHLElBQUksQ0FBQztRQTBCcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLGtDQUFrQztRQUNsQyx1QkFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDekIsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ3hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQWU7UUFDdkMsYUFBYTtJQUNmLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUF1QjtRQUM3QyxhQUFhO0lBQ2YsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUEwQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDN0QsQ0FBQztJQUVNLG9CQUFvQixDQUN6QixVQUEyQjtRQUUzQixpRkFBaUY7UUFDakYsaUJBQWlCO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ2xELE9BQU87WUFDTCxjQUFjLEVBQUUsY0FBYztZQUM5QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFtQixFQUFFLEdBQUcsT0FBaUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQW1CO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFvQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQS9FRCxzQ0ErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QsIERlcGVuZGFibGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzU3RhY2sgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IEdyYW50IH0gZnJvbSBcIi4uL2dyYW50XCI7XG5pbXBvcnQgeyBJTWFuYWdlZFBvbGljeSB9IGZyb20gXCIuLi9tYW5hZ2VkLXBvbGljeVwiO1xuaW1wb3J0IHsgUG9saWN5IH0gZnJvbSBcIi4uL3BvbGljeVwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcIi4uL3BvbGljeS1zdGF0ZW1lbnRcIjtcbmltcG9ydCB7XG4gIEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0LFxuICBJUHJpbmNpcGFsLFxuICBQcmluY2lwYWxQb2xpY3lGcmFnbWVudCxcbn0gZnJvbSBcIi4uL3ByaW5jaXBhbHNcIjtcbmltcG9ydCB7IElSb2xlLCBSb2xlT3V0cHV0cyB9IGZyb20gXCIuLi9yb2xlXCI7XG5cbi8qKlxuICogQW4gaW1tdXRhYmxlIHdyYXBwZXIgYXJvdW5kIGFuIElSb2xlXG4gKlxuICogVGhpcyB3cmFwcGVyIGlnbm9yZXMgYWxsIG11dGF0aW5nIG9wZXJhdGlvbnMsIGxpa2UgYXR0YWNoaW5nIHBvbGljaWVzIG9yXG4gKiBhZGRpbmcgcG9saWN5IHN0YXRlbWVudHMuXG4gKlxuICogVXNlZnVsIGluIGNhc2VzIHdoZXJlIHlvdSB3YW50IHRvIHR1cm4gb2ZmIENESydzIGF1dG9tYXRpYyBwZXJtaXNzaW9uc1xuICogbWFuYWdlbWVudCwgYW5kIGluc3RlYWQgaGF2ZSBmdWxsIGNvbnRyb2wgb3ZlciBhbGwgcGVybWlzc2lvbnMuXG4gKlxuICogTm90ZTogaWYgeW91IHdhbnQgdG8gaWdub3JlIGFsbCBtdXRhdGlvbnMgZm9yIGFuIGV4dGVybmFsbHkgZGVmaW5lZCByb2xlXG4gKiB3aGljaCB3YXMgaW1wb3J0ZWQgaW50byB0aGUgQ0RLIHdpdGggYFJvbGUuZnJvbVJvbGVBcm5gLCB5b3UgZG9uJ3QgaGF2ZSB0byB1c2UgdGhpcyBjbGFzcyAtXG4gKiBzaW1wbHkgcGFzcyB0aGUgcHJvcGVydHkgbXV0YWJsZSA9IGZhbHNlIHdoZW4gY2FsbGluZyBgUm9sZS5mcm9tUm9sZUFybmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVSb2xlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSb2xlIHtcbiAgcHVibGljIHJlYWRvbmx5IGFzc3VtZVJvbGVBY3Rpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUZyYWdtZW50OiBQcmluY2lwYWxQb2xpY3lGcmFnbWVudDtcbiAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsID0gdGhpcztcbiAgcHVibGljIHJlYWRvbmx5IHByaW5jaXBhbEFjY291bnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzdGFjazogQXdzU3RhY2s7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm9sZU91dHB1dHM6IFJvbGVPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IHJvbGVPdXRwdXRzKCk6IFJvbGVPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fcm9sZU91dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCkge1xuICAgIHJldHVybiB0aGlzLnJvbGVPdXRwdXRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb2xlOiBJUm9sZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcm9sZTogSVJvbGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRHcmFudHNUb1Jlc291cmNlczogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBhY2NvdW50OiByb2xlLmVudi5hY2NvdW50LFxuICAgICAgcmVnaW9uOiByb2xlLmVudi5yZWdpb24sXG4gICAgfSk7XG4gICAgdGhpcy5yb2xlID0gcm9sZTtcbiAgICB0aGlzLmFzc3VtZVJvbGVBY3Rpb24gPSByb2xlLmFzc3VtZVJvbGVBY3Rpb247XG4gICAgdGhpcy5wb2xpY3lGcmFnbWVudCA9IHRoaXMucm9sZS5wb2xpY3lGcmFnbWVudDtcbiAgICB0aGlzLnByaW5jaXBhbEFjY291bnQgPSB0aGlzLnJvbGUucHJpbmNpcGFsQWNjb3VudDtcbiAgICB0aGlzLnJvbGVBcm4gPSB0aGlzLnJvbGUucm9sZUFybjtcbiAgICB0aGlzLnJvbGVOYW1lID0gdGhpcy5yb2xlLnJvbGVOYW1lO1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLnJvbGUuc3RhY2s7XG4gICAgLy8gaW1wbGVtZW50IElEZXBlbmRhYmxlIHByaXZhdGVseVxuICAgIERlcGVuZGFibGUuaW1wbGVtZW50KHRoaXMsIHtcbiAgICAgIGRlcGVuZGVuY3lSb290czogW3JvbGVdLFxuICAgIH0pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSByb2xlLm5vZGUuZGVmYXVsdENoaWxkO1xuICAgIHRoaXMuX3JvbGVPdXRwdXRzID0gdGhpcy5yb2xlLnJvbGVPdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaElubGluZVBvbGljeShfcG9saWN5OiBQb2xpY3kpOiB2b2lkIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gIH1cblxuICBwdWJsaWMgYWRkTWFuYWdlZFBvbGljeShfcG9saWN5OiBJTWFuYWdlZFBvbGljeSk6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BvbGljeShzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCkuc3RhdGVtZW50QWRkZWQ7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgX3N0YXRlbWVudDogUG9saWN5U3RhdGVtZW50LFxuICApOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgLy8gSWYgd2UgcmV0dXJuIGBmYWxzZWAsIHRoZSBncmFudHMgd2lsbCB0cnkgdG8gYWRkIHRoZSBzdGF0ZW1lbnQgdG8gdGhlIHJlc291cmNlXG4gICAgLy8gKGlmIHBvc3NpYmxlKS5cbiAgICBjb25zdCBwcmV0ZW5kU3VjY2VzcyA9ICF0aGlzLmFkZEdyYW50c1RvUmVzb3VyY2VzO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRBZGRlZDogcHJldGVuZFN1Y2Nlc3MsXG4gICAgICBwb2xpY3lEZXBlbmRhYmxlOiB0aGlzLnJvbGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBJUHJpbmNpcGFsLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5yb2xlLmdyYW50KGdyYW50ZWUsIC4uLmFjdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdyYW50UGFzc1JvbGUoZ3JhbnRlZTogSVByaW5jaXBhbCk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5yb2xlLmdyYW50UGFzc1JvbGUoZ3JhbnRlZSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRBc3N1bWVSb2xlKGlkZW50aXR5OiBJUHJpbmNpcGFsKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnJvbGUuZ3JhbnRBc3N1bWVSb2xlKGlkZW50aXR5KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { AwsConstructBase } from "../..";
|
|
3
|
+
import { Grant } from "../grant";
|
|
4
|
+
import { IManagedPolicy } from "../managed-policy";
|
|
5
|
+
import { Policy, IPolicy } from "../policy";
|
|
6
|
+
import { PolicyStatement } from "../policy-statement";
|
|
7
|
+
import { IComparablePrincipal, IPrincipal, AddToPrincipalPolicyResult, PrincipalPolicyFragment } from "../principals";
|
|
8
|
+
import { IRole, FromRoleArnOptions, RoleOutputs } from "../role";
|
|
9
|
+
export interface ImportedRoleProps extends FromRoleArnOptions {
|
|
10
|
+
readonly roleArn: string;
|
|
11
|
+
readonly roleName: string;
|
|
12
|
+
readonly account?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class ImportedRole extends AwsConstructBase implements IRole, IComparablePrincipal {
|
|
15
|
+
readonly grantPrincipal: IPrincipal;
|
|
16
|
+
readonly principalAccount?: string;
|
|
17
|
+
readonly assumeRoleAction: string;
|
|
18
|
+
readonly policyFragment: PrincipalPolicyFragment;
|
|
19
|
+
readonly roleArn: string;
|
|
20
|
+
readonly roleName: string;
|
|
21
|
+
private readonly attachedPolicies;
|
|
22
|
+
private readonly defaultPolicyName?;
|
|
23
|
+
private defaultPolicy?;
|
|
24
|
+
private _roleOutputs;
|
|
25
|
+
get roleOutputs(): RoleOutputs;
|
|
26
|
+
get outputs(): RoleOutputs;
|
|
27
|
+
constructor(scope: Construct, id: string, props: ImportedRoleProps);
|
|
28
|
+
addToPolicy(statement: PolicyStatement): boolean;
|
|
29
|
+
addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult;
|
|
30
|
+
attachInlinePolicy(policy: Policy): void;
|
|
31
|
+
addManagedPolicy(policy: IManagedPolicy): void;
|
|
32
|
+
grantPassRole(identity: IPrincipal): Grant;
|
|
33
|
+
grantAssumeRole(identity: IPrincipal): Grant;
|
|
34
|
+
grant(grantee: IPrincipal, ...actions: string[]): Grant;
|
|
35
|
+
dedupeString(): string | undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Helper class that maintains the set of attached policies for a principal.
|
|
39
|
+
*/
|
|
40
|
+
export declare class AttachedPolicies {
|
|
41
|
+
private policies;
|
|
42
|
+
/**
|
|
43
|
+
* Adds a policy to the list of attached policies.
|
|
44
|
+
*
|
|
45
|
+
* If this policy is already, attached, returns false.
|
|
46
|
+
* If there is another policy attached with the same name, throws an exception.
|
|
47
|
+
*/
|
|
48
|
+
attach(policy: IPolicy): void;
|
|
49
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AttachedPolicies = exports.ImportedRole = void 0;
|
|
4
|
+
const cdktf_1 = require("cdktf");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
const token_1 = require("../../../token");
|
|
7
|
+
const grant_1 = require("../grant");
|
|
8
|
+
const policy_1 = require("../policy");
|
|
9
|
+
const principals_1 = require("../principals");
|
|
10
|
+
class ImportedRole extends __1.AwsConstructBase {
|
|
11
|
+
get roleOutputs() {
|
|
12
|
+
return this._roleOutputs;
|
|
13
|
+
}
|
|
14
|
+
get outputs() {
|
|
15
|
+
return this.roleOutputs;
|
|
16
|
+
}
|
|
17
|
+
constructor(scope, id, props) {
|
|
18
|
+
super(scope, id, {
|
|
19
|
+
account: props.account,
|
|
20
|
+
});
|
|
21
|
+
this.grantPrincipal = this;
|
|
22
|
+
this.assumeRoleAction = "sts:AssumeRole";
|
|
23
|
+
this.attachedPolicies = new AttachedPolicies();
|
|
24
|
+
this.roleArn = props.roleArn;
|
|
25
|
+
this.roleName = props.roleName;
|
|
26
|
+
this.policyFragment = new principals_1.ArnPrincipal(this.roleArn).policyFragment;
|
|
27
|
+
this.defaultPolicyName = props.defaultPolicyName;
|
|
28
|
+
this.principalAccount = props.account;
|
|
29
|
+
this._roleOutputs = {
|
|
30
|
+
name: this.roleName,
|
|
31
|
+
arn: this.roleArn,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
addToPolicy(statement) {
|
|
35
|
+
return this.addToPrincipalPolicy(statement).statementAdded;
|
|
36
|
+
}
|
|
37
|
+
addToPrincipalPolicy(statement) {
|
|
38
|
+
if (!this.defaultPolicy) {
|
|
39
|
+
this.defaultPolicy = new policy_1.Policy(this, this.defaultPolicyName ?? "Policy", {
|
|
40
|
+
policyName: undefined, // let the policy name be auto-generated
|
|
41
|
+
});
|
|
42
|
+
this.attachInlinePolicy(this.defaultPolicy);
|
|
43
|
+
}
|
|
44
|
+
this.defaultPolicy.addStatements(statement);
|
|
45
|
+
return { statementAdded: true, policyDependable: this.defaultPolicy };
|
|
46
|
+
}
|
|
47
|
+
attachInlinePolicy(policy) {
|
|
48
|
+
const thisAndPolicyAccountComparison = (0, token_1.tokenCompareStrings)(this.env.account, policy.env.account);
|
|
49
|
+
const equalOrAnyUnresolved = thisAndPolicyAccountComparison === token_1.TokenComparison.SAME ||
|
|
50
|
+
thisAndPolicyAccountComparison === token_1.TokenComparison.BOTH_UNRESOLVED ||
|
|
51
|
+
thisAndPolicyAccountComparison === token_1.TokenComparison.ONE_UNRESOLVED;
|
|
52
|
+
if (equalOrAnyUnresolved) {
|
|
53
|
+
this.attachedPolicies.attach(policy);
|
|
54
|
+
policy.attachToRole(this);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
addManagedPolicy(policy) {
|
|
58
|
+
cdktf_1.Annotations.of(this).addWarning(`Not adding managed policy: ${policy.managedPolicyArn} to imported role: ${this.roleName}`);
|
|
59
|
+
}
|
|
60
|
+
grantPassRole(identity) {
|
|
61
|
+
return this.grant(identity, "iam:PassRole");
|
|
62
|
+
}
|
|
63
|
+
grantAssumeRole(identity) {
|
|
64
|
+
return this.grant(identity, "sts:AssumeRole");
|
|
65
|
+
}
|
|
66
|
+
grant(grantee, ...actions) {
|
|
67
|
+
return grant_1.Grant.addToPrincipal({
|
|
68
|
+
grantee,
|
|
69
|
+
actions,
|
|
70
|
+
resourceArns: [this.roleArn],
|
|
71
|
+
scope: this,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
dedupeString() {
|
|
75
|
+
return `ImportedRole:${this.roleArn}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.ImportedRole = ImportedRole;
|
|
79
|
+
/**
|
|
80
|
+
* Helper class that maintains the set of attached policies for a principal.
|
|
81
|
+
*/
|
|
82
|
+
class AttachedPolicies {
|
|
83
|
+
constructor() {
|
|
84
|
+
this.policies = new Array();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Adds a policy to the list of attached policies.
|
|
88
|
+
*
|
|
89
|
+
* If this policy is already, attached, returns false.
|
|
90
|
+
* If there is another policy attached with the same name, throws an exception.
|
|
91
|
+
*/
|
|
92
|
+
attach(policy) {
|
|
93
|
+
if (this.policies.find((p) => p === policy)) {
|
|
94
|
+
return; // already attached
|
|
95
|
+
}
|
|
96
|
+
if (this.policies.find((p) => p.policyName === policy.policyName)) {
|
|
97
|
+
throw new Error(`A policy named "${policy.policyName}" is already attached`);
|
|
98
|
+
}
|
|
99
|
+
this.policies.push(policy);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.AttachedPolicies = AttachedPolicies;
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0ZWQtcm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvaWFtL3ByaXZhdGUvaW1wb3J0ZWQtcm9sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBb0M7QUFFcEMsNkJBQXlDO0FBQ3pDLDBDQUFzRTtBQUN0RSxvQ0FBaUM7QUFFakMsc0NBQTRDO0FBRTVDLDhDQU11QjtBQVN2QixNQUFhLFlBQ1gsU0FBUSxvQkFBZ0I7SUFjeEIsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUM7UUFyQlcsbUJBQWMsR0FBZSxJQUFJLENBQUM7UUFFbEMscUJBQWdCLEdBQVcsZ0JBQWdCLENBQUM7UUFJM0MscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBZ0J6RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsU0FBMEI7UUFDM0MsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzdELENBQUM7SUFFTSxvQkFBb0IsQ0FDekIsU0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBTSxDQUM3QixJQUFJLEVBQ0osSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsRUFDbEM7Z0JBQ0UsVUFBVSxFQUFFLFNBQVMsRUFBRSx3Q0FBd0M7YUFDaEUsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3RDLE1BQU0sOEJBQThCLEdBQUcsSUFBQSwyQkFBbUIsRUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUNuQixDQUFDO1FBQ0YsTUFBTSxvQkFBb0IsR0FDeEIsOEJBQThCLEtBQUssdUJBQWUsQ0FBQyxJQUFJO1lBQ3ZELDhCQUE4QixLQUFLLHVCQUFlLENBQUMsZUFBZTtZQUNsRSw4QkFBOEIsS0FBSyx1QkFBZSxDQUFDLGNBQWMsQ0FBQztRQUNwRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBc0I7UUFDNUMsbUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUM3Qiw4QkFBOEIsTUFBTSxDQUFDLGdCQUFnQixzQkFBc0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUMzRixDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FBQyxRQUFvQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxlQUFlLENBQUMsUUFBb0I7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxLQUFLLENBQUMsT0FBbUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3BELE9BQU8sYUFBSyxDQUFDLGNBQWMsQ0FBQztZQUMxQixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLGdCQUFnQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBbkdELG9DQW1HQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFBN0I7UUFDVSxhQUFRLEdBQUcsSUFBSSxLQUFLLEVBQVcsQ0FBQztJQXFCMUMsQ0FBQztJQW5CQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFlO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxtQkFBbUI7UUFDN0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsTUFBTSxDQUFDLFVBQVUsdUJBQXVCLENBQzVELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBdEJELDRDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgVG9rZW5Db21wYXJpc29uLCB0b2tlbkNvbXBhcmVTdHJpbmdzIH0gZnJvbSBcIi4uLy4uLy4uL3Rva2VuXCI7XG5pbXBvcnQgeyBHcmFudCB9IGZyb20gXCIuLi9ncmFudFwiO1xuaW1wb3J0IHsgSU1hbmFnZWRQb2xpY3kgfSBmcm9tIFwiLi4vbWFuYWdlZC1wb2xpY3lcIjtcbmltcG9ydCB7IFBvbGljeSwgSVBvbGljeSB9IGZyb20gXCIuLi9wb2xpY3lcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5pbXBvcnQge1xuICBJQ29tcGFyYWJsZVByaW5jaXBhbCxcbiAgSVByaW5jaXBhbCxcbiAgQXJuUHJpbmNpcGFsLFxuICBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCxcbiAgUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQsXG59IGZyb20gXCIuLi9wcmluY2lwYWxzXCI7XG5pbXBvcnQgeyBJUm9sZSwgRnJvbVJvbGVBcm5PcHRpb25zLCBSb2xlT3V0cHV0cyB9IGZyb20gXCIuLi9yb2xlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0ZWRSb2xlUHJvcHMgZXh0ZW5kcyBGcm9tUm9sZUFybk9wdGlvbnMge1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRlZFJvbGVcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVJvbGUsIElDb21wYXJhYmxlUHJpbmNpcGFsXG57XG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogSVByaW5jaXBhbCA9IHRoaXM7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxBY2NvdW50Pzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzdW1lUm9sZUFjdGlvbjogc3RyaW5nID0gXCJzdHM6QXNzdW1lUm9sZVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5RnJhZ21lbnQ6IFByaW5jaXBhbFBvbGljeUZyYWdtZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhdHRhY2hlZFBvbGljaWVzID0gbmV3IEF0dGFjaGVkUG9saWNpZXMoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UG9saWN5TmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSBkZWZhdWx0UG9saWN5PzogUG9saWN5O1xuXG4gIHByaXZhdGUgX3JvbGVPdXRwdXRzOiBSb2xlT3V0cHV0cztcbiAgcHVibGljIGdldCByb2xlT3V0cHV0cygpOiBSb2xlT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX3JvbGVPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlT3V0cHV0cztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbXBvcnRlZFJvbGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgYWNjb3VudDogcHJvcHMuYWNjb3VudCxcbiAgICB9KTtcbiAgICB0aGlzLnJvbGVBcm4gPSBwcm9wcy5yb2xlQXJuO1xuICAgIHRoaXMucm9sZU5hbWUgPSBwcm9wcy5yb2xlTmFtZTtcbiAgICB0aGlzLnBvbGljeUZyYWdtZW50ID0gbmV3IEFyblByaW5jaXBhbCh0aGlzLnJvbGVBcm4pLnBvbGljeUZyYWdtZW50O1xuICAgIHRoaXMuZGVmYXVsdFBvbGljeU5hbWUgPSBwcm9wcy5kZWZhdWx0UG9saWN5TmFtZTtcbiAgICB0aGlzLnByaW5jaXBhbEFjY291bnQgPSBwcm9wcy5hY2NvdW50O1xuICAgIHRoaXMuX3JvbGVPdXRwdXRzID0ge1xuICAgICAgbmFtZTogdGhpcy5yb2xlTmFtZSxcbiAgICAgIGFybjogdGhpcy5yb2xlQXJuLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Qb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpLnN0YXRlbWVudEFkZGVkO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgIHN0YXRlbWVudDogUG9saWN5U3RhdGVtZW50LFxuICApOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHRQb2xpY3kpIHtcbiAgICAgIHRoaXMuZGVmYXVsdFBvbGljeSA9IG5ldyBQb2xpY3koXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuZGVmYXVsdFBvbGljeU5hbWUgPz8gXCJQb2xpY3lcIixcbiAgICAgICAge1xuICAgICAgICAgIHBvbGljeU5hbWU6IHVuZGVmaW5lZCwgLy8gbGV0IHRoZSBwb2xpY3kgbmFtZSBiZSBhdXRvLWdlbmVyYXRlZFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHRoaXMuYXR0YWNoSW5saW5lUG9saWN5KHRoaXMuZGVmYXVsdFBvbGljeSk7XG4gICAgfVxuICAgIHRoaXMuZGVmYXVsdFBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMuZGVmYXVsdFBvbGljeSB9O1xuICB9XG5cbiAgcHVibGljIGF0dGFjaElubGluZVBvbGljeShwb2xpY3k6IFBvbGljeSk6IHZvaWQge1xuICAgIGNvbnN0IHRoaXNBbmRQb2xpY3lBY2NvdW50Q29tcGFyaXNvbiA9IHRva2VuQ29tcGFyZVN0cmluZ3MoXG4gICAgICB0aGlzLmVudi5hY2NvdW50LFxuICAgICAgcG9saWN5LmVudi5hY2NvdW50LFxuICAgICk7XG4gICAgY29uc3QgZXF1YWxPckFueVVucmVzb2x2ZWQgPVxuICAgICAgdGhpc0FuZFBvbGljeUFjY291bnRDb21wYXJpc29uID09PSBUb2tlbkNvbXBhcmlzb24uU0FNRSB8fFxuICAgICAgdGhpc0FuZFBvbGljeUFjY291bnRDb21wYXJpc29uID09PSBUb2tlbkNvbXBhcmlzb24uQk9USF9VTlJFU09MVkVEIHx8XG4gICAgICB0aGlzQW5kUG9saWN5QWNjb3VudENvbXBhcmlzb24gPT09IFRva2VuQ29tcGFyaXNvbi5PTkVfVU5SRVNPTFZFRDtcbiAgICBpZiAoZXF1YWxPckFueVVucmVzb2x2ZWQpIHtcbiAgICAgIHRoaXMuYXR0YWNoZWRQb2xpY2llcy5hdHRhY2gocG9saWN5KTtcbiAgICAgIHBvbGljeS5hdHRhY2hUb1JvbGUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZE1hbmFnZWRQb2xpY3kocG9saWN5OiBJTWFuYWdlZFBvbGljeSk6IHZvaWQge1xuICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICBgTm90IGFkZGluZyBtYW5hZ2VkIHBvbGljeTogJHtwb2xpY3kubWFuYWdlZFBvbGljeUFybn0gdG8gaW1wb3J0ZWQgcm9sZTogJHt0aGlzLnJvbGVOYW1lfWAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFBhc3NSb2xlKGlkZW50aXR5OiBJUHJpbmNpcGFsKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGlkZW50aXR5LCBcImlhbTpQYXNzUm9sZVwiKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudEFzc3VtZVJvbGUoaWRlbnRpdHk6IElQcmluY2lwYWwpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoaWRlbnRpdHksIFwic3RzOkFzc3VtZVJvbGVcIik7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogSVByaW5jaXBhbCwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBHcmFudCB7XG4gICAgcmV0dXJuIEdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5yb2xlQXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlZHVwZVN0cmluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgSW1wb3J0ZWRSb2xlOiR7dGhpcy5yb2xlQXJufWA7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgdGhhdCBtYWludGFpbnMgdGhlIHNldCBvZiBhdHRhY2hlZCBwb2xpY2llcyBmb3IgYSBwcmluY2lwYWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRhY2hlZFBvbGljaWVzIHtcbiAgcHJpdmF0ZSBwb2xpY2llcyA9IG5ldyBBcnJheTxJUG9saWN5PigpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgcG9saWN5IHRvIHRoZSBsaXN0IG9mIGF0dGFjaGVkIHBvbGljaWVzLlxuICAgKlxuICAgKiBJZiB0aGlzIHBvbGljeSBpcyBhbHJlYWR5LCBhdHRhY2hlZCwgcmV0dXJucyBmYWxzZS5cbiAgICogSWYgdGhlcmUgaXMgYW5vdGhlciBwb2xpY3kgYXR0YWNoZWQgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaChwb2xpY3k6IElQb2xpY3kpIHtcbiAgICBpZiAodGhpcy5wb2xpY2llcy5maW5kKChwKSA9PiBwID09PSBwb2xpY3kpKSB7XG4gICAgICByZXR1cm47IC8vIGFscmVhZHkgYXR0YWNoZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb2xpY2llcy5maW5kKChwKSA9PiBwLnBvbGljeU5hbWUgPT09IHBvbGljeS5wb2xpY3lOYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBwb2xpY3kgbmFtZWQgXCIke3BvbGljeS5wb2xpY3lOYW1lfVwiIGlzIGFscmVhZHkgYXR0YWNoZWRgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvbGljaWVzLnB1c2gocG9saWN5KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IConstruct } from "constructs";
|
|
2
|
+
import { PolicyStatement } from "../policy-statement";
|
|
3
|
+
/**
|
|
4
|
+
* Options for the mergeStatement command
|
|
5
|
+
*/
|
|
6
|
+
export interface MergeStatementOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Scope to derive configuration flags from
|
|
9
|
+
*/
|
|
10
|
+
readonly scope: IConstruct;
|
|
11
|
+
/**
|
|
12
|
+
* Do not merge statements if the result would be bigger than MAX_MERGE_SIZE
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
readonly limitSize?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Merge statements if they can be combined to produce the same effects.
|
|
19
|
+
*
|
|
20
|
+
* If false, statements are only merged if they are exactly equal.
|
|
21
|
+
*
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
readonly mergeIfCombinable?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Merge as many statements as possible to shrink the total policy doc, modifying the input array in place
|
|
28
|
+
*
|
|
29
|
+
* We compare and merge all pairs of statements (O(N^2) complexity), opportunistically
|
|
30
|
+
* merging them. This is not guaranteed to produce the optimal output, but it's probably
|
|
31
|
+
* Good Enough(tm). If it merges anything, it's at least going to produce a smaller output
|
|
32
|
+
* than the input.
|
|
33
|
+
*/
|
|
34
|
+
export declare function mergeStatements(statements: PolicyStatement[], options: MergeStatementOptions): MergeStatementResult;
|
|
35
|
+
export interface MergeStatementResult {
|
|
36
|
+
/**
|
|
37
|
+
* The list of maximally merged statements
|
|
38
|
+
*/
|
|
39
|
+
readonly mergedStatements: PolicyStatement[];
|
|
40
|
+
/**
|
|
41
|
+
* Mapping of old to new statements
|
|
42
|
+
*/
|
|
43
|
+
readonly originsMap: Map<PolicyStatement, PolicyStatement[]>;
|
|
44
|
+
}
|