@kensio/yulin 1.20.15 → 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 (355) hide show
  1. package/README.md +13 -0
  2. package/dist/sdk/module/sim-sdk-module-client-interceptor.d.ts +5 -0
  3. package/dist/sdk/module/sim-sdk-module-client-interceptor.js +14 -0
  4. package/dist/sdk/module/sim-sdk-static-client-factory.d.ts +26 -0
  5. package/dist/sdk/module/sim-sdk-static-client-factory.js +59 -0
  6. package/dist/sdk/send-patch.d.ts +8 -0
  7. package/dist/sdk/send-patch.js +11 -0
  8. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  9. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  10. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +39 -6
  11. package/dist/service/aws/caller/sim-aws-caller-resolver.js +32 -30
  12. package/dist/service/aws/caller/sim-aws-caller.d.ts +9 -0
  13. package/dist/service/aws/caller/sim-aws-resolved-caller.d.ts +19 -0
  14. package/dist/service/aws/caller/sim-aws-resolved-caller.js +26 -0
  15. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +12 -0
  16. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +6 -0
  17. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +12 -0
  18. package/dist/service/aws/factory/sim-aws-account-service-cache.js +9 -0
  19. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  20. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +5 -0
  21. package/dist/service/aws/factory/sim-aws-service-factory.js +14 -0
  22. package/dist/service/aws/sim-aws-properties.d.ts +15 -0
  23. package/dist/service/aws/sim-aws.js +2 -1
  24. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  25. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  26. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  27. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  28. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  29. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  30. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  31. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  32. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  33. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  34. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  35. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  36. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  37. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  38. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  39. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  40. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  41. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  42. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  43. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  44. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  45. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  46. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  47. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  48. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  49. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  50. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  51. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  52. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +25 -0
  53. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
  54. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
  55. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -0
  56. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  57. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  58. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  59. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  60. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  61. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  62. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  63. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  64. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  65. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  66. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +27 -0
  67. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -0
  68. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  69. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  70. 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
  71. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -37
  72. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  73. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  74. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  75. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +50 -0
  76. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  77. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
  78. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  79. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  80. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  81. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  82. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  83. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  84. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  85. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  86. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  87. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  88. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  89. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  90. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  91. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  92. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  93. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  94. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  95. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  96. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  97. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  98. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +28 -0
  99. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -0
  100. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  101. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +6 -3
  102. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  103. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  104. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  105. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -2
  106. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  107. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  108. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  109. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  110. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +3 -1
  111. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  112. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  113. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  114. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  115. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  116. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  117. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  118. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  119. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  120. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  121. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +8 -12
  122. package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
  123. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
  124. package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
  125. package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
  126. package/dist/service/cloudfront/sim-cloudfront.js +22 -25
  127. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  128. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  129. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  130. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  131. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  132. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  133. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  134. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  135. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  136. package/dist/service/ecr/sim-ecr.js +16 -4
  137. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  138. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  139. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  140. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  141. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  142. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  143. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  144. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  145. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  146. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  147. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  148. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  149. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  150. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  151. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  152. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  153. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  154. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  155. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  156. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  157. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  158. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  159. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  160. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +33 -2
  161. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -2
  162. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  163. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  164. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  165. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  166. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +36 -7
  167. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +22 -11
  168. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +10 -71
  169. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +7 -2
  170. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +87 -0
  171. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  172. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +21 -3
  173. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +34 -10
  174. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  175. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  176. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  177. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  178. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +21 -5
  179. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +7 -3
  180. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +5 -2
  181. package/dist/service/iam/authorize/sim-iam-authorizer.js +3 -1
  182. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  183. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  184. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  185. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  186. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  187. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  188. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  189. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  190. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  191. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  192. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  193. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  194. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  195. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  196. package/dist/service/iam/error/sim-iam.error.js +13 -0
  197. package/dist/service/iam/index.d.ts +1 -0
  198. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  199. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  200. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  201. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  202. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +11 -0
  203. package/dist/service/iam/role/sim-iam-role-with-policy.factory.js +4 -2
  204. package/dist/service/iam/sim-iam-account-parts.d.ts +16 -0
  205. package/dist/service/iam/sim-iam-account-parts.js +2 -0
  206. package/dist/service/iam/sim-iam.d.ts +12 -2
  207. package/dist/service/iam/sim-iam.js +12 -0
  208. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  209. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  210. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  211. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  212. package/dist/service/kms/command/sim-kms-request-options.d.ts +11 -0
  213. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  214. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  215. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  216. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  217. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  218. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  219. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  220. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  221. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  222. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  223. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  224. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  225. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  226. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  227. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  228. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  229. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  230. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  231. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  232. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  233. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  234. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  235. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  236. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  237. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  238. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  239. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  240. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  241. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  242. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  243. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  244. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  245. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  246. package/dist/service/logs/sim-logs-commands.js +4 -0
  247. package/dist/service/logs/sim-logs.js +6 -1
  248. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  249. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  250. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  251. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  252. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  253. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  254. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  255. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  256. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  257. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  258. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  259. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  260. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  261. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  262. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  263. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  264. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  265. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  266. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  267. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  268. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  269. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  270. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  271. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  272. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  273. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +6 -4
  274. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  275. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  276. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  277. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +15 -9
  278. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
  279. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  280. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  281. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  282. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  283. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  284. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  285. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  286. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  287. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  288. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  289. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  290. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  291. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  292. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.d.ts +9 -2
  293. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.js +2 -2
  294. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.d.ts +10 -4
  295. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.js +8 -7
  296. package/dist/service/sts/auth-z/assume-role-target-auth-z.d.ts +2 -2
  297. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.d.ts +6 -2
  298. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.js +14 -11
  299. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +10 -1
  300. package/dist/service/sts/command/assume-role/assume-role.handler.js +6 -2
  301. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +10 -1
  302. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +5 -1
  303. package/dist/service/sts/service-role/sim-service-role.js +5 -1
  304. package/dist/service/sts/sim-sts.d.ts +18 -1
  305. package/dist/service/sts/sim-sts.js +8 -0
  306. package/dist/util/memo/bounded-memo.d.ts +36 -0
  307. package/dist/util/memo/bounded-memo.js +58 -0
  308. package/docs/README.md +54 -0
  309. package/docs/ai-skill/README.md +69 -0
  310. package/docs/cli/README.md +284 -0
  311. package/docs/factories/README.md +140 -0
  312. package/docs/lint/README.md +176 -0
  313. package/docs/non-aws-dependencies/README.md +261 -0
  314. package/docs/sdk/README.md +274 -0
  315. package/docs/serve/README.md +1126 -0
  316. package/docs/services/acm/README.md +823 -0
  317. package/docs/services/apigateway/README.md +1919 -0
  318. package/docs/services/apigatewayv2/README.md +2678 -0
  319. package/docs/services/athena/README.md +1044 -0
  320. package/docs/services/bedrock/README.md +350 -0
  321. package/docs/services/cloudformation/README.md +3625 -0
  322. package/docs/services/cloudfront/README.md +3098 -0
  323. package/docs/services/cloudwatch/README.md +422 -0
  324. package/docs/services/cognito/README.md +4924 -0
  325. package/docs/services/dynamodb/README.md +3785 -0
  326. package/docs/services/ecr/README.md +302 -0
  327. package/docs/services/ecs/README.md +2021 -0
  328. package/docs/services/elbv2/README.md +1901 -0
  329. package/docs/services/eventbridge/README.md +1118 -0
  330. package/docs/services/firehose/README.md +811 -0
  331. package/docs/services/glue/README.md +507 -0
  332. package/docs/services/iam/README.md +1578 -0
  333. package/docs/services/kinesis/README.md +455 -0
  334. package/docs/services/kms/README.md +664 -0
  335. package/docs/services/lambda/README.md +3719 -0
  336. package/docs/services/logs/README.md +882 -0
  337. package/docs/services/organizations/README.md +574 -0
  338. package/docs/services/personalize/README.md +835 -0
  339. package/docs/services/rekognition/README.md +1070 -0
  340. package/docs/services/route53/README.md +1783 -0
  341. package/docs/services/s3/README.md +3029 -0
  342. package/docs/services/scheduler/README.md +814 -0
  343. package/docs/services/secretsmanager/README.md +670 -0
  344. package/docs/services/ses/README.md +1013 -0
  345. package/docs/services/sns/README.md +1904 -0
  346. package/docs/services/sqs/README.md +1185 -0
  347. package/docs/services/ssm/README.md +1096 -0
  348. package/docs/services/stepfunctions/README.md +1341 -0
  349. package/docs/services/sts/README.md +245 -0
  350. package/docs/services/wafv2/README.md +1380 -0
  351. package/docs/terraform/README.md +248 -0
  352. package/docs/time/README.md +284 -0
  353. package/llms.txt +59 -0
  354. package/package.json +7 -4
  355. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -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";
@@ -7,6 +7,23 @@ import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-
7
7
  * rather than `...:parameter//myapp/prod/db-host`.
8
8
  */
9
9
  export declare function ssmParameterArnPrefix(accountRegionScope: SimAwsAccountRegionScope): string;
10
+ /**
11
+ * The longest a parameter name may be, counting the ARN that precedes it.
12
+ *
13
+ * Real Parameter Store reserves the rest of the 2048 character ARN for its own
14
+ * use, and counts the ARN prefix towards the 1011 characters left. That is why
15
+ * this limit needs the Account and Region: the same name is legal in one
16
+ * Region and too long in another.
17
+ */
18
+ export declare const maximumSsmParameterArnLength = 1011;
19
+ /**
20
+ * The longest name a parameter may be given in this Account and Region.
21
+ *
22
+ * The ARN prefix comes out of the same allowance the name does, so the room
23
+ * left for a name depends on how long the Region's name is. A generated name
24
+ * is trimmed to this so that it is never one PutParameter would then refuse.
25
+ */
26
+ export declare function maximumSimSsmParameterNameLength(accountRegionScope: SimAwsAccountRegionScope): number;
10
27
  interface SimSsmParameterArnProperties {
11
28
  readonly resource: string;
12
29
  readonly accountRegionScope: SimAwsAccountRegionScope;
@@ -9,6 +9,26 @@ export function ssmParameterArnPrefix(accountRegionScope) {
9
9
  const { regionName, accountId } = accountRegionScope;
10
10
  return `arn:aws:ssm:${regionName}:${accountId}:parameter/`;
11
11
  }
12
+ /**
13
+ * The longest a parameter name may be, counting the ARN that precedes it.
14
+ *
15
+ * Real Parameter Store reserves the rest of the 2048 character ARN for its own
16
+ * use, and counts the ARN prefix towards the 1011 characters left. That is why
17
+ * this limit needs the Account and Region: the same name is legal in one
18
+ * Region and too long in another.
19
+ */
20
+ export const maximumSsmParameterArnLength = 1011;
21
+ /**
22
+ * The longest name a parameter may be given in this Account and Region.
23
+ *
24
+ * The ARN prefix comes out of the same allowance the name does, so the room
25
+ * left for a name depends on how long the Region's name is. A generated name
26
+ * is trimmed to this so that it is never one PutParameter would then refuse.
27
+ */
28
+ export function maximumSimSsmParameterNameLength(accountRegionScope) {
29
+ return (maximumSsmParameterArnLength -
30
+ ssmParameterArnPrefix(accountRegionScope).length);
31
+ }
12
32
  /**
13
33
  * The ARN of one simulated parameter.
14
34
  *
@@ -13,15 +13,20 @@ interface SimSsmParameterKmsProperties {
13
13
  /**
14
14
  * The KMS calls a SecureString parameter makes.
15
15
  *
16
- * The calls are made as the caller rather than as the service, which is the
17
- * point: under a customer managed key a standard tier write needs
18
- * `kms:Encrypt` on the key and a decrypting read needs `kms:Decrypt`, each on
19
- * top of the SSM permission for the parameter itself.
16
+ * The calls are made as the caller rather than as the service. Under a
17
+ * customer managed key a standard tier write needs `kms:Encrypt` on the key
18
+ * and a decrypting read needs `kms:Decrypt`, each on top of the SSM permission
19
+ * for the parameter itself.
20
20
  *
21
- * They are also made through the service, which is why the `aws/ssm` managed
22
- * key needs no KMS permission at all: its policy admits the Account's
23
- * principals when `kms:ViaService` names Systems Manager, and Parameter Store
24
- * is what supplies that.
21
+ * They are also made through the service, which is what reaches the `aws/ssm`
22
+ * managed key at all. That key's policy admits the Account's principals when
23
+ * `kms:ViaService` names Systems Manager, and Parameter Store is what supplies
24
+ * it. Reaching the key is not the same as being allowed to use it, and a
25
+ * decrypting read says so with `withCallerPermissions`, because that policy
26
+ * admits whoever the request came from rather than the caller behind it. A
27
+ * Role holding `ssm:GetParameter` and no `kms:Decrypt` reads the ciphertext
28
+ * and not the value. A write under that key asks the caller for no KMS
29
+ * permission here, where AWS documents `kms:Encrypt` for one.
25
30
  *
26
31
  * Standard tier Parameter Store encrypts under the key directly rather than
27
32
  * through a data key, so this is one Encrypt and one Decrypt and nothing more.
@@ -34,7 +39,8 @@ export declare class SimSsmParameterKms {
34
39
  */
35
40
  encrypt(parameterArn: string, plaintext: string, keyId: string | undefined, caller: SimAwsCaller | undefined): Promise<SimSsmParameterCiphertext>;
36
41
  /**
37
- * Decrypt a parameter value, which needs the same binding it was made with.
42
+ * Decrypt a parameter value, which needs the same binding it was made with,
43
+ * and the caller's own permission to use the key.
38
44
  */
39
45
  decrypt(parameterArn: string, ciphertext: string, caller: SimAwsCaller | undefined): Promise<string>;
40
46
  private contextFor;