@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.
Files changed (312) hide show
  1. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  2. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  3. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
  4. package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
  5. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
  6. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  7. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
  8. package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
  9. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  10. package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
  11. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  12. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  13. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  14. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  15. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  16. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  17. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  18. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  19. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  20. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  21. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  22. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  23. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  24. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  25. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  26. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  27. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  28. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  29. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  30. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  31. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  32. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  33. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  34. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  35. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  36. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  37. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  38. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  39. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +25 -0
  40. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
  41. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
  42. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -0
  43. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  44. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  45. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  46. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  47. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  48. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  49. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  50. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  51. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  52. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  53. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +27 -0
  54. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -0
  55. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  56. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  57. 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
  58. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -37
  59. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  60. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  61. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  62. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +50 -0
  63. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  64. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
  65. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  66. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  67. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  68. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  69. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  70. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  71. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  72. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  73. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  74. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  75. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  76. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  77. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  78. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  79. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  80. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  81. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  82. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  83. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  84. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  85. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +28 -0
  86. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -0
  87. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  88. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +6 -3
  89. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  90. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  91. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  92. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -2
  93. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  94. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  95. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  96. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  97. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +3 -1
  98. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  99. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  100. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  101. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  102. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  103. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  104. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  105. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  106. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  107. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  108. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +8 -12
  109. package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
  110. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
  111. package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
  112. package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
  113. package/dist/service/cloudfront/sim-cloudfront.js +22 -25
  114. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  115. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  116. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  117. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  118. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  119. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  120. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  121. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  122. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  123. package/dist/service/ecr/sim-ecr.js +16 -4
  124. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  125. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  126. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  127. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  128. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  129. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  130. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  131. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  132. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  133. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  134. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  135. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  136. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  137. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  138. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  139. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  140. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  141. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  142. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  143. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  144. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  145. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  146. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  147. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +33 -2
  148. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -2
  149. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  150. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  151. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  152. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  153. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
  154. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
  155. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
  156. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
  157. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +87 -0
  158. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  159. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
  160. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
  161. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  162. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  163. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  164. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  165. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
  166. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
  167. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
  168. package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
  169. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  170. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  171. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  172. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  173. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  174. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  175. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  176. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  177. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  178. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  179. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  180. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  181. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  182. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  183. package/dist/service/iam/error/sim-iam.error.js +13 -0
  184. package/dist/service/iam/index.d.ts +1 -0
  185. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  186. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  187. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  188. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  189. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
  190. package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
  191. package/dist/service/iam/sim-iam-account-parts.js +1 -0
  192. package/dist/service/iam/sim-iam.d.ts +12 -2
  193. package/dist/service/iam/sim-iam.js +12 -0
  194. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  195. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  196. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  197. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  198. package/dist/service/kms/command/sim-kms-request-options.d.ts +11 -0
  199. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  200. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  201. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  202. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  203. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  204. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  205. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  206. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  207. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  208. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  209. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  210. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  211. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  212. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  213. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  214. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  215. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  216. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  217. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  218. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  219. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  220. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  221. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  222. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  223. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  224. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  225. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  226. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  227. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  228. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  229. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  230. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  231. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  232. package/dist/service/logs/sim-logs-commands.js +4 -0
  233. package/dist/service/logs/sim-logs.js +6 -1
  234. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  235. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  236. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  237. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  238. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  239. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  240. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  241. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  242. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  243. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  244. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  245. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  246. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  247. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  248. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  249. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  250. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  251. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  252. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  253. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  254. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  255. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  256. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  257. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  258. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  259. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +6 -4
  260. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  261. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  262. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  263. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +15 -9
  264. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
  265. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  266. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  267. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  268. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  269. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  270. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  271. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  272. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  273. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  274. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  275. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  276. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  277. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  278. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
  279. package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
  280. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
  281. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
  282. package/dist/service/sts/sim-sts.d.ts +9 -0
  283. package/dist/service/sts/sim-sts.js +4 -0
  284. package/dist/util/memo/bounded-memo.d.ts +36 -0
  285. package/dist/util/memo/bounded-memo.js +58 -0
  286. package/docs/sdk/README.md +3 -1
  287. package/docs/services/cloudformation/README.md +196 -11
  288. package/docs/services/cloudfront/README.md +230 -6
  289. package/docs/services/cloudwatch/README.md +6 -4
  290. package/docs/services/cognito/README.md +8 -7
  291. package/docs/services/dynamodb/README.md +6 -5
  292. package/docs/services/ecs/README.md +20 -9
  293. package/docs/services/elbv2/README.md +6 -2
  294. package/docs/services/eventbridge/README.md +9 -1
  295. package/docs/services/firehose/README.md +9 -3
  296. package/docs/services/glue/README.md +6 -0
  297. package/docs/services/iam/README.md +322 -27
  298. package/docs/services/kinesis/README.md +3 -2
  299. package/docs/services/kms/README.md +7 -2
  300. package/docs/services/lambda/README.md +76 -2
  301. package/docs/services/logs/README.md +16 -2
  302. package/docs/services/s3/README.md +7 -2
  303. package/docs/services/scheduler/README.md +12 -4
  304. package/docs/services/secretsmanager/README.md +6 -3
  305. package/docs/services/ses/README.md +3 -1
  306. package/docs/services/sns/README.md +5 -5
  307. package/docs/services/sqs/README.md +5 -5
  308. package/docs/services/ssm/README.md +40 -16
  309. package/docs/services/stepfunctions/README.md +11 -2
  310. package/docs/services/wafv2/README.md +5 -3
  311. package/package.json +1 -1
  312. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -30,6 +30,8 @@ import { SimLogsServiceWriter } from "./write/sim-logs-service-writer.js";
30
30
  * somewhere it is not competing for room with them.
31
31
  */
32
32
  export class SimLogsCommands {
33
+ authorizer;
34
+ accountRegionScope;
33
35
  groups;
34
36
  logGroups;
35
37
  retention;
@@ -58,6 +60,8 @@ export class SimLogsCommands {
58
60
  accountRegionScope,
59
61
  background,
60
62
  });
63
+ this.authorizer = authorizer;
64
+ this.accountRegionScope = accountRegionScope;
61
65
  this.background = background;
62
66
  this.groups = groups;
63
67
  this.fanOut = fanOut;
@@ -22,10 +22,15 @@ import { SimLogsDeliveryOperations } from "./sim-logs-delivery-operations.js";
22
22
  export class SimLogs extends SimLogsDeliveryOperations {
23
23
  commands;
24
24
  #sdkRouter = new SimLogsSdkCommandRouter(this);
25
- #cfnFactory = new SimLogsCfnResourceFactory({ logs: this });
25
+ #cfnFactory;
26
26
  constructor(properties = {}) {
27
27
  super();
28
28
  this.commands = new SimLogsCommands(properties);
29
+ this.#cfnFactory = new SimLogsCfnResourceFactory({
30
+ logs: this,
31
+ authorizer: this.commands.authorizer,
32
+ accountRegionScope: this.commands.accountRegionScope,
33
+ });
29
34
  }
30
35
  /**
31
36
  * Find a log group by name.
@@ -22,8 +22,8 @@ export declare class SimCfnS3BucketCreator {
22
22
  */
23
23
  create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord, options?: SimCfnResourceCallerOptions): Promise<SimS3Bucket>;
24
24
  /**
25
- * A Resource without a BucketName is named after its logical id, rather than
26
- * the generated name real CloudFormation invents.
25
+ * A Resource without a BucketName gets the name CloudFormation generates for
26
+ * it, from the stack name and the logical ID.
27
27
  */
28
28
  private bucketNameForResource;
29
29
  }
@@ -1,4 +1,5 @@
1
1
  import { validateS3BucketName } from "../../bucket/validate/validate-s3-bucket-name.js";
2
+ import { simCfnS3BucketGeneratedName } from "./sim-cfn-s3-bucket-generated-name.js";
2
3
  import { assertDefined } from "../../../../util/type-guard/defined.js";
3
4
  import { SimCfnS3BucketConfigurator } from "./sim-cfn-s3-bucket-configurator.js";
4
5
  import { SimCfnS3BucketPropertyRules } from "./sim-cfn-s3-bucket-property-rules.js";
@@ -39,14 +40,14 @@ export class SimCfnS3BucketCreator {
39
40
  return bucket;
40
41
  }
41
42
  /**
42
- * A Resource without a BucketName is named after its logical id, rather than
43
- * the generated name real CloudFormation invents.
43
+ * A Resource without a BucketName gets the name CloudFormation generates for
44
+ * it, from the stack name and the logical ID.
44
45
  */
45
46
  bucketNameForResource(resource, properties) {
46
47
  const bucketName = properties["BucketName"];
47
48
  if (typeof bucketName === "string") {
48
49
  return bucketName;
49
50
  }
50
- return resource.logicalId.toLowerCase();
51
+ return simCfnS3BucketGeneratedName(resource);
51
52
  }
52
53
  }
@@ -0,0 +1,12 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ /**
3
+ * The name CloudFormation gives a Bucket whose template does not name it.
4
+ *
5
+ * Sixty-three characters is short for a name made of a stack name and a logical
6
+ * ID, so `SimCfnGeneratedResourceName` usually has to trim one. It is lower
7
+ * cased afterwards because a bucket name is lowercase and a stack name and a
8
+ * logical ID are usually not. Every character left is one a bucket name allows.
9
+ * A logical ID is alphanumeric, a stack name adds only hyphens, and the tail is
10
+ * hex.
11
+ */
12
+ export declare function simCfnS3BucketGeneratedName(resource: SimCfnResource): string;
@@ -0,0 +1,22 @@
1
+ import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
2
+ /**
3
+ * The longest name S3 accepts, which `validateS3BucketName` applies in full.
4
+ */
5
+ const maximumNameLength = 63;
6
+ /**
7
+ * The name CloudFormation gives a Bucket whose template does not name it.
8
+ *
9
+ * Sixty-three characters is short for a name made of a stack name and a logical
10
+ * ID, so `SimCfnGeneratedResourceName` usually has to trim one. It is lower
11
+ * cased afterwards because a bucket name is lowercase and a stack name and a
12
+ * logical ID are usually not. Every character left is one a bucket name allows.
13
+ * A logical ID is alphanumeric, a stack name adds only hyphens, and the tail is
14
+ * hex.
15
+ */
16
+ export function simCfnS3BucketGeneratedName(resource) {
17
+ return new SimCfnGeneratedResourceName({
18
+ stackName: resource.stackName,
19
+ logicalId: resource.logicalId,
20
+ maximumLength: maximumNameLength,
21
+ }).value.toLowerCase();
22
+ }
@@ -1,4 +1,4 @@
1
- import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-context-builder.js";
1
+ import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-input.js";
2
2
  import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
3
  /**
4
4
  * The resource policies sim IAM should evaluate for a request against a Bucket.
@@ -16,12 +16,21 @@ interface SimSchedulerAuthorizerProperties {
16
16
  * This is the caller's own authorization to manage schedules, and is a separate
17
17
  * question from whether a schedule's execution role may invoke its target. The
18
18
  * second is asked when the schedule fires, against the role rather than the
19
- * caller, which is why nothing about the target is consulted here.
19
+ * caller.
20
+ *
21
+ * A third question is asked here, about the same execution role. A schedule
22
+ * keeps the `Target.RoleArn` it is given and fires as it later, so the caller
23
+ * writing it needs `iam:PassRole` on that Role.
20
24
  */
21
25
  export declare class SimSchedulerAuthorizer {
22
26
  private readonly iam;
23
27
  private readonly callerIdentifier;
28
+ private readonly passRole;
24
29
  constructor(properties: SimSchedulerAuthorizerProperties);
30
+ /**
31
+ * Ensure the caller may hand Scheduler a schedule's execution role.
32
+ */
33
+ authorizePassRole(roleArn: string | undefined, options?: SimSchedulerRequestOptions): void;
25
34
  /**
26
35
  * Ensure the caller may perform an action on a resource, named by its ARN.
27
36
  *
@@ -1,4 +1,6 @@
1
+ import { SimIamPassRoleAuthorizer, simIamPassRoleDenialMessage, } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamCallerIdentifier } from "../../../iam/error/sim-iam-caller-identifier.js";
3
+ import { simSchedulerServicePrincipal } from "../../delivery/sim-scheduler-delivery.js";
2
4
  import { SimSchedulerAccessDeniedException } from "../../error/sim-scheduler.error.js";
3
5
  /**
4
6
  * The resource an action with no resource type authorizes against.
@@ -19,13 +21,29 @@ const noResource = "*";
19
21
  * This is the caller's own authorization to manage schedules, and is a separate
20
22
  * question from whether a schedule's execution role may invoke its target. The
21
23
  * second is asked when the schedule fires, against the role rather than the
22
- * caller, which is why nothing about the target is consulted here.
24
+ * caller.
25
+ *
26
+ * A third question is asked here, about the same execution role. A schedule
27
+ * keeps the `Target.RoleArn` it is given and fires as it later, so the caller
28
+ * writing it needs `iam:PassRole` on that Role.
23
29
  */
24
30
  export class SimSchedulerAuthorizer {
25
31
  iam;
26
32
  callerIdentifier = new SimIamCallerIdentifier();
33
+ passRole;
27
34
  constructor(properties) {
28
35
  this.iam = properties.iam;
36
+ this.passRole = new SimIamPassRoleAuthorizer({
37
+ iam: properties.iam,
38
+ passedToService: simSchedulerServicePrincipal,
39
+ denied: (denial) => new SimSchedulerAccessDeniedException(simIamPassRoleDenialMessage(denial)),
40
+ });
41
+ }
42
+ /**
43
+ * Ensure the caller may hand Scheduler a schedule's execution role.
44
+ */
45
+ authorizePassRole(roleArn, options) {
46
+ this.passRole.authorize(roleArn, options?.caller);
29
47
  }
30
48
  /**
31
49
  * Ensure the caller may perform an action on a resource, named by its ARN.
@@ -26,6 +26,7 @@ export class SimSchedulerCreateSchedule {
26
26
  const input = command.input;
27
27
  const requested = this.access.requested(input);
28
28
  this.access.authorize("scheduler:CreateSchedule", requested, options);
29
+ this.access.authorizePassRole(input, options);
29
30
  this.access.requireGroup(requested.groupName);
30
31
  if (this.schedules.find(requested.groupName, requested.name.value) !==
31
32
  undefined) {
@@ -5,6 +5,7 @@ import type { SimSchedulerSchedule } from "../../schedule/sim-scheduler-schedule
5
5
  import type { SimSchedulerScheduleStore } from "../../schedule/sim-scheduler-schedule-store.js";
6
6
  import type { SimSchedulerAuthorizer } from "../authorize/sim-scheduler-authorizer.js";
7
7
  import type { SimSchedulerRequestOptions } from "../sim-scheduler-request-options.js";
8
+ import type { SimSchedulerScheduleInput } from "./schedule.command.js";
8
9
  /**
9
10
  * Which schedule a request names, in which group.
10
11
  */
@@ -44,6 +45,13 @@ export declare class SimSchedulerScheduleAccess {
44
45
  * exist.
45
46
  */
46
47
  authorize(action: string, requested: SimSchedulerRequestedSchedule, options?: SimSchedulerRequestOptions): void;
48
+ /**
49
+ * Ensure the caller may hand Scheduler the execution role a request names.
50
+ *
51
+ * A schedule fires as its `Target.RoleArn` long after the request that wrote
52
+ * it, so writing one is a hand-over of that Role.
53
+ */
54
+ authorizePassRole(input: SimSchedulerScheduleInput, options?: SimSchedulerRequestOptions): void;
47
55
  /**
48
56
  * Ensure the group a request names is there, which AWS requires of every
49
57
  * request naming one.
@@ -34,6 +34,15 @@ export class SimSchedulerScheduleAccess {
34
34
  authorize(action, requested, options) {
35
35
  this.authorizer.authorizeResource(action, this.arnFor(requested), options);
36
36
  }
37
+ /**
38
+ * Ensure the caller may hand Scheduler the execution role a request names.
39
+ *
40
+ * A schedule fires as its `Target.RoleArn` long after the request that wrote
41
+ * it, so writing one is a hand-over of that Role.
42
+ */
43
+ authorizePassRole(input, options) {
44
+ this.authorizer.authorizePassRole(input.Target?.RoleArn, options);
45
+ }
37
46
  /**
38
47
  * Ensure the group a request names is there, which AWS requires of every
39
48
  * request naming one.
@@ -27,6 +27,7 @@ export class SimSchedulerUpdateSchedule {
27
27
  const input = command.input;
28
28
  const existing = this.access.require("scheduler:UpdateSchedule", input, options);
29
29
  const requested = this.access.requested(input);
30
+ this.access.authorizePassRole(input, options);
30
31
  // The creation date survives a replacement, because AWS does not consider
31
32
  // an updated schedule to be a new one.
32
33
  const schedule = this.writer.write(input, requested, existing.creationDate);
@@ -0,0 +1,15 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ /**
3
+ * The name CloudFormation gives a secret whose template does not name it.
4
+ *
5
+ * Five hundred and twelve characters is long enough that a stack name and a
6
+ * logical ID rarely reach it, so `SimCfnGeneratedResourceName` seldom has to
7
+ * trim one. The case is left alone, since Secrets Manager keeps a name as it
8
+ * was given, and every character a stack name or a logical ID is made of is one
9
+ * a secret name allows.
10
+ *
11
+ * Real Secrets Manager appends six random characters of its own to a secret's
12
+ * ARN whatever the name is. A template reading the ARN back reads it off the
13
+ * Resource either way.
14
+ */
15
+ export declare function simCfnSecretsManagerGeneratedName(resource: SimCfnResource): string;
@@ -0,0 +1,22 @@
1
+ import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
2
+ import { maximumSimSecretsManagerNameLength } from "../../secret/sim-secrets-manager-secret-name.js";
3
+ /**
4
+ * The name CloudFormation gives a secret whose template does not name it.
5
+ *
6
+ * Five hundred and twelve characters is long enough that a stack name and a
7
+ * logical ID rarely reach it, so `SimCfnGeneratedResourceName` seldom has to
8
+ * trim one. The case is left alone, since Secrets Manager keeps a name as it
9
+ * was given, and every character a stack name or a logical ID is made of is one
10
+ * a secret name allows.
11
+ *
12
+ * Real Secrets Manager appends six random characters of its own to a secret's
13
+ * ARN whatever the name is. A template reading the ARN back reads it off the
14
+ * Resource either way.
15
+ */
16
+ export function simCfnSecretsManagerGeneratedName(resource) {
17
+ return new SimCfnGeneratedResourceName({
18
+ stackName: resource.stackName,
19
+ logicalId: resource.logicalId,
20
+ maximumLength: maximumSimSecretsManagerNameLength,
21
+ }).value;
22
+ }
@@ -10,8 +10,8 @@ interface SimCfnSecretsManagerSecretPropertiesProperties {
10
10
  * the secret creator needs.
11
11
  *
12
12
  * Keeping the property-shape rules here leaves the creator to do nothing but
13
- * call CreateSecret, and puts the one rule worth stating in a single place:
14
- * a template supplies a value or asks for one to be generated, never both.
13
+ * call CreateSecret. Which of the two value properties wins is its own
14
+ * decision, and lives in `simCfnSecretsManagerSecretValue`.
15
15
  */
16
16
  export declare class SimCfnSecretsManagerSecretProperties {
17
17
  private readonly resource;
@@ -22,11 +22,8 @@ export declare class SimCfnSecretsManagerSecretProperties {
22
22
  /**
23
23
  * The secret name.
24
24
  *
25
- * An unnamed secret is named after its logical ID, as sim CloudFormation
26
- * names other unnamed resources. Real CloudFormation prefixes the stack
27
- * name and appends its own random characters, so a template relying on the
28
- * exact generated name would be relying on something it cannot predict
29
- * anyway.
25
+ * An unnamed secret is named after the stack and the logical ID, as
26
+ * CloudFormation names one.
30
27
  */
31
28
  name(): string;
32
29
  /**
@@ -43,11 +40,8 @@ export declare class SimCfnSecretsManagerSecretProperties {
43
40
  tags(): readonly SimSecretsManagerTag[] | undefined;
44
41
  /**
45
42
  * The value the secret's first version holds.
46
- *
47
- * Either the template supplies one or it asks for one to be generated.
48
43
  */
49
44
  secretString(): string;
50
45
  private string;
51
- private propertyError;
52
46
  }
53
47
  export {};
@@ -1,12 +1,14 @@
1
1
  import { SimCfnSecretsManagerPropertyParser } from "../sim-cfn-secrets-manager-property-parser.js";
2
2
  import { SimCfnSecretsManagerGenerateSecretStringParser } from "./sim-cfn-secrets-manager-generate-secret-string-parser.js";
3
+ import { simCfnSecretsManagerGeneratedName } from "./sim-cfn-secrets-manager-generated-name.js";
4
+ import { simCfnSecretsManagerSecretValue } from "./sim-cfn-secrets-manager-secret-value.js";
3
5
  /**
4
6
  * Reads AWS::SecretsManager::Secret CloudFormation properties into the shape
5
7
  * the secret creator needs.
6
8
  *
7
9
  * Keeping the property-shape rules here leaves the creator to do nothing but
8
- * call CreateSecret, and puts the one rule worth stating in a single place:
9
- * a template supplies a value or asks for one to be generated, never both.
10
+ * call CreateSecret. Which of the two value properties wins is its own
11
+ * decision, and lives in `simCfnSecretsManagerSecretValue`.
10
12
  */
11
13
  export class SimCfnSecretsManagerSecretProperties {
12
14
  resource;
@@ -20,14 +22,12 @@ export class SimCfnSecretsManagerSecretProperties {
20
22
  /**
21
23
  * The secret name.
22
24
  *
23
- * An unnamed secret is named after its logical ID, as sim CloudFormation
24
- * names other unnamed resources. Real CloudFormation prefixes the stack
25
- * name and appends its own random characters, so a template relying on the
26
- * exact generated name would be relying on something it cannot predict
27
- * anyway.
25
+ * An unnamed secret is named after the stack and the logical ID, as
26
+ * CloudFormation names one.
28
27
  */
29
28
  name() {
30
- return (this.string(this.properties["Name"], "Name") ?? this.resource.logicalId);
29
+ return (this.string(this.properties["Name"], "Name") ??
30
+ simCfnSecretsManagerGeneratedName(this.resource));
31
31
  }
32
32
  /**
33
33
  * The secret Description.
@@ -49,33 +49,15 @@ export class SimCfnSecretsManagerSecretProperties {
49
49
  }
50
50
  /**
51
51
  * The value the secret's first version holds.
52
- *
53
- * Either the template supplies one or it asks for one to be generated.
54
52
  */
55
53
  secretString() {
56
- const supplied = this.string(this.properties["SecretString"], "SecretString");
57
- const generated = this.generateParser.parse(this.resource, this.properties["GenerateSecretString"]);
58
- if (supplied !== undefined && generated !== undefined) {
59
- throw this.propertyError("SecretString and GenerateSecretString cannot both be declared: " +
60
- "a secret either holds the value the template supplies or one " +
61
- "Secrets Manager generates");
62
- }
63
- if (supplied !== undefined) {
64
- return supplied;
65
- }
66
- if (generated !== undefined) {
67
- return generated.generate();
68
- }
69
- throw this.propertyError("either SecretString or GenerateSecretString is required. Real " +
70
- "CloudFormation creates an empty secret when both are omitted, " +
71
- "which simulated Secrets Manager does not model, so it refuses the " +
72
- "Resource rather than creating a secret that has no value to read");
54
+ return simCfnSecretsManagerSecretValue({
55
+ resource: this.resource,
56
+ supplied: this.string(this.properties["SecretString"], "SecretString"),
57
+ generated: this.generateParser.parse(this.resource, this.properties["GenerateSecretString"]),
58
+ });
73
59
  }
74
60
  string(value, name) {
75
61
  return this.propertyParser.optionalString(this.resource, value, name);
76
62
  }
77
- propertyError(reason) {
78
- return new Error(`Invalid AWS::SecretsManager::Secret Resource ` +
79
- `${this.resource.logicalId}: ${reason}`);
80
- }
81
63
  }
@@ -0,0 +1,17 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimSecretsManagerGeneratedSecretString } from "../../secret/generate/sim-secrets-manager-generated-secret-string.js";
3
+ interface SimCfnSecretsManagerSecretValueProperties {
4
+ readonly resource: SimCfnResource;
5
+ readonly supplied: string | undefined;
6
+ readonly generated: SimSecretsManagerGeneratedSecretString | undefined;
7
+ }
8
+ /**
9
+ * The value a secret's first version holds.
10
+ *
11
+ * A template supplies a value or asks for one to be generated, never both and
12
+ * never neither. Real CloudFormation creates an empty secret where both are
13
+ * omitted, which simulated Secrets Manager has no model for, and a secret with
14
+ * no value to read is worse to be handed than a refusal.
15
+ */
16
+ export declare function simCfnSecretsManagerSecretValue(properties: SimCfnSecretsManagerSecretValueProperties): string;
17
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The value a secret's first version holds.
3
+ *
4
+ * A template supplies a value or asks for one to be generated, never both and
5
+ * never neither. Real CloudFormation creates an empty secret where both are
6
+ * omitted, which simulated Secrets Manager has no model for, and a secret with
7
+ * no value to read is worse to be handed than a refusal.
8
+ */
9
+ export function simCfnSecretsManagerSecretValue(properties) {
10
+ const { resource, supplied, generated } = properties;
11
+ if (supplied !== undefined && generated !== undefined) {
12
+ throw refusal(resource, "SecretString and GenerateSecretString cannot both be declared: " +
13
+ "a secret either holds the value the template supplies or one " +
14
+ "Secrets Manager generates");
15
+ }
16
+ if (supplied !== undefined) {
17
+ return supplied;
18
+ }
19
+ if (generated !== undefined) {
20
+ return generated.generate();
21
+ }
22
+ throw refusal(resource, "either SecretString or GenerateSecretString is required. Real " +
23
+ "CloudFormation creates an empty secret when both are omitted, " +
24
+ "which simulated Secrets Manager does not model, so it refuses the " +
25
+ "Resource rather than creating a secret that has no value to read");
26
+ }
27
+ function refusal(resource, reason) {
28
+ return new Error(`Invalid AWS::SecretsManager::Secret Resource ` +
29
+ `${resource.logicalId}: ${reason}`);
30
+ }
@@ -1,3 +1,9 @@
1
+ /**
2
+ * The longest name Secrets Manager accepts for a secret.
3
+ *
4
+ * https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html
5
+ */
6
+ export declare const maximumSimSecretsManagerNameLength = 512;
1
7
  /**
2
8
  * The name of one simulated secret, validated as real Secrets Manager does.
3
9
  *
@@ -1,6 +1,11 @@
1
1
  import { SimSecretsManagerInvalidParameterException } from "../error/sim-secrets-manager.error.js";
2
2
  import { secretArnSuffixPattern } from "./sim-secrets-manager-secret-arn.js";
3
- const maxNameLength = 512;
3
+ /**
4
+ * The longest name Secrets Manager accepts for a secret.
5
+ *
6
+ * https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html
7
+ */
8
+ export const maximumSimSecretsManagerNameLength = 512;
4
9
  const allowedCharacters = /^[\w+=./@-]+$/;
5
10
  /**
6
11
  * The name of one simulated secret, validated as real Secrets Manager does.
@@ -18,8 +23,8 @@ export class SimSecretsManagerSecretName {
18
23
  if (name === undefined || name === "") {
19
24
  throw new SimSecretsManagerInvalidParameterException("Name is required to create a secret");
20
25
  }
21
- if (name.length > maxNameLength) {
22
- throw new SimSecretsManagerInvalidParameterException(`Secret name '${name}' is longer than the ${String(maxNameLength)} characters Secrets Manager allows`);
26
+ if (name.length > maximumSimSecretsManagerNameLength) {
27
+ throw new SimSecretsManagerInvalidParameterException(`Secret name '${name}' is longer than the ${String(maximumSimSecretsManagerNameLength)} characters Secrets Manager allows`);
23
28
  }
24
29
  if (!allowedCharacters.test(name)) {
25
30
  throw new SimSecretsManagerInvalidParameterException(`Secret name '${name}' contains characters Secrets Manager does not allow: ` +
@@ -1,4 +1,4 @@
1
- import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-context-builder.js";
1
+ import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-input.js";
2
2
  import type { SimSnsTopic } from "../../topic/sim-sns-topic.js";
3
3
  /**
4
4
  * The resource policies sim IAM should evaluate for a request against a topic.
@@ -1,4 +1,4 @@
1
- import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-context-builder.js";
1
+ import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-input.js";
2
2
  import type { SimSqsQueue } from "../../queue/sim-sqs-queue.js";
3
3
  /**
4
4
  * The resource policies sim IAM should evaluate for a request against a queue.
@@ -0,0 +1,16 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ /**
3
+ * The name CloudFormation gives a parameter whose template does not name it.
4
+ *
5
+ * How much room a name has depends on the Account and Region, since the ARN
6
+ * prefix comes out of the same allowance. There is enough of it that a stack
7
+ * name and a logical ID rarely reach the limit, so
8
+ * `SimCfnGeneratedResourceName` seldom has to trim one.
9
+ *
10
+ * The name carries no leading slash and so sits at the top of the hierarchy,
11
+ * where real CloudFormation puts a parameter it names itself. The case is left
12
+ * alone, since Parameter Store keeps a name as it was given, and every
13
+ * character a stack name or a logical ID is made of is one a parameter name
14
+ * allows.
15
+ */
16
+ export declare function simCfnSsmGeneratedParameterName(resource: SimCfnResource): string;
@@ -0,0 +1,23 @@
1
+ import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
2
+ import { maximumSimSsmParameterNameLength } from "../../parameter/sim-ssm-parameter-arn.js";
3
+ /**
4
+ * The name CloudFormation gives a parameter whose template does not name it.
5
+ *
6
+ * How much room a name has depends on the Account and Region, since the ARN
7
+ * prefix comes out of the same allowance. There is enough of it that a stack
8
+ * name and a logical ID rarely reach the limit, so
9
+ * `SimCfnGeneratedResourceName` seldom has to trim one.
10
+ *
11
+ * The name carries no leading slash and so sits at the top of the hierarchy,
12
+ * where real CloudFormation puts a parameter it names itself. The case is left
13
+ * alone, since Parameter Store keeps a name as it was given, and every
14
+ * character a stack name or a logical ID is made of is one a parameter name
15
+ * allows.
16
+ */
17
+ export function simCfnSsmGeneratedParameterName(resource) {
18
+ return new SimCfnGeneratedResourceName({
19
+ stackName: resource.stackName,
20
+ logicalId: resource.logicalId,
21
+ maximumLength: maximumSimSsmParameterNameLength(resource.accountRegionScope),
22
+ }).value;
23
+ }
@@ -23,10 +23,8 @@ export declare class SimCfnSsmParameterProperties {
23
23
  /**
24
24
  * The parameter name.
25
25
  *
26
- * An unnamed parameter is named after its logical ID, as sim CloudFormation
27
- * names other unnamed resources. Real CloudFormation generates a name from
28
- * the stack name and its own random characters, which a template could not
29
- * predict anyway.
26
+ * An unnamed parameter is named after the stack and the logical ID, as
27
+ * CloudFormation names one.
30
28
  */
31
29
  name(): string;
32
30
  /**
@@ -1,3 +1,4 @@
1
+ import { simCfnSsmGeneratedParameterName } from "./sim-cfn-ssm-generated-parameter-name.js";
1
2
  /**
2
3
  * Reads AWS::SSM::Parameter CloudFormation properties into the shape
3
4
  * PutParameter takes.
@@ -19,13 +20,12 @@ export class SimCfnSsmParameterProperties {
19
20
  /**
20
21
  * The parameter name.
21
22
  *
22
- * An unnamed parameter is named after its logical ID, as sim CloudFormation
23
- * names other unnamed resources. Real CloudFormation generates a name from
24
- * the stack name and its own random characters, which a template could not
25
- * predict anyway.
23
+ * An unnamed parameter is named after the stack and the logical ID, as
24
+ * CloudFormation names one.
26
25
  */
27
26
  name() {
28
- return (this.string(this.properties["Name"], "Name") ?? this.resource.logicalId);
27
+ return (this.string(this.properties["Name"], "Name") ??
28
+ simCfnSsmGeneratedParameterName(this.resource));
29
29
  }
30
30
  /**
31
31
  * The parameter type.
@@ -12,10 +12,10 @@ export declare const ssmDefaultKeyAlias = "alias/aws/ssm";
12
12
  * The service Parameter Store's KMS calls are made through, as
13
13
  * `kms:ViaService` names it.
14
14
  *
15
- * Supplying it is what lets a caller read a `SecureString` under the
16
- * `aws/ssm` managed key with no KMS permission of its own: that key's policy
17
- * admits the Account's principals only when the request reached KMS through
18
- * Systems Manager.
15
+ * The `aws/ssm` managed key's policy admits the Account's principals only when
16
+ * the request reached KMS through Systems Manager, so a request that does not
17
+ * supply this reaches the key at all only where the key policy names the
18
+ * caller.
19
19
  */
20
20
  export declare const ssmKmsViaService = "ssm";
21
21
  /**
@@ -35,6 +35,7 @@ export interface SimSsmKmsCrypto {
35
35
  }, options?: {
36
36
  caller?: SimAwsCaller | undefined;
37
37
  viaService?: string | undefined;
38
+ withCallerPermissions?: boolean | undefined;
38
39
  }): Promise<{
39
40
  CiphertextBlob?: Uint8Array | undefined;
40
41
  KeyId?: string | undefined;
@@ -47,6 +48,7 @@ export interface SimSsmKmsCrypto {
47
48
  }, options?: {
48
49
  caller?: SimAwsCaller | undefined;
49
50
  viaService?: string | undefined;
51
+ withCallerPermissions?: boolean | undefined;
50
52
  }): Promise<{
51
53
  Plaintext?: Uint8Array | undefined;
52
54
  KeyId?: string | undefined;
@@ -11,9 +11,9 @@ export const ssmDefaultKeyAlias = "alias/aws/ssm";
11
11
  * The service Parameter Store's KMS calls are made through, as
12
12
  * `kms:ViaService` names it.
13
13
  *
14
- * Supplying it is what lets a caller read a `SecureString` under the
15
- * `aws/ssm` managed key with no KMS permission of its own: that key's policy
16
- * admits the Account's principals only when the request reached KMS through
17
- * Systems Manager.
14
+ * The `aws/ssm` managed key's policy admits the Account's principals only when
15
+ * the request reached KMS through Systems Manager, so a request that does not
16
+ * supply this reaches the key at all only where the key policy names the
17
+ * caller.
18
18
  */
19
19
  export const ssmKmsViaService = "ssm";