@kensio/yulin 1.20.16 → 1.20.17
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/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 +8 -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 +5 -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 +25 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
- package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -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-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 +27 -0
- package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -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/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +8 -7
- package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -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 +50 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -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/update-distribution/update-distribution.handler.d.ts +2 -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-policies.d.ts +28 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -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 +6 -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 +2 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -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-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/sim-cf-distribution-configuration-state.d.ts +3 -1
- package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -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/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/sdk/sim-cloudfront-sdk-command-router.js +12 -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-commands.d.ts +8 -12
- package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
- package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
- package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
- package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
- package/dist/service/cloudfront/sim-cloudfront.js +22 -25
- 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 +33 -2
- package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -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 +87 -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 +11 -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/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 +6 -4
- 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 +15 -9
- package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
- 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/cloudformation/README.md +196 -11
- package/docs/services/cloudfront/README.md +230 -6
- 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 +20 -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 +7 -2
- package/docs/services/lambda/README.md +76 -2
- package/docs/services/logs/README.md +16 -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 +40 -16
- 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
|
@@ -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 {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { simLambdaInvokeErrorLine } from "./sim-lambda-invoke-error-log.js";
|
|
1
2
|
import { SimLambdaLogWriter } from "./sim-lambda-log-writer.js";
|
|
2
3
|
import { simLambdaLogGroupName, simLambdaLogStreamName, } from "./sim-lambda-log-stream-name.js";
|
|
3
4
|
/**
|
|
@@ -62,7 +63,7 @@ export class SimLambdaFunctionLogging {
|
|
|
62
63
|
}
|
|
63
64
|
/**
|
|
64
65
|
* Run an invocation, recording whatever it left unterminated once it is
|
|
65
|
-
* over.
|
|
66
|
+
* over, and the error it ended in when it ended in one.
|
|
66
67
|
*
|
|
67
68
|
* The flush happens whether the handler returned or threw, because a handler
|
|
68
69
|
* that logged and then failed is the one a test most wants to read the logs
|
|
@@ -72,10 +73,33 @@ export class SimLambdaFunctionLogging {
|
|
|
72
73
|
try {
|
|
73
74
|
return await run();
|
|
74
75
|
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.recordInvokeError(error);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
75
80
|
finally {
|
|
76
81
|
this.#writer?.flush();
|
|
77
82
|
}
|
|
78
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Record an invocation that ended in an error nothing caught, as real
|
|
86
|
+
* Lambda's runtime records one.
|
|
87
|
+
*
|
|
88
|
+
* The caller still gets the error: an Invoke answers with `FunctionError`
|
|
89
|
+
* and the trace in its payload as before, and this only puts the same
|
|
90
|
+
* failure in the place code goes looking for it.
|
|
91
|
+
*/
|
|
92
|
+
recordInvokeError(error) {
|
|
93
|
+
const writer = this.#writer;
|
|
94
|
+
if (writer === undefined) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Whatever the handler wrote without closing the line is a line of its
|
|
98
|
+
// own. A handler that printed half a line before failing would otherwise
|
|
99
|
+
// have the error appended to it, where a filter for the error misses it.
|
|
100
|
+
writer.flush();
|
|
101
|
+
writer.write(simLambdaInvokeErrorLine(error));
|
|
102
|
+
}
|
|
79
103
|
coldStart() {
|
|
80
104
|
const logStreamName = simLambdaLogStreamName(this.#clock);
|
|
81
105
|
const logs = this.#logs;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What real Lambda writes to a function's log group when an invocation ends in
|
|
3
|
+
* an error nothing caught.
|
|
4
|
+
*
|
|
5
|
+
* The runtime prints `ERROR Invoke Error` and a JSON document holding the
|
|
6
|
+
* error's type, its message and its stack, one array element per frame. The
|
|
7
|
+
* whole document is one line. CloudWatch Logs records a line as an event, so a
|
|
8
|
+
* filter matching the message finds every frame with it.
|
|
9
|
+
*
|
|
10
|
+
* The keys are the ones the runtime uses. The log line says `stack` where the
|
|
11
|
+
* Invoke response payload says `trace`, and the two hold the same frames.
|
|
12
|
+
*/
|
|
13
|
+
export declare function simLambdaInvokeErrorLine(error: unknown): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { functionErrorDocument } from "../../command/invoke/invoke-payload.js";
|
|
2
|
+
/**
|
|
3
|
+
* What real Lambda writes to a function's log group when an invocation ends in
|
|
4
|
+
* an error nothing caught.
|
|
5
|
+
*
|
|
6
|
+
* The runtime prints `ERROR Invoke Error` and a JSON document holding the
|
|
7
|
+
* error's type, its message and its stack, one array element per frame. The
|
|
8
|
+
* whole document is one line. CloudWatch Logs records a line as an event, so a
|
|
9
|
+
* filter matching the message finds every frame with it.
|
|
10
|
+
*
|
|
11
|
+
* The keys are the ones the runtime uses. The log line says `stack` where the
|
|
12
|
+
* Invoke response payload says `trace`, and the two hold the same frames.
|
|
13
|
+
*/
|
|
14
|
+
export function simLambdaInvokeErrorLine(error) {
|
|
15
|
+
const { errorType, errorMessage, trace } = functionErrorDocument(error);
|
|
16
|
+
const document = JSON.stringify({ errorType, errorMessage, stack: trace });
|
|
17
|
+
return `ERROR Invoke Error ${document}\n`;
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal Lambda holds an execution role as.
|
|
3
|
+
*
|
|
4
|
+
* An execution role's trust policy names it, and so does the
|
|
5
|
+
* `iam:PassedToService` condition a deploy policy is commonly written with.
|
|
6
|
+
*/
|
|
7
|
+
export declare const simLambdaServicePrincipal = "lambda.amazonaws.com";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The service principal Lambda holds an execution role as.
|
|
3
|
+
*
|
|
4
|
+
* An execution role's trust policy names it, and so does the
|
|
5
|
+
* `iam:PassedToService` condition a deploy policy is commonly written with.
|
|
6
|
+
*/
|
|
7
|
+
export const simLambdaServicePrincipal = "lambda.amazonaws.com";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
|
|
2
|
+
import type { SimAwsAccountRegionScope } from "../../../aws/sim-aws-account-region-scope.js";
|
|
3
|
+
import type { SimLogsAuthorizer } from "../../command/authorize/sim-logs-authorizer.js";
|
|
4
|
+
interface SimCfnDeliveryAuthorizationProperties {
|
|
5
|
+
readonly authorizer: SimLogsAuthorizer;
|
|
6
|
+
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The permissions a CloudFormation delivery Resource handler checks on top of
|
|
10
|
+
* the API call it makes.
|
|
11
|
+
*
|
|
12
|
+
* Each of the three handlers reads its own resource back by name, with
|
|
13
|
+
* `GetDeliverySource`, `GetDeliveryDestination` or `GetDelivery`. The read
|
|
14
|
+
* comes before the write, and an execution Role denied it is refused before the
|
|
15
|
+
* resource exists. The three `Describe` listings belong to the SDK operations
|
|
16
|
+
* of those names, and no handler goes near one. A policy written from a real
|
|
17
|
+
* CloudFormation refusal therefore grants the `Get` action, and that policy has
|
|
18
|
+
* to deploy here.
|
|
19
|
+
*
|
|
20
|
+
* The checks sit together because they are the whole of what a deployment's
|
|
21
|
+
* caller meets before the delivery commands take over.
|
|
22
|
+
*/
|
|
23
|
+
export declare class SimCfnDeliveryAuthorization {
|
|
24
|
+
#private;
|
|
25
|
+
constructor(properties: SimCfnDeliveryAuthorizationProperties);
|
|
26
|
+
/**
|
|
27
|
+
* Authorize creating an AWS::Logs::DeliverySource.
|
|
28
|
+
*
|
|
29
|
+
* The source need not be there. CloudFormation reads the name it is about to
|
|
30
|
+
* take, and IAM decides the request before CloudWatch Logs answers it.
|
|
31
|
+
*/
|
|
32
|
+
authorizeDeliverySourceCreate(name: string, caller?: SimAwsCaller): void;
|
|
33
|
+
/**
|
|
34
|
+
* Authorize creating an AWS::Logs::DeliveryDestination.
|
|
35
|
+
*/
|
|
36
|
+
authorizeDeliveryDestinationCreate(name: string, caller?: SimAwsCaller): void;
|
|
37
|
+
/**
|
|
38
|
+
* Authorize creating an AWS::Logs::Delivery.
|
|
39
|
+
*
|
|
40
|
+
* A delivery carries an identifier CloudWatch Logs has yet to issue. The read
|
|
41
|
+
* is authorized against every delivery in the scope, the way `CreateDelivery`
|
|
42
|
+
* itself is.
|
|
43
|
+
*/
|
|
44
|
+
authorizeDeliveryCreate(caller?: SimAwsCaller): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { simLogsAnyDeliveryArn, simLogsDeliveryDestinationArn, simLogsDeliverySourceArn, } from "../../delivery/sim-logs-delivery-arn.js";
|
|
2
|
+
/**
|
|
3
|
+
* The permissions a CloudFormation delivery Resource handler checks on top of
|
|
4
|
+
* the API call it makes.
|
|
5
|
+
*
|
|
6
|
+
* Each of the three handlers reads its own resource back by name, with
|
|
7
|
+
* `GetDeliverySource`, `GetDeliveryDestination` or `GetDelivery`. The read
|
|
8
|
+
* comes before the write, and an execution Role denied it is refused before the
|
|
9
|
+
* resource exists. The three `Describe` listings belong to the SDK operations
|
|
10
|
+
* of those names, and no handler goes near one. A policy written from a real
|
|
11
|
+
* CloudFormation refusal therefore grants the `Get` action, and that policy has
|
|
12
|
+
* to deploy here.
|
|
13
|
+
*
|
|
14
|
+
* The checks sit together because they are the whole of what a deployment's
|
|
15
|
+
* caller meets before the delivery commands take over.
|
|
16
|
+
*/
|
|
17
|
+
export class SimCfnDeliveryAuthorization {
|
|
18
|
+
#authorizer;
|
|
19
|
+
#scope;
|
|
20
|
+
constructor(properties) {
|
|
21
|
+
this.#authorizer = properties.authorizer;
|
|
22
|
+
this.#scope = properties.accountRegionScope;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Authorize creating an AWS::Logs::DeliverySource.
|
|
26
|
+
*
|
|
27
|
+
* The source need not be there. CloudFormation reads the name it is about to
|
|
28
|
+
* take, and IAM decides the request before CloudWatch Logs answers it.
|
|
29
|
+
*/
|
|
30
|
+
authorizeDeliverySourceCreate(name, caller) {
|
|
31
|
+
this.#authorizer.authorizeResource("logs:GetDeliverySource", simLogsDeliverySourceArn(this.#scope, name), caller);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Authorize creating an AWS::Logs::DeliveryDestination.
|
|
35
|
+
*/
|
|
36
|
+
authorizeDeliveryDestinationCreate(name, caller) {
|
|
37
|
+
this.#authorizer.authorizeResource("logs:GetDeliveryDestination", simLogsDeliveryDestinationArn(this.#scope, name), caller);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Authorize creating an AWS::Logs::Delivery.
|
|
41
|
+
*
|
|
42
|
+
* A delivery carries an identifier CloudWatch Logs has yet to issue. The read
|
|
43
|
+
* is authorized against every delivery in the scope, the way `CreateDelivery`
|
|
44
|
+
* itself is.
|
|
45
|
+
*/
|
|
46
|
+
authorizeDeliveryCreate(caller) {
|
|
47
|
+
this.#authorizer.authorizeResource("logs:GetDelivery", simLogsAnyDeliveryArn(this.#scope), caller);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -3,8 +3,10 @@ import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template
|
|
|
3
3
|
import type { SimLogsDelivery } from "../../delivery/sim-logs-delivery.js";
|
|
4
4
|
import type { SimLogs } from "../../sim-logs.js";
|
|
5
5
|
import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
|
|
6
|
+
import type { SimCfnDeliveryAuthorization } from "./sim-cfn-delivery-authorization.js";
|
|
6
7
|
interface SimCfnDeliveryCreatorProperties {
|
|
7
8
|
readonly logs: SimLogs;
|
|
9
|
+
readonly authorization: SimCfnDeliveryAuthorization;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Creates simulated deliveries from AWS::Logs::Delivery Resources.
|
|
@@ -12,6 +14,9 @@ interface SimCfnDeliveryCreatorProperties {
|
|
|
12
14
|
* A delivery is the join between a source and a destination, and both have to
|
|
13
15
|
* be deployed before it. A template gets that ordering from naming them
|
|
14
16
|
* through `Ref` and `Fn::GetAtt`.
|
|
17
|
+
*
|
|
18
|
+
* The handler reads deliveries back before it creates one, and that read is
|
|
19
|
+
* what a CloudFormation execution Role needs `logs:GetDelivery` for.
|
|
15
20
|
*/
|
|
16
21
|
export declare class SimCfnDeliveryCreator {
|
|
17
22
|
#private;
|
|
@@ -17,11 +17,16 @@ const actedOnProperties = new Set([
|
|
|
17
17
|
* A delivery is the join between a source and a destination, and both have to
|
|
18
18
|
* be deployed before it. A template gets that ordering from naming them
|
|
19
19
|
* through `Ref` and `Fn::GetAtt`.
|
|
20
|
+
*
|
|
21
|
+
* The handler reads deliveries back before it creates one, and that read is
|
|
22
|
+
* what a CloudFormation execution Role needs `logs:GetDelivery` for.
|
|
20
23
|
*/
|
|
21
24
|
export class SimCfnDeliveryCreator {
|
|
22
25
|
#logs;
|
|
26
|
+
#authorization;
|
|
23
27
|
constructor(properties) {
|
|
24
28
|
this.#logs = properties.logs;
|
|
29
|
+
this.#authorization = properties.authorization;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* Create a delivery from an AWS::Logs::Delivery Resource.
|
|
@@ -35,6 +40,7 @@ export class SimCfnDeliveryCreator {
|
|
|
35
40
|
unsimulatedReasons: deliveryUnsimulatedReasons,
|
|
36
41
|
});
|
|
37
42
|
reader.recordIgnoredProperties();
|
|
43
|
+
this.#authorization.authorizeDeliveryCreate(options?.caller);
|
|
38
44
|
const created = await this.#logs.createDelivery({ input: simCfnDeliveryInput(reader) }, options);
|
|
39
45
|
const delivery = this.#logs.findDelivery(created.delivery?.id ?? "");
|
|
40
46
|
assertDefined(delivery, `sim CloudWatch Logs delivery for CloudFormation Resource ${resource.logicalId}`);
|
|
@@ -3,8 +3,10 @@ import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template
|
|
|
3
3
|
import type { SimLogsDeliveryDestination } from "../../delivery/sim-logs-delivery-destination.js";
|
|
4
4
|
import type { SimLogs } from "../../sim-logs.js";
|
|
5
5
|
import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
|
|
6
|
+
import type { SimCfnDeliveryAuthorization } from "./sim-cfn-delivery-authorization.js";
|
|
6
7
|
interface SimCfnDeliveryDestinationCreatorProperties {
|
|
7
8
|
readonly logs: SimLogs;
|
|
9
|
+
readonly authorization: SimCfnDeliveryAuthorization;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Creates simulated delivery destinations from AWS::Logs::DeliveryDestination
|
|
@@ -14,6 +16,9 @@ interface SimCfnDeliveryDestinationCreatorProperties {
|
|
|
14
16
|
* changes it replaces the Resource. Sim CloudFormation replaces a Resource
|
|
15
17
|
* whose template entry changed at all, which lands on the same behaviour
|
|
16
18
|
* without the destination having to say so.
|
|
19
|
+
*
|
|
20
|
+
* The handler reads the destination back before it puts one, and that read is
|
|
21
|
+
* what a CloudFormation execution Role needs `logs:GetDeliveryDestination` for.
|
|
17
22
|
*/
|
|
18
23
|
export declare class SimCfnDeliveryDestinationCreator {
|
|
19
24
|
#private;
|
|
@@ -15,11 +15,16 @@ const actedOnProperties = new Set([
|
|
|
15
15
|
* changes it replaces the Resource. Sim CloudFormation replaces a Resource
|
|
16
16
|
* whose template entry changed at all, which lands on the same behaviour
|
|
17
17
|
* without the destination having to say so.
|
|
18
|
+
*
|
|
19
|
+
* The handler reads the destination back before it puts one, and that read is
|
|
20
|
+
* what a CloudFormation execution Role needs `logs:GetDeliveryDestination` for.
|
|
18
21
|
*/
|
|
19
22
|
export class SimCfnDeliveryDestinationCreator {
|
|
20
23
|
#logs;
|
|
24
|
+
#authorization;
|
|
21
25
|
constructor(properties) {
|
|
22
26
|
this.#logs = properties.logs;
|
|
27
|
+
this.#authorization = properties.authorization;
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* Create a delivery destination from a CloudFormation Resource.
|
|
@@ -34,6 +39,7 @@ export class SimCfnDeliveryDestinationCreator {
|
|
|
34
39
|
});
|
|
35
40
|
const name = reader.requiredString("Name");
|
|
36
41
|
reader.recordIgnoredProperties();
|
|
42
|
+
this.#authorization.authorizeDeliveryDestinationCreate(name, options?.caller);
|
|
37
43
|
await this.#logs.putDeliveryDestination({
|
|
38
44
|
input: {
|
|
39
45
|
name,
|
|
@@ -3,8 +3,10 @@ import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template
|
|
|
3
3
|
import type { SimLogsDeliverySource } from "../../delivery/sim-logs-delivery-source.js";
|
|
4
4
|
import type { SimLogs } from "../../sim-logs.js";
|
|
5
5
|
import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
|
|
6
|
+
import type { SimCfnDeliveryAuthorization } from "./sim-cfn-delivery-authorization.js";
|
|
6
7
|
interface SimCfnDeliverySourceCreatorProperties {
|
|
7
8
|
readonly logs: SimLogs;
|
|
9
|
+
readonly authorization: SimCfnDeliveryAuthorization;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Creates simulated delivery sources from AWS::Logs::DeliverySource Resources.
|
|
@@ -13,6 +15,9 @@ interface SimCfnDeliverySourceCreatorProperties {
|
|
|
13
15
|
* store, so a template hits the same refusals an SDK caller would: a
|
|
14
16
|
* distribution that already has a delivery source, and a CloudFront source
|
|
15
17
|
* declared in a stack outside us-east-1.
|
|
18
|
+
*
|
|
19
|
+
* The handler reads the source back before it puts one, and that read is what
|
|
20
|
+
* a CloudFormation execution Role needs `logs:GetDeliverySource` for.
|
|
16
21
|
*/
|
|
17
22
|
export declare class SimCfnDeliverySourceCreator {
|
|
18
23
|
#private;
|
|
@@ -10,11 +10,16 @@ const actedOnProperties = new Set(["Name", "ResourceArn", "LogType"]);
|
|
|
10
10
|
* store, so a template hits the same refusals an SDK caller would: a
|
|
11
11
|
* distribution that already has a delivery source, and a CloudFront source
|
|
12
12
|
* declared in a stack outside us-east-1.
|
|
13
|
+
*
|
|
14
|
+
* The handler reads the source back before it puts one, and that read is what
|
|
15
|
+
* a CloudFormation execution Role needs `logs:GetDeliverySource` for.
|
|
13
16
|
*/
|
|
14
17
|
export class SimCfnDeliverySourceCreator {
|
|
15
18
|
#logs;
|
|
19
|
+
#authorization;
|
|
16
20
|
constructor(properties) {
|
|
17
21
|
this.#logs = properties.logs;
|
|
22
|
+
this.#authorization = properties.authorization;
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
20
25
|
* Create a delivery source from an AWS::Logs::DeliverySource Resource.
|
|
@@ -29,6 +34,7 @@ export class SimCfnDeliverySourceCreator {
|
|
|
29
34
|
});
|
|
30
35
|
const name = reader.requiredString("Name");
|
|
31
36
|
reader.recordIgnoredProperties();
|
|
37
|
+
this.#authorization.authorizeDeliverySourceCreate(name, options?.caller);
|
|
32
38
|
await this.#logs.putDeliverySource({
|
|
33
39
|
input: {
|
|
34
40
|
name,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
|
|
1
2
|
import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
|
|
2
3
|
import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
|
|
3
4
|
import type { SimLogsLogGroup } from "../../group/sim-logs-log-group.js";
|
|
@@ -15,6 +16,12 @@ interface SimCfnLogGroupCreatorProperties {
|
|
|
15
16
|
* ordinary for the function to have logged first: real CloudFormation fails
|
|
16
17
|
* that deploy, which is a genuine misconfiguration in an account and pure
|
|
17
18
|
* noise in a test whose function ran during setup.
|
|
19
|
+
*
|
|
20
|
+
* The commands are still the ones an SDK caller would have used. The
|
|
21
|
+
* deployment's caller is authorized for `logs:CreateLogGroup` and
|
|
22
|
+
* `logs:PutRetentionPolicy`, as it is on a real deploy. A group that is
|
|
23
|
+
* already there changes what happens after that decision (the refusal is
|
|
24
|
+
* caught) and never whether one is made.
|
|
18
25
|
*/
|
|
19
26
|
export declare class SimCfnLogGroupCreator {
|
|
20
27
|
#private;
|
|
@@ -22,12 +29,12 @@ export declare class SimCfnLogGroupCreator {
|
|
|
22
29
|
/**
|
|
23
30
|
* Create a log group from an AWS::Logs::LogGroup Resource.
|
|
24
31
|
*/
|
|
25
|
-
create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord): SimLogsLogGroup
|
|
32
|
+
create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord, options?: SimCfnResourceCallerOptions): Promise<SimLogsLogGroup>;
|
|
26
33
|
/**
|
|
27
34
|
* Delete a log group created from an AWS::Logs::LogGroup Resource.
|
|
28
35
|
*
|
|
29
36
|
* The events go with it, as they do in an account.
|
|
30
37
|
*/
|
|
31
|
-
delete(group: SimLogsLogGroup): void
|
|
38
|
+
delete(group: SimLogsLogGroup, options?: SimCfnResourceCallerOptions): Promise<void>;
|
|
32
39
|
}
|
|
33
40
|
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assertDefined } from "../../../../util/type-guard/defined.js";
|
|
2
|
+
import { SimLogsResourceAlreadyExistsException } from "../../error/sim-logs.error.js";
|
|
1
3
|
import { SimCfnLogGroupProperties } from "./sim-cfn-log-group-properties.js";
|
|
2
4
|
/**
|
|
3
5
|
* Creates simulated log groups from AWS::Logs::LogGroup Resources.
|
|
@@ -9,6 +11,12 @@ import { SimCfnLogGroupProperties } from "./sim-cfn-log-group-properties.js";
|
|
|
9
11
|
* ordinary for the function to have logged first: real CloudFormation fails
|
|
10
12
|
* that deploy, which is a genuine misconfiguration in an account and pure
|
|
11
13
|
* noise in a test whose function ran during setup.
|
|
14
|
+
*
|
|
15
|
+
* The commands are still the ones an SDK caller would have used. The
|
|
16
|
+
* deployment's caller is authorized for `logs:CreateLogGroup` and
|
|
17
|
+
* `logs:PutRetentionPolicy`, as it is on a real deploy. A group that is
|
|
18
|
+
* already there changes what happens after that decision (the refusal is
|
|
19
|
+
* caught) and never whether one is made.
|
|
12
20
|
*/
|
|
13
21
|
export class SimCfnLogGroupCreator {
|
|
14
22
|
#logs;
|
|
@@ -18,7 +26,7 @@ export class SimCfnLogGroupCreator {
|
|
|
18
26
|
/**
|
|
19
27
|
* Create a log group from an AWS::Logs::LogGroup Resource.
|
|
20
28
|
*/
|
|
21
|
-
create(resource, properties) {
|
|
29
|
+
async create(resource, properties, options) {
|
|
22
30
|
const logGroupProperties = new SimCfnLogGroupProperties({
|
|
23
31
|
resource,
|
|
24
32
|
properties,
|
|
@@ -26,8 +34,12 @@ export class SimCfnLogGroupCreator {
|
|
|
26
34
|
const logGroupName = logGroupProperties.logGroupName();
|
|
27
35
|
const retentionInDays = logGroupProperties.retentionInDays();
|
|
28
36
|
logGroupProperties.recordIgnoredProperties();
|
|
29
|
-
|
|
30
|
-
|
|
37
|
+
await this.#createOrAdopt(logGroupName, options);
|
|
38
|
+
if (retentionInDays !== undefined) {
|
|
39
|
+
await this.#logs.putRetentionPolicy({ input: { logGroupName, retentionInDays } }, options);
|
|
40
|
+
}
|
|
41
|
+
const group = this.#logs.findLogGroup(logGroupName);
|
|
42
|
+
assertDefined(group, `sim log group ${logGroupName} after CloudFormation creation`);
|
|
31
43
|
return group;
|
|
32
44
|
}
|
|
33
45
|
/**
|
|
@@ -35,7 +47,24 @@ export class SimCfnLogGroupCreator {
|
|
|
35
47
|
*
|
|
36
48
|
* The events go with it, as they do in an account.
|
|
37
49
|
*/
|
|
38
|
-
delete(group) {
|
|
39
|
-
this.#logs.
|
|
50
|
+
async delete(group, options) {
|
|
51
|
+
await this.#logs.deleteLogGroup({ input: { logGroupName: group.logGroupName } }, options);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Make the log group, or leave the one already under that name where it is.
|
|
55
|
+
*
|
|
56
|
+
* The refusal is the one `CreateLogGroup` answers a taken name with. It is
|
|
57
|
+
* raised after the caller has been authorized. A deployment denied
|
|
58
|
+
* `logs:CreateLogGroup` therefore fails whether or not the group is there.
|
|
59
|
+
*/
|
|
60
|
+
async #createOrAdopt(logGroupName, options) {
|
|
61
|
+
try {
|
|
62
|
+
await this.#logs.createLogGroup({ input: { logGroupName } }, options);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (!(error instanceof SimLogsResourceAlreadyExistsException)) {
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
40
69
|
}
|
|
41
70
|
}
|
|
@@ -17,7 +17,7 @@ export class SimLogsCfnResourceDeleter {
|
|
|
17
17
|
async delete(resourceTypeName, resource, options) {
|
|
18
18
|
switch (resourceTypeName) {
|
|
19
19
|
case "LogGroup": {
|
|
20
|
-
this.#creators.logGroups.delete(created(resource));
|
|
20
|
+
await this.#creators.logGroups.delete(created(resource), options);
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
case "DeliverySource": {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { SimCfnServiceResourceFactory } from "../../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
|
|
2
2
|
import type { SimCfnResource, SimCloudFormationResourceCreateContext, SimCloudFormationResourceDeleteContext } from "../../cloudformation/resource/sim-cfn-resource.js";
|
|
3
|
+
import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
|
|
4
|
+
import type { SimLogsAuthorizer } from "../command/authorize/sim-logs-authorizer.js";
|
|
3
5
|
import type { SimLogs } from "../sim-logs.js";
|
|
4
6
|
interface SimLogsCfnResourceFactoryProperties {
|
|
5
7
|
readonly logs: SimLogs;
|
|
8
|
+
readonly authorizer: SimLogsAuthorizer;
|
|
9
|
+
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
6
10
|
}
|
|
7
11
|
/**
|
|
8
12
|
* CloudFormation Resource factory for simulated CloudWatch Logs resources.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { simCfnResourceCallerOptions } from "../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
|
|
2
|
+
import { SimCfnDeliveryAuthorization } from "./delivery/sim-cfn-delivery-authorization.js";
|
|
2
3
|
import { SimCfnDeliveryCreator } from "./delivery/sim-cfn-delivery-creator.js";
|
|
3
4
|
import { SimCfnDeliveryDestinationCreator } from "./delivery/sim-cfn-delivery-destination-creator.js";
|
|
4
5
|
import { SimCfnDeliverySourceCreator } from "./delivery/sim-cfn-delivery-source-creator.js";
|
|
@@ -24,10 +25,14 @@ export class SimLogsCfnResourceFactory {
|
|
|
24
25
|
#deliveries;
|
|
25
26
|
#deleter;
|
|
26
27
|
constructor(properties) {
|
|
28
|
+
const delivery = {
|
|
29
|
+
logs: properties.logs,
|
|
30
|
+
authorization: new SimCfnDeliveryAuthorization(properties),
|
|
31
|
+
};
|
|
27
32
|
this.#logGroups = new SimCfnLogGroupCreator(properties);
|
|
28
|
-
this.#deliverySources = new SimCfnDeliverySourceCreator(
|
|
29
|
-
this.#deliveryDestinations = new SimCfnDeliveryDestinationCreator(
|
|
30
|
-
this.#deliveries = new SimCfnDeliveryCreator(
|
|
33
|
+
this.#deliverySources = new SimCfnDeliverySourceCreator(delivery);
|
|
34
|
+
this.#deliveryDestinations = new SimCfnDeliveryDestinationCreator(delivery);
|
|
35
|
+
this.#deliveries = new SimCfnDeliveryCreator(delivery);
|
|
31
36
|
this.#deleter = new SimLogsCfnResourceDeleter({
|
|
32
37
|
logGroups: this.#logGroups,
|
|
33
38
|
deliverySources: this.#deliverySources,
|
|
@@ -44,7 +49,7 @@ export class SimLogsCfnResourceFactory {
|
|
|
44
49
|
const options = simCfnResourceCallerOptions(context.caller);
|
|
45
50
|
switch (resourceTypeName) {
|
|
46
51
|
case "LogGroup": {
|
|
47
|
-
return this.#logGroups.create(resource, values);
|
|
52
|
+
return await this.#logGroups.create(resource, values, options);
|
|
48
53
|
}
|
|
49
54
|
case "DeliverySource": {
|
|
50
55
|
return await this.#deliverySources.create(resource, values, options);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type BackgroundScheduler } from "../../util/background/background.js";
|
|
2
2
|
import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
|
|
3
3
|
import type { SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
|
|
4
|
+
import { SimLogsAuthorizer } from "./command/authorize/sim-logs-authorizer.js";
|
|
4
5
|
import { SimLogsDeliveryCommands } from "./command/delivery/sim-logs-delivery-commands.js";
|
|
5
6
|
import { SimLogsDeliveryDestinationCommands } from "./command/delivery/sim-logs-delivery-destination-commands.js";
|
|
6
7
|
import { SimLogsDeliverySourceCommands } from "./command/delivery/sim-logs-delivery-source-commands.js";
|
|
@@ -45,6 +46,8 @@ export interface SimLogsProperties {
|
|
|
45
46
|
* somewhere it is not competing for room with them.
|
|
46
47
|
*/
|
|
47
48
|
export declare class SimLogsCommands {
|
|
49
|
+
readonly authorizer: SimLogsAuthorizer;
|
|
50
|
+
readonly accountRegionScope: SimAwsAccountRegionScope;
|
|
48
51
|
readonly groups: SimLogsLogGroupStore;
|
|
49
52
|
readonly logGroups: SimLogsLogGroupCommands;
|
|
50
53
|
readonly retention: SimLogsRetentionCommands;
|