@kensio/yulin 1.20.16 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
- package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
- package/dist/service/athena/engine/sim-athena-shims.js +2 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
- package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
- package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
- package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
- package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
- package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
- package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
- package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
- package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +16 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
- package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
- package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
- package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
- package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +16 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
- package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
- package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
- package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
- package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
- package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
- package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +35 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +49 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +33 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +132 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
- package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
- package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
- package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
- package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +71 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +9 -7
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +12 -37
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +35 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
- package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
- package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +22 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +2 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
- package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
- package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
- package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
- package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
- package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +4 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
- package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
- package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
- package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
- package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
- package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
- package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +30 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +44 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +9 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +4 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +8 -2
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
- package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +7 -3
- package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +4 -0
- package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
- package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
- package/dist/service/cloudfront/index.d.ts +2 -0
- package/dist/service/cloudfront/index.js +1 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
- package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
- package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
- package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
- package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
- package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
- package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +24 -0
- package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
- package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
- package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
- package/dist/service/cloudfront/sim-cf-etag.js +10 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
- package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
- package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +20 -12
- package/dist/service/cloudfront/sim-cloudfront-commands.js +20 -17
- package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
- package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
- package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +60 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.js +75 -0
- package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -44
- package/dist/service/cloudfront/sim-cloudfront.js +37 -58
- package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
- package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
- package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
- package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
- package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
- package/dist/service/ecr/sim-ecr.d.ts +7 -0
- package/dist/service/ecr/sim-ecr.js +16 -4
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
- package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
- package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
- package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
- package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
- package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
- package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
- package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
- package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
- package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
- package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
- package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
- package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
- package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
- package/dist/service/firehose/source/sim-firehose-source.js +5 -0
- package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
- package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
- package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +34 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
- package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
- package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
- package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +89 -0
- package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
- package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
- package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
- package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
- package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
- package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
- package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
- package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
- package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
- package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
- package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
- package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
- package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
- package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
- package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
- package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
- package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
- package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
- package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
- package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
- package/dist/service/iam/error/sim-iam.error.js +13 -0
- package/dist/service/iam/index.d.ts +1 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
- package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
- package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
- package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
- package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
- package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
- package/dist/service/iam/sim-iam-account-parts.js +1 -0
- package/dist/service/iam/sim-iam.d.ts +12 -2
- package/dist/service/iam/sim-iam.js +12 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
- package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
- package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
- package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
- package/dist/service/kms/command/sim-kms-request-options.d.ts +15 -0
- package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
- package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
- package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
- package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
- package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
- package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
- package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
- package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
- package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
- package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
- package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
- package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
- package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
- package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
- package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
- package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
- package/dist/service/logs/sim-logs-commands.d.ts +3 -0
- package/dist/service/logs/sim-logs-commands.js +4 -0
- package/dist/service/logs/sim-logs.js +6 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
- package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
- package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
- package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
- package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
- package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
- package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
- package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
- package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
- package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +11 -12
- package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +13 -8
- package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
- package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
- package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
- package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
- package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
- package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
- package/dist/service/stepfunctions/sim-step-functions.js +26 -9
- package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
- package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
- package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
- package/dist/service/sts/sim-sts.d.ts +9 -0
- package/dist/service/sts/sim-sts.js +4 -0
- package/dist/util/memo/bounded-memo.d.ts +36 -0
- package/dist/util/memo/bounded-memo.js +58 -0
- package/docs/sdk/README.md +3 -1
- package/docs/services/athena/README.md +7 -1
- package/docs/services/cloudformation/README.md +197 -11
- package/docs/services/cloudfront/README.md +1116 -14
- package/docs/services/cloudwatch/README.md +6 -4
- package/docs/services/cognito/README.md +8 -7
- package/docs/services/dynamodb/README.md +6 -5
- package/docs/services/ecs/README.md +23 -9
- package/docs/services/elbv2/README.md +6 -2
- package/docs/services/eventbridge/README.md +9 -1
- package/docs/services/firehose/README.md +9 -3
- package/docs/services/glue/README.md +6 -0
- package/docs/services/iam/README.md +322 -27
- package/docs/services/kinesis/README.md +3 -2
- package/docs/services/kms/README.md +11 -2
- package/docs/services/lambda/README.md +76 -2
- package/docs/services/logs/README.md +22 -2
- package/docs/services/s3/README.md +7 -2
- package/docs/services/scheduler/README.md +12 -4
- package/docs/services/secretsmanager/README.md +6 -3
- package/docs/services/ses/README.md +3 -1
- package/docs/services/sns/README.md +5 -5
- package/docs/services/sqs/README.md +5 -5
- package/docs/services/ssm/README.md +35 -18
- package/docs/services/stepfunctions/README.md +11 -2
- package/docs/services/wafv2/README.md +5 -3
- package/package.json +1 -1
- package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
|
@@ -2,6 +2,7 @@ import { type BackgroundScheduler } from "../../util/background/background.js";
|
|
|
2
2
|
import type { SimAwsAccountId } from "../aws/sim-aws-account.js";
|
|
3
3
|
import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
|
|
4
4
|
import type { SimAwsDefaultCaller } from "../aws/caller/sim-aws-caller.js";
|
|
5
|
+
import type { SimAwsAmbientCaller } from "../aws/caller/sim-aws-ambient-caller.js";
|
|
5
6
|
import { SimIamAccountAuthZ } from "./authorize/sim-iam-account-auth-z.js";
|
|
6
7
|
import type { SimIamInterServiceAuthZ } from "./authorize/sim-iam-inter-service-auth-z.js";
|
|
7
8
|
import { SimIamCommandHandlers } from "./command/sim-iam-command-handlers.js";
|
|
@@ -27,6 +28,13 @@ export interface SimIamProperties {
|
|
|
27
28
|
* decided as the Account root, which is what a standalone SimIam does.
|
|
28
29
|
*/
|
|
29
30
|
readonly defaultCaller?: SimAwsDefaultCaller | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Where a request naming no caller looks before the default.
|
|
33
|
+
*
|
|
34
|
+
* A SimAws passes on the run-as block it is inside, if any. A standalone
|
|
35
|
+
* SimIam has no run-as around it and leaves this out.
|
|
36
|
+
*/
|
|
37
|
+
readonly ambientCaller?: SimAwsAmbientCaller | undefined;
|
|
30
38
|
/**
|
|
31
39
|
* Resolves the IAM of other Accounts in the same simulation.
|
|
32
40
|
*
|
|
@@ -48,6 +48,7 @@ export class SimIamAccountParts {
|
|
|
48
48
|
users: this.users,
|
|
49
49
|
credentialIdentityResolver: credentialRegistry,
|
|
50
50
|
defaultCaller: properties.defaultCaller,
|
|
51
|
+
ambientCaller: properties.ambientCaller,
|
|
51
52
|
iamResolver: properties.iamResolver,
|
|
52
53
|
scpResolver: properties.scpResolver,
|
|
53
54
|
});
|
|
@@ -3,7 +3,7 @@ import type { SimAwsAccountId } from "../aws/sim-aws-account.js";
|
|
|
3
3
|
import type { SimIamManagedPolicy } from "./policy/sim-iam-policy.js";
|
|
4
4
|
import type { SimIamRole, SimIamRoleName } from "./role/sim-iam-role.js";
|
|
5
5
|
import type { SimIamUser, SimIamUsername } from "./user/sim-iam-user.js";
|
|
6
|
-
import type { SimIamAuthorizationInput } from "./authorize/context/sim-iam-auth-z-
|
|
6
|
+
import type { SimIamAuthorizationInput } from "./authorize/context/sim-iam-auth-z-input.js";
|
|
7
7
|
import type { SimIamPolicyDecision } from "./authorize/sim-iam-decision.js";
|
|
8
8
|
import type * as simIamCommands from "./command/sim-iam-command.types.js";
|
|
9
9
|
import type { SimIamRequestOptions } from "./command/sim-iam-request-options.js";
|
|
@@ -11,11 +11,12 @@ import type { SimCfnServiceResourceFactory } from "../cloudformation/resource/fa
|
|
|
11
11
|
import type { SimIamInterServiceAuthZ } from "./authorize/sim-iam-inter-service-auth-z.js";
|
|
12
12
|
import type { SimIamAccountIdentityPolicies } from "./authorize/identity/sim-iam-account-identity-policies.js";
|
|
13
13
|
import type { SimIamAuthZPolicySource } from "./authorize/context/sim-iam-auth-z-context.js";
|
|
14
|
-
import type { SimAwsPrincipal } from "../aws/caller/sim-aws-caller.js";
|
|
14
|
+
import type { SimArnPrincipal, SimAwsPrincipal } from "../aws/caller/sim-aws-caller.js";
|
|
15
15
|
import type { SimSdkCommandRouter } from "../../sdk/index.js";
|
|
16
16
|
import type { SimIamCredentialRegistry } from "./credential/sim-iam-credential-registry.js";
|
|
17
17
|
import type { SimIamSessionManager } from "./credential/session/sim-iam-session-manager.js";
|
|
18
18
|
import { type SimIamProperties } from "./sim-iam-account-parts.js";
|
|
19
|
+
import { type SimIamDeployRoleInput } from "./role/sim-iam-deploy-role.js";
|
|
19
20
|
/**
|
|
20
21
|
* Simulated IAM service facade. Handles SDK commands. Emulates AWS behaviour
|
|
21
22
|
* and state.
|
|
@@ -52,6 +53,7 @@ export declare class SimIam implements SimIamInterServiceAuthZ, SimIamAccountIde
|
|
|
52
53
|
private readonly commands;
|
|
53
54
|
private readonly accountAuthZ;
|
|
54
55
|
private readonly sdkRouter;
|
|
56
|
+
private readonly deployRoles;
|
|
55
57
|
constructor(properties?: SimIamProperties);
|
|
56
58
|
/**
|
|
57
59
|
* Evaluate an IAM authorization attempt against policies relevant to the
|
|
@@ -140,6 +142,14 @@ export declare class SimIam implements SimIamInterServiceAuthZ, SimIamAccountIde
|
|
|
140
142
|
* Handle an IAM CreateAccessKey command.
|
|
141
143
|
*/
|
|
142
144
|
createAccessKey(command: simIamCommands.SimCreateAccessKeyCommand, options?: SimIamRequestOptions): Promise<simIamCommands.SimCreateAccessKeyCommandOutput>;
|
|
145
|
+
/**
|
|
146
|
+
* Make a Role for a CloudFormation deployment to run as.
|
|
147
|
+
*
|
|
148
|
+
* The Role is trusted by `cloudformation.amazonaws.com` and allowed what the
|
|
149
|
+
* policy documents allow. What comes back goes straight to `caller` on
|
|
150
|
+
* `deployTemplate`, `deployTemplateFile` or `deployCdkOut`.
|
|
151
|
+
*/
|
|
152
|
+
makeDeployRole(input: SimIamDeployRoleInput): Promise<SimArnPrincipal>;
|
|
143
153
|
/**
|
|
144
154
|
* Get this service's CloudFormation Resource factory.
|
|
145
155
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SimIamCloudFormationResourceFactory } from "./cfn/sim-cfn-iam-resource-factory.js";
|
|
2
2
|
import { SimIamSdkCommandRouter } from "./sdk/sim-iam-sdk-command-router.js";
|
|
3
3
|
import { SimIamAccountParts, } from "./sim-iam-account-parts.js";
|
|
4
|
+
import { SimIamDeployRoleMaker, } from "./role/sim-iam-deploy-role.js";
|
|
4
5
|
/**
|
|
5
6
|
* Simulated IAM service facade. Handles SDK commands. Emulates AWS behaviour
|
|
6
7
|
* and state.
|
|
@@ -37,6 +38,7 @@ export class SimIam {
|
|
|
37
38
|
commands;
|
|
38
39
|
accountAuthZ;
|
|
39
40
|
sdkRouter = new SimIamSdkCommandRouter(this);
|
|
41
|
+
deployRoles = new SimIamDeployRoleMaker(this);
|
|
40
42
|
constructor(properties = {}) {
|
|
41
43
|
const parts = new SimIamAccountParts(properties);
|
|
42
44
|
this.accountId = parts.accountId;
|
|
@@ -176,6 +178,16 @@ export class SimIam {
|
|
|
176
178
|
async createAccessKey(command, options) {
|
|
177
179
|
return await this.commands.users.createAccessKey(command, options);
|
|
178
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Make a Role for a CloudFormation deployment to run as.
|
|
183
|
+
*
|
|
184
|
+
* The Role is trusted by `cloudformation.amazonaws.com` and allowed what the
|
|
185
|
+
* policy documents allow. What comes back goes straight to `caller` on
|
|
186
|
+
* `deployTemplate`, `deployTemplateFile` or `deployCdkOut`.
|
|
187
|
+
*/
|
|
188
|
+
async makeDeployRole(input) {
|
|
189
|
+
return await this.deployRoles.make(input);
|
|
190
|
+
}
|
|
179
191
|
/**
|
|
180
192
|
* Get this service's CloudFormation Resource factory.
|
|
181
193
|
*/
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The longest managed policy document IAM will take.
|
|
3
|
+
*
|
|
4
|
+
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
|
|
5
|
+
*/
|
|
6
|
+
export declare const maxSimIamManagedPolicyCharacters = 6144;
|
|
7
|
+
/**
|
|
8
|
+
* The longest inline policy document IAM will take on a Role or a User.
|
|
9
|
+
*/
|
|
10
|
+
export declare const maxSimIamInlinePolicyCharacters = 10240;
|
|
11
|
+
/**
|
|
12
|
+
* The longest trust policy document IAM will take on a Role.
|
|
13
|
+
*
|
|
14
|
+
* This one is adjustable, up to 8,192 characters. A simulation holds the
|
|
15
|
+
* default an account carries until it asks for more.
|
|
16
|
+
*/
|
|
17
|
+
export declare const maxSimIamTrustPolicyCharacters = 2048;
|
|
18
|
+
/**
|
|
19
|
+
* The Role or the User an inline policy is being put onto.
|
|
20
|
+
*/
|
|
21
|
+
export interface SimIamPolicyDocumentHolder {
|
|
22
|
+
/**
|
|
23
|
+
* What IAM calls the holder in the message, `role` or `user`.
|
|
24
|
+
*/
|
|
25
|
+
readonly kind: "role" | "user";
|
|
26
|
+
/**
|
|
27
|
+
* The holder's name.
|
|
28
|
+
*/
|
|
29
|
+
readonly name: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Measure a policy document the way IAM does, which leaves whitespace out.
|
|
33
|
+
*
|
|
34
|
+
* A document indented for a reader therefore counts the same as the one line
|
|
35
|
+
* `JSON.stringify` produces, and a template can be written either way.
|
|
36
|
+
*/
|
|
37
|
+
export declare function simIamPolicyDocumentSize(policyDocument: string): number;
|
|
38
|
+
/**
|
|
39
|
+
* Refuse a managed policy document over the character limit.
|
|
40
|
+
*
|
|
41
|
+
* A policy past the limit cannot be deployed, and the account keeps whichever
|
|
42
|
+
* version last fit. The permission the document was grown to grant then goes
|
|
43
|
+
* missing weeks later, at a distance from the change that lost it. Refusing
|
|
44
|
+
* the document here puts the fault beside the policy that carries it.
|
|
45
|
+
*
|
|
46
|
+
* The requiredness check refuses an absent document. This one has nothing to
|
|
47
|
+
* measure.
|
|
48
|
+
*/
|
|
49
|
+
export declare function assertSimIamManagedPolicyWithinSizeLimit(policyDocument: string | undefined): void;
|
|
50
|
+
/**
|
|
51
|
+
* Refuse an inline policy document over the character limit.
|
|
52
|
+
*/
|
|
53
|
+
export declare function assertSimIamInlinePolicyWithinSizeLimit(policyDocument: string | undefined, holder: SimIamPolicyDocumentHolder): void;
|
|
54
|
+
/**
|
|
55
|
+
* Refuse a Role trust policy document over the character limit.
|
|
56
|
+
*/
|
|
57
|
+
export declare function assertSimIamTrustPolicyWithinSizeLimit(policyDocument: string | undefined, roleName: string): void;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { SimIamLimitExceeded } from "../../error/sim-iam.error.js";
|
|
2
|
+
/**
|
|
3
|
+
* The longest managed policy document IAM will take.
|
|
4
|
+
*
|
|
5
|
+
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
|
|
6
|
+
*/
|
|
7
|
+
export const maxSimIamManagedPolicyCharacters = 6144;
|
|
8
|
+
/**
|
|
9
|
+
* The longest inline policy document IAM will take on a Role or a User.
|
|
10
|
+
*/
|
|
11
|
+
export const maxSimIamInlinePolicyCharacters = 10_240;
|
|
12
|
+
/**
|
|
13
|
+
* The longest trust policy document IAM will take on a Role.
|
|
14
|
+
*
|
|
15
|
+
* This one is adjustable, up to 8,192 characters. A simulation holds the
|
|
16
|
+
* default an account carries until it asks for more.
|
|
17
|
+
*/
|
|
18
|
+
export const maxSimIamTrustPolicyCharacters = 2048;
|
|
19
|
+
/**
|
|
20
|
+
* Measure a policy document the way IAM does, which leaves whitespace out.
|
|
21
|
+
*
|
|
22
|
+
* A document indented for a reader therefore counts the same as the one line
|
|
23
|
+
* `JSON.stringify` produces, and a template can be written either way.
|
|
24
|
+
*/
|
|
25
|
+
export function simIamPolicyDocumentSize(policyDocument) {
|
|
26
|
+
return policyDocument.replaceAll(/\s/gu, "").length;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Refuse a managed policy document over the character limit.
|
|
30
|
+
*
|
|
31
|
+
* A policy past the limit cannot be deployed, and the account keeps whichever
|
|
32
|
+
* version last fit. The permission the document was grown to grant then goes
|
|
33
|
+
* missing weeks later, at a distance from the change that lost it. Refusing
|
|
34
|
+
* the document here puts the fault beside the policy that carries it.
|
|
35
|
+
*
|
|
36
|
+
* The requiredness check refuses an absent document. This one has nothing to
|
|
37
|
+
* measure.
|
|
38
|
+
*/
|
|
39
|
+
export function assertSimIamManagedPolicyWithinSizeLimit(policyDocument) {
|
|
40
|
+
if (policyDocument === undefined ||
|
|
41
|
+
simIamPolicyDocumentSize(policyDocument) <= maxSimIamManagedPolicyCharacters) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
throw new SimIamLimitExceeded(`Cannot exceed quota for PolicySize: ${String(maxSimIamManagedPolicyCharacters)}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Refuse an inline policy document over the character limit.
|
|
48
|
+
*/
|
|
49
|
+
export function assertSimIamInlinePolicyWithinSizeLimit(policyDocument, holder) {
|
|
50
|
+
assertWithinMaximumPolicySize(policyDocument, maxSimIamInlinePolicyCharacters, holder);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Refuse a Role trust policy document over the character limit.
|
|
54
|
+
*/
|
|
55
|
+
export function assertSimIamTrustPolicyWithinSizeLimit(policyDocument, roleName) {
|
|
56
|
+
assertWithinMaximumPolicySize(policyDocument, maxSimIamTrustPolicyCharacters, { kind: "role", name: roleName });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* IAM reports both of these in bytes, over a count that is really characters
|
|
60
|
+
* with the whitespace taken out. The wording is kept as IAM writes it. A
|
|
61
|
+
* reader searching for the message finds what a real deploy would have told
|
|
62
|
+
* them.
|
|
63
|
+
*/
|
|
64
|
+
function assertWithinMaximumPolicySize(policyDocument, maxCharacters, holder) {
|
|
65
|
+
if (policyDocument === undefined ||
|
|
66
|
+
simIamPolicyDocumentSize(policyDocument) <= maxCharacters) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
throw new SimIamLimitExceeded(`Maximum policy size of ${String(maxCharacters)} bytes exceeded for ` +
|
|
70
|
+
`${holder.kind} ${holder.name}`);
|
|
71
|
+
}
|
|
@@ -20,7 +20,9 @@ interface SimKmsAuthorizerProperties {
|
|
|
20
20
|
* Both carry the KMS condition values a key policy can be written against:
|
|
21
21
|
* `kms:CallerAccount` for the Account the request came from, and
|
|
22
22
|
* `kms:ViaService` where another service made the request on the caller's
|
|
23
|
-
* behalf.
|
|
23
|
+
* behalf. A service passing on the caller's own KMS permissions says so, and
|
|
24
|
+
* a key policy admitting whoever the request came from is then not enough by
|
|
25
|
+
* itself.
|
|
24
26
|
*/
|
|
25
27
|
export declare class SimKmsAuthorizer {
|
|
26
28
|
private readonly iam;
|
|
@@ -15,7 +15,9 @@ import { SimKmsViaService } from "../../key/sim-kms-via-service.js";
|
|
|
15
15
|
* Both carry the KMS condition values a key policy can be written against:
|
|
16
16
|
* `kms:CallerAccount` for the Account the request came from, and
|
|
17
17
|
* `kms:ViaService` where another service made the request on the caller's
|
|
18
|
-
* behalf.
|
|
18
|
+
* behalf. A service passing on the caller's own KMS permissions says so, and
|
|
19
|
+
* a key policy admitting whoever the request came from is then not enough by
|
|
20
|
+
* itself.
|
|
19
21
|
*/
|
|
20
22
|
export class SimKmsAuthorizer {
|
|
21
23
|
iam;
|
|
@@ -41,6 +43,7 @@ export class SimKmsAuthorizer {
|
|
|
41
43
|
callerConditions: this.callerAccount,
|
|
42
44
|
resourcePolicies: [key.policy.asResourcePolicy()],
|
|
43
45
|
requiresResourcePolicyAllow: true,
|
|
46
|
+
withCallerPermissions: options.withCallerPermissions,
|
|
44
47
|
});
|
|
45
48
|
if (decision.isDenied) {
|
|
46
49
|
throw new SimIamAccessDenied({
|
|
@@ -20,4 +20,19 @@ export interface SimKmsRequestOptions {
|
|
|
20
20
|
* and a policy conditioned on `kms:ViaService` then does not match.
|
|
21
21
|
*/
|
|
22
22
|
readonly viaService?: string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the service named by `viaService` is making the request with the
|
|
25
|
+
* caller's own KMS permissions rather than with its own.
|
|
26
|
+
*
|
|
27
|
+
* A key policy admitting whoever the request came from then grants nothing
|
|
28
|
+
* by itself, because what it admits is the service, and the caller has to
|
|
29
|
+
* hold the KMS action in an identity policy as well. A key policy naming the
|
|
30
|
+
* caller still allows the request on its own, as it does for any other KMS
|
|
31
|
+
* request.
|
|
32
|
+
*
|
|
33
|
+
* No simulated service sets this. Parameter Store is the case it was written
|
|
34
|
+
* for, and the aws/ssm key policy grants its cryptographic actions to a
|
|
35
|
+
* wildcard principal outright.
|
|
36
|
+
*/
|
|
37
|
+
readonly withCallerPermissions?: boolean | undefined;
|
|
23
38
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
|
|
2
|
-
import type { SimIamResourcePolicyInput } from "../../iam/authorize/context/sim-iam-auth-z-
|
|
2
|
+
import type { SimIamResourcePolicyInput } from "../../iam/authorize/context/sim-iam-auth-z-input.js";
|
|
3
3
|
import type { SimIamPolicyDocument } from "../../iam/policy/sim-iam-policy.js";
|
|
4
4
|
import { type SimKmsViaService } from "./sim-kms-via-service.js";
|
|
5
5
|
/**
|
|
@@ -38,9 +38,10 @@ export declare class SimKmsKeyPolicy {
|
|
|
38
38
|
* through the service that owns the key, and it delegates nothing else to
|
|
39
39
|
* IAM: the second statement covers reading the key's metadata and no more.
|
|
40
40
|
*
|
|
41
|
-
* That is what makes an AWS managed key
|
|
42
|
-
*
|
|
43
|
-
*
|
|
41
|
+
* That is what makes an AWS managed key unusable by a caller holding
|
|
42
|
+
* kms:Decrypt on it who calls KMS directly. What the first statement admits
|
|
43
|
+
* is whoever reached KMS through the owning service, which allows the
|
|
44
|
+
* request on its own only where that service used its own permissions.
|
|
44
45
|
*/
|
|
45
46
|
static awsManaged(keyArn: string, accountId: SimAwsAccountId, viaService: SimKmsViaService): SimKmsKeyPolicy;
|
|
46
47
|
/**
|
|
@@ -53,9 +53,10 @@ export class SimKmsKeyPolicy {
|
|
|
53
53
|
* through the service that owns the key, and it delegates nothing else to
|
|
54
54
|
* IAM: the second statement covers reading the key's metadata and no more.
|
|
55
55
|
*
|
|
56
|
-
* That is what makes an AWS managed key
|
|
57
|
-
*
|
|
58
|
-
*
|
|
56
|
+
* That is what makes an AWS managed key unusable by a caller holding
|
|
57
|
+
* kms:Decrypt on it who calls KMS directly. What the first statement admits
|
|
58
|
+
* is whoever reached KMS through the owning service, which allows the
|
|
59
|
+
* request on its own only where that service used its own permissions.
|
|
59
60
|
*/
|
|
60
61
|
static awsManaged(keyArn, accountId, viaService) {
|
|
61
62
|
return new SimKmsKeyPolicy(keyArn, {
|
|
@@ -48,8 +48,8 @@ export declare class SimCfnLambdaFunctionPropertiesParser {
|
|
|
48
48
|
*/
|
|
49
49
|
private roleArn;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* An unnamed function gets the name CloudFormation generates for it, from
|
|
52
|
+
* the stack name and the logical ID.
|
|
53
53
|
*/
|
|
54
54
|
private functionName;
|
|
55
55
|
}
|
|
@@ -3,6 +3,7 @@ import { SimCfnLambdaDeadLetterParser } from "./sim-cfn-lambda-dead-letter-parse
|
|
|
3
3
|
import { SimCfnLambdaEnvironmentParser } from "./sim-cfn-lambda-environment-parser.js";
|
|
4
4
|
import { SimCfnLambdaFunctionCodeParser } from "./sim-cfn-lambda-function-code-parser.js";
|
|
5
5
|
import { SimCfnLambdaPropertyParser } from "./sim-cfn-lambda-property-parser.js";
|
|
6
|
+
import { simCfnLambdaGeneratedFunctionName } from "./sim-cfn-lambda-generated-function-name.js";
|
|
6
7
|
/**
|
|
7
8
|
* Map parsed AWS::Lambda::Function properties onto the sim Lambda
|
|
8
9
|
* CreateFunction command input, with the code input resolved separately so
|
|
@@ -74,10 +75,10 @@ export class SimCfnLambdaFunctionPropertiesParser {
|
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
78
|
+
* An unnamed function gets the name CloudFormation generates for it, from
|
|
79
|
+
* the stack name and the logical ID.
|
|
79
80
|
*/
|
|
80
81
|
functionName(resource, properties) {
|
|
81
|
-
return (this.propertyParser.optionalString(resource, properties["FunctionName"], "FunctionName") ?? resource
|
|
82
|
+
return (this.propertyParser.optionalString(resource, properties["FunctionName"], "FunctionName") ?? simCfnLambdaGeneratedFunctionName(resource));
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
|
|
2
|
+
/**
|
|
3
|
+
* The name CloudFormation gives a function whose template does not name it.
|
|
4
|
+
*
|
|
5
|
+
* Sixty-four characters is short for a name made of a stack name and a logical
|
|
6
|
+
* ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
|
|
7
|
+
* left alone, since Lambda keeps a name as it was given, and every character a
|
|
8
|
+
* stack name or a logical ID is made of is one a function name allows.
|
|
9
|
+
*/
|
|
10
|
+
export declare function simCfnLambdaGeneratedFunctionName(resource: SimCfnResource): string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
|
|
2
|
+
/**
|
|
3
|
+
* The longest name Lambda accepts for a function.
|
|
4
|
+
*
|
|
5
|
+
* The 140 characters `CreateFunction` documents are for a full ARN. A bare
|
|
6
|
+
* function name gets 64, and that is what a template generates.
|
|
7
|
+
*
|
|
8
|
+
* https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html
|
|
9
|
+
*/
|
|
10
|
+
const maximumNameLength = 64;
|
|
11
|
+
/**
|
|
12
|
+
* The name CloudFormation gives a function whose template does not name it.
|
|
13
|
+
*
|
|
14
|
+
* Sixty-four characters is short for a name made of a stack name and a logical
|
|
15
|
+
* ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
|
|
16
|
+
* left alone, since Lambda keeps a name as it was given, and every character a
|
|
17
|
+
* stack name or a logical ID is made of is one a function name allows.
|
|
18
|
+
*/
|
|
19
|
+
export function simCfnLambdaGeneratedFunctionName(resource) {
|
|
20
|
+
return new SimCfnGeneratedResourceName({
|
|
21
|
+
stackName: resource.stackName,
|
|
22
|
+
logicalId: resource.logicalId,
|
|
23
|
+
maximumLength: maximumNameLength,
|
|
24
|
+
}).value;
|
|
25
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-
|
|
1
|
+
import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-input.js";
|
|
2
2
|
import type { SimLambdaPolicyResource } from "../../function/policy/sim-lambda-policy-resource.js";
|
|
3
3
|
/**
|
|
4
4
|
* The resource policies IAM should evaluate alongside identity policies for an
|
|
@@ -8,18 +8,25 @@ interface CreateFunctionAuthorizerProperties {
|
|
|
8
8
|
*
|
|
9
9
|
* AWS maps the CreateFunction API operation to the lambda:CreateFunction IAM
|
|
10
10
|
* action. The resource is the function ARN being created.
|
|
11
|
+
*
|
|
12
|
+
* The execution role is a second question. Lambda keeps that Role and runs the
|
|
13
|
+
* function as it later, so the caller is asked whether they may hand it over,
|
|
14
|
+
* against the Role rather than the function. The create action is decided
|
|
15
|
+
* first, which is the order the two answers come in on real AWS.
|
|
11
16
|
*/
|
|
12
17
|
export declare class CreateFunctionAuthorizer {
|
|
13
18
|
private static readonly action;
|
|
14
19
|
private readonly iam;
|
|
20
|
+
private readonly passRole;
|
|
15
21
|
constructor(properties: CreateFunctionAuthorizerProperties);
|
|
16
22
|
/**
|
|
17
|
-
* Ensure the caller may create a Lambda function with the given ARN
|
|
23
|
+
* Ensure the caller may create a Lambda function with the given ARN, and may
|
|
24
|
+
* hand Lambda the execution role it names.
|
|
18
25
|
*
|
|
19
26
|
* The caller is passed through unchanged so sim IAM can distinguish an
|
|
20
27
|
* omitted caller, which defaults to Account root, from an explicit anonymous
|
|
21
28
|
* caller.
|
|
22
29
|
*/
|
|
23
|
-
authorize(functionArn: string, caller?: SimAwsCaller): void;
|
|
30
|
+
authorize(functionArn: string, roleArn: string, caller?: SimAwsCaller): void;
|
|
24
31
|
}
|
|
25
32
|
export {};
|
|
@@ -1,24 +1,37 @@
|
|
|
1
|
+
import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
|
|
1
2
|
import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
|
|
3
|
+
import { simLambdaServicePrincipal } from "../../sim-lambda-service-principal.js";
|
|
2
4
|
/**
|
|
3
5
|
* Applies IAM authorization to a Lambda CreateFunction request.
|
|
4
6
|
*
|
|
5
7
|
* AWS maps the CreateFunction API operation to the lambda:CreateFunction IAM
|
|
6
8
|
* action. The resource is the function ARN being created.
|
|
9
|
+
*
|
|
10
|
+
* The execution role is a second question. Lambda keeps that Role and runs the
|
|
11
|
+
* function as it later, so the caller is asked whether they may hand it over,
|
|
12
|
+
* against the Role rather than the function. The create action is decided
|
|
13
|
+
* first, which is the order the two answers come in on real AWS.
|
|
7
14
|
*/
|
|
8
15
|
export class CreateFunctionAuthorizer {
|
|
9
16
|
static action = "lambda:CreateFunction";
|
|
10
17
|
iam;
|
|
18
|
+
passRole;
|
|
11
19
|
constructor(properties) {
|
|
12
20
|
this.iam = properties.iam;
|
|
21
|
+
this.passRole = new SimIamPassRoleAuthorizer({
|
|
22
|
+
iam: properties.iam,
|
|
23
|
+
passedToService: simLambdaServicePrincipal,
|
|
24
|
+
});
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
|
-
* Ensure the caller may create a Lambda function with the given ARN
|
|
27
|
+
* Ensure the caller may create a Lambda function with the given ARN, and may
|
|
28
|
+
* hand Lambda the execution role it names.
|
|
16
29
|
*
|
|
17
30
|
* The caller is passed through unchanged so sim IAM can distinguish an
|
|
18
31
|
* omitted caller, which defaults to Account root, from an explicit anonymous
|
|
19
32
|
* caller.
|
|
20
33
|
*/
|
|
21
|
-
authorize(functionArn, caller) {
|
|
34
|
+
authorize(functionArn, roleArn, caller) {
|
|
22
35
|
const decision = this.iam.authorize({
|
|
23
36
|
action: CreateFunctionAuthorizer.action,
|
|
24
37
|
resource: functionArn,
|
|
@@ -32,5 +45,6 @@ export class CreateFunctionAuthorizer {
|
|
|
32
45
|
resource: functionArn,
|
|
33
46
|
});
|
|
34
47
|
}
|
|
48
|
+
this.passRole.authorize(roleArn, caller);
|
|
35
49
|
}
|
|
36
50
|
}
|
|
@@ -51,7 +51,7 @@ export class CreateFunctionCommandHandler {
|
|
|
51
51
|
// Allow for potential non-deterministic sequencing of async events.
|
|
52
52
|
await this.background.sequence();
|
|
53
53
|
const functionArn = simLambdaFunctionArn(this.accountRegionScope, input.name);
|
|
54
|
-
this.authorizer.authorize(functionArn, options?.caller);
|
|
54
|
+
this.authorizer.authorize(functionArn, input.roleArn, options?.caller);
|
|
55
55
|
this.requireAvailableFunctionName(input.name, functionArn);
|
|
56
56
|
const environment = this.makeEnvironment(input);
|
|
57
57
|
const code = await this.resolveCode(input, environment, options?.caller);
|
|
@@ -9,19 +9,24 @@ interface UpdateFunctionConfigurationAuthorizerProperties {
|
|
|
9
9
|
* AWS maps the UpdateFunctionConfiguration API operation to the
|
|
10
10
|
* lambda:UpdateFunctionConfiguration IAM action. The resource is the ARN of
|
|
11
11
|
* the function whose settings are changing.
|
|
12
|
+
*
|
|
13
|
+
* A request changing the execution role hands Lambda a Role, and is asked
|
|
14
|
+
* separately whether it may pass that one. A request leaving the role alone
|
|
15
|
+
* passes nothing and is asked nothing.
|
|
12
16
|
*/
|
|
13
17
|
export declare class UpdateFunctionConfigurationAuthorizer {
|
|
14
18
|
private static readonly action;
|
|
15
19
|
private readonly iam;
|
|
20
|
+
private readonly passRole;
|
|
16
21
|
constructor(properties: UpdateFunctionConfigurationAuthorizerProperties);
|
|
17
22
|
/**
|
|
18
23
|
* Ensure the caller may change the settings of the function with the given
|
|
19
|
-
* ARN.
|
|
24
|
+
* ARN, and may hand Lambda an execution role the request replaces it with.
|
|
20
25
|
*
|
|
21
26
|
* The caller is passed through unchanged so sim IAM can distinguish an
|
|
22
27
|
* omitted caller, which defaults to Account root, from an explicit anonymous
|
|
23
28
|
* caller.
|
|
24
29
|
*/
|
|
25
|
-
authorize(functionArn: string, caller?: SimAwsCaller): void;
|
|
30
|
+
authorize(functionArn: string, roleArn: string | undefined, caller?: SimAwsCaller): void;
|
|
26
31
|
}
|
|
27
32
|
export {};
|
|
@@ -1,26 +1,37 @@
|
|
|
1
|
+
import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
|
|
1
2
|
import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
|
|
3
|
+
import { simLambdaServicePrincipal } from "../../sim-lambda-service-principal.js";
|
|
2
4
|
/**
|
|
3
5
|
* Applies IAM authorization to a Lambda UpdateFunctionConfiguration request.
|
|
4
6
|
*
|
|
5
7
|
* AWS maps the UpdateFunctionConfiguration API operation to the
|
|
6
8
|
* lambda:UpdateFunctionConfiguration IAM action. The resource is the ARN of
|
|
7
9
|
* the function whose settings are changing.
|
|
10
|
+
*
|
|
11
|
+
* A request changing the execution role hands Lambda a Role, and is asked
|
|
12
|
+
* separately whether it may pass that one. A request leaving the role alone
|
|
13
|
+
* passes nothing and is asked nothing.
|
|
8
14
|
*/
|
|
9
15
|
export class UpdateFunctionConfigurationAuthorizer {
|
|
10
16
|
static action = "lambda:UpdateFunctionConfiguration";
|
|
11
17
|
iam;
|
|
18
|
+
passRole;
|
|
12
19
|
constructor(properties) {
|
|
13
20
|
this.iam = properties.iam;
|
|
21
|
+
this.passRole = new SimIamPassRoleAuthorizer({
|
|
22
|
+
iam: properties.iam,
|
|
23
|
+
passedToService: simLambdaServicePrincipal,
|
|
24
|
+
});
|
|
14
25
|
}
|
|
15
26
|
/**
|
|
16
27
|
* Ensure the caller may change the settings of the function with the given
|
|
17
|
-
* ARN.
|
|
28
|
+
* ARN, and may hand Lambda an execution role the request replaces it with.
|
|
18
29
|
*
|
|
19
30
|
* The caller is passed through unchanged so sim IAM can distinguish an
|
|
20
31
|
* omitted caller, which defaults to Account root, from an explicit anonymous
|
|
21
32
|
* caller.
|
|
22
33
|
*/
|
|
23
|
-
authorize(functionArn, caller) {
|
|
34
|
+
authorize(functionArn, roleArn, caller) {
|
|
24
35
|
const decision = this.iam.authorize({
|
|
25
36
|
action: UpdateFunctionConfigurationAuthorizer.action,
|
|
26
37
|
resource: functionArn,
|
|
@@ -34,5 +45,6 @@ export class UpdateFunctionConfigurationAuthorizer {
|
|
|
34
45
|
resource: functionArn,
|
|
35
46
|
});
|
|
36
47
|
}
|
|
48
|
+
this.passRole.authorize(roleArn, caller);
|
|
37
49
|
}
|
|
38
50
|
}
|
|
@@ -36,7 +36,7 @@ export class UpdateFunctionConfigurationCommandHandler {
|
|
|
36
36
|
// Allow for potential non-deterministic sequencing of async events.
|
|
37
37
|
await this.background.sequence();
|
|
38
38
|
const functionName = simLambdaUnqualifiedFunctionOf(name);
|
|
39
|
-
this.authorizer.authorize(this.functions.functionArn(functionName), options?.caller);
|
|
39
|
+
this.authorizer.authorize(this.functions.functionArn(functionName), update.roleArn, options?.caller);
|
|
40
40
|
const simFunction = this.functions.require(functionName);
|
|
41
41
|
simFunction.updateConfiguration(update);
|
|
42
42
|
if (update.environmentVariables !== undefined) {
|
|
@@ -55,13 +55,22 @@ export declare class SimLambdaFunctionLogging {
|
|
|
55
55
|
outputSink(): SimLambdaOutputSink | undefined;
|
|
56
56
|
/**
|
|
57
57
|
* Run an invocation, recording whatever it left unterminated once it is
|
|
58
|
-
* over.
|
|
58
|
+
* over, and the error it ended in when it ended in one.
|
|
59
59
|
*
|
|
60
60
|
* The flush happens whether the handler returned or threw, because a handler
|
|
61
61
|
* that logged and then failed is the one a test most wants to read the logs
|
|
62
62
|
* of, and real Lambda records the output either way.
|
|
63
63
|
*/
|
|
64
64
|
around<T>(run: () => Promise<T>): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Record an invocation that ended in an error nothing caught, as real
|
|
67
|
+
* Lambda's runtime records one.
|
|
68
|
+
*
|
|
69
|
+
* The caller still gets the error: an Invoke answers with `FunctionError`
|
|
70
|
+
* and the trace in its payload as before, and this only puts the same
|
|
71
|
+
* failure in the place code goes looking for it.
|
|
72
|
+
*/
|
|
73
|
+
private recordInvokeError;
|
|
65
74
|
private coldStart;
|
|
66
75
|
}
|
|
67
76
|
export {};
|