@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,5 +1,6 @@
1
1
  import { AsyncMappedFactory } from "@kensio/part-factory";
2
2
  import type { SimAws } from "../../aws/sim-aws.js";
3
+ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
3
4
  import type { SimCreateRoleCommandOutput } from "../command/role/create-role/create-role.command.js";
4
5
  /**
5
6
  * What a test asks for when it wants a Role that may do something.
@@ -13,6 +14,16 @@ export interface SimIamRoleWithPolicyInput {
13
14
  readonly policyName: string;
14
15
  readonly actions: readonly string[];
15
16
  readonly resource: string;
17
+ /**
18
+ * The principal creating the Role.
19
+ *
20
+ * A simulation given a default caller attributes these two commands to it,
21
+ * and a Role being created for that caller has no policies to allow them
22
+ * yet. Naming the Account root here is one way for such a test to bootstrap.
23
+ * Calling inside `simAws.runAs(simAws.account().rootPrincipal, ...)` is the
24
+ * other, and covers everything else the block does as well.
25
+ */
26
+ readonly caller?: SimAwsCaller | undefined;
16
27
  }
17
28
  /**
18
29
  * The Role a CreateRole request answers with.
@@ -24,8 +24,10 @@ export const simIamRoleWithPolicyFactory = new AsyncMappedFactory(() => ({
24
24
  policyName: "ApplicationPolicy",
25
25
  actions: [],
26
26
  resource: "*",
27
+ caller: undefined,
27
28
  }), async (input, simAws) => {
28
29
  const simIam = simAws.iam();
30
+ const options = input.caller === undefined ? undefined : { caller: input.caller };
29
31
  const creation = await simIam.createRole({
30
32
  input: {
31
33
  RoleName: input.roleName,
@@ -38,7 +40,7 @@ export const simIamRoleWithPolicyFactory = new AsyncMappedFactory(() => ({
38
40
  },
39
41
  }),
40
42
  },
41
- });
43
+ }, options);
42
44
  await simIam.putRolePolicy({
43
45
  input: {
44
46
  RoleName: input.roleName,
@@ -47,6 +49,6 @@ export const simIamRoleWithPolicyFactory = new AsyncMappedFactory(() => ({
47
49
  Statement: { Action: input.actions, Resource: input.resource },
48
50
  }),
49
51
  },
50
- });
52
+ }, options);
51
53
  return creation.Role;
52
54
  });
@@ -1,6 +1,8 @@
1
1
  import { type BackgroundScheduler } from "../../util/background/background.js";
2
2
  import type { SimAwsAccountId } from "../aws/sim-aws-account.js";
3
3
  import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
4
+ import type { SimAwsDefaultCaller } from "../aws/caller/sim-aws-caller.js";
5
+ import type { SimAwsAmbientCaller } from "../aws/caller/sim-aws-ambient-caller.js";
4
6
  import { SimIamAccountAuthZ } from "./authorize/sim-iam-account-auth-z.js";
5
7
  import type { SimIamInterServiceAuthZ } from "./authorize/sim-iam-inter-service-auth-z.js";
6
8
  import { SimIamCommandHandlers } from "./command/sim-iam-command-handlers.js";
@@ -19,6 +21,20 @@ export interface SimIamProperties {
19
21
  readonly credentialRegistry?: SimIamCredentialRegistry;
20
22
  readonly sessionCredentialGenerator?: SimIamSessionCredentialGenerator;
21
23
  readonly userCredentialGenerator?: SimIamUserCredentialGenerator;
24
+ /**
25
+ * The caller this simulation attributes a request naming none to.
26
+ *
27
+ * A SimAws passes on what it was built with. Left out, such a request is
28
+ * decided as the Account root, which is what a standalone SimIam does.
29
+ */
30
+ readonly defaultCaller?: SimAwsDefaultCaller | undefined;
31
+ /**
32
+ * Where a request naming no caller looks before the default.
33
+ *
34
+ * A SimAws passes on the run-as block it is inside, if any. A standalone
35
+ * SimIam has no run-as around it and leaves this out.
36
+ */
37
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
22
38
  /**
23
39
  * Resolves the IAM of other Accounts in the same simulation.
24
40
  *
@@ -47,6 +47,8 @@ export class SimIamAccountParts {
47
47
  roles: this.roles,
48
48
  users: this.users,
49
49
  credentialIdentityResolver: credentialRegistry,
50
+ defaultCaller: properties.defaultCaller,
51
+ ambientCaller: properties.ambientCaller,
50
52
  iamResolver: properties.iamResolver,
51
53
  scpResolver: properties.scpResolver,
52
54
  });
@@ -3,7 +3,7 @@ import type { SimAwsAccountId } from "../aws/sim-aws-account.js";
3
3
  import type { SimIamManagedPolicy } from "./policy/sim-iam-policy.js";
4
4
  import type { SimIamRole, SimIamRoleName } from "./role/sim-iam-role.js";
5
5
  import type { SimIamUser, SimIamUsername } from "./user/sim-iam-user.js";
6
- import type { SimIamAuthorizationInput } from "./authorize/context/sim-iam-auth-z-context-builder.js";
6
+ import type { SimIamAuthorizationInput } from "./authorize/context/sim-iam-auth-z-input.js";
7
7
  import type { SimIamPolicyDecision } from "./authorize/sim-iam-decision.js";
8
8
  import type * as simIamCommands from "./command/sim-iam-command.types.js";
9
9
  import type { SimIamRequestOptions } from "./command/sim-iam-request-options.js";
@@ -11,11 +11,12 @@ import type { SimCfnServiceResourceFactory } from "../cloudformation/resource/fa
11
11
  import type { SimIamInterServiceAuthZ } from "./authorize/sim-iam-inter-service-auth-z.js";
12
12
  import type { SimIamAccountIdentityPolicies } from "./authorize/identity/sim-iam-account-identity-policies.js";
13
13
  import type { SimIamAuthZPolicySource } from "./authorize/context/sim-iam-auth-z-context.js";
14
- import type { SimAwsPrincipal } from "../aws/caller/sim-aws-caller.js";
14
+ import type { SimArnPrincipal, SimAwsPrincipal } from "../aws/caller/sim-aws-caller.js";
15
15
  import type { SimSdkCommandRouter } from "../../sdk/index.js";
16
16
  import type { SimIamCredentialRegistry } from "./credential/sim-iam-credential-registry.js";
17
17
  import type { SimIamSessionManager } from "./credential/session/sim-iam-session-manager.js";
18
18
  import { type SimIamProperties } from "./sim-iam-account-parts.js";
19
+ import { type SimIamDeployRoleInput } from "./role/sim-iam-deploy-role.js";
19
20
  /**
20
21
  * Simulated IAM service facade. Handles SDK commands. Emulates AWS behaviour
21
22
  * and state.
@@ -52,6 +53,7 @@ export declare class SimIam implements SimIamInterServiceAuthZ, SimIamAccountIde
52
53
  private readonly commands;
53
54
  private readonly accountAuthZ;
54
55
  private readonly sdkRouter;
56
+ private readonly deployRoles;
55
57
  constructor(properties?: SimIamProperties);
56
58
  /**
57
59
  * Evaluate an IAM authorization attempt against policies relevant to the
@@ -140,6 +142,14 @@ export declare class SimIam implements SimIamInterServiceAuthZ, SimIamAccountIde
140
142
  * Handle an IAM CreateAccessKey command.
141
143
  */
142
144
  createAccessKey(command: simIamCommands.SimCreateAccessKeyCommand, options?: SimIamRequestOptions): Promise<simIamCommands.SimCreateAccessKeyCommandOutput>;
145
+ /**
146
+ * Make a Role for a CloudFormation deployment to run as.
147
+ *
148
+ * The Role is trusted by `cloudformation.amazonaws.com` and allowed what the
149
+ * policy documents allow. What comes back goes straight to `caller` on
150
+ * `deployTemplate`, `deployTemplateFile` or `deployCdkOut`.
151
+ */
152
+ makeDeployRole(input: SimIamDeployRoleInput): Promise<SimArnPrincipal>;
143
153
  /**
144
154
  * Get this service's CloudFormation Resource factory.
145
155
  */
@@ -1,6 +1,7 @@
1
1
  import { SimIamCloudFormationResourceFactory } from "./cfn/sim-cfn-iam-resource-factory.js";
2
2
  import { SimIamSdkCommandRouter } from "./sdk/sim-iam-sdk-command-router.js";
3
3
  import { SimIamAccountParts, } from "./sim-iam-account-parts.js";
4
+ import { SimIamDeployRoleMaker, } from "./role/sim-iam-deploy-role.js";
4
5
  /**
5
6
  * Simulated IAM service facade. Handles SDK commands. Emulates AWS behaviour
6
7
  * and state.
@@ -37,6 +38,7 @@ export class SimIam {
37
38
  commands;
38
39
  accountAuthZ;
39
40
  sdkRouter = new SimIamSdkCommandRouter(this);
41
+ deployRoles = new SimIamDeployRoleMaker(this);
40
42
  constructor(properties = {}) {
41
43
  const parts = new SimIamAccountParts(properties);
42
44
  this.accountId = parts.accountId;
@@ -176,6 +178,16 @@ export class SimIam {
176
178
  async createAccessKey(command, options) {
177
179
  return await this.commands.users.createAccessKey(command, options);
178
180
  }
181
+ /**
182
+ * Make a Role for a CloudFormation deployment to run as.
183
+ *
184
+ * The Role is trusted by `cloudformation.amazonaws.com` and allowed what the
185
+ * policy documents allow. What comes back goes straight to `caller` on
186
+ * `deployTemplate`, `deployTemplateFile` or `deployCdkOut`.
187
+ */
188
+ async makeDeployRole(input) {
189
+ return await this.deployRoles.make(input);
190
+ }
179
191
  /**
180
192
  * Get this service's CloudFormation Resource factory.
181
193
  */
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The longest managed policy document IAM will take.
3
+ *
4
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
5
+ */
6
+ export declare const maxSimIamManagedPolicyCharacters = 6144;
7
+ /**
8
+ * The longest inline policy document IAM will take on a Role or a User.
9
+ */
10
+ export declare const maxSimIamInlinePolicyCharacters = 10240;
11
+ /**
12
+ * The longest trust policy document IAM will take on a Role.
13
+ *
14
+ * This one is adjustable, up to 8,192 characters. A simulation holds the
15
+ * default an account carries until it asks for more.
16
+ */
17
+ export declare const maxSimIamTrustPolicyCharacters = 2048;
18
+ /**
19
+ * The Role or the User an inline policy is being put onto.
20
+ */
21
+ export interface SimIamPolicyDocumentHolder {
22
+ /**
23
+ * What IAM calls the holder in the message, `role` or `user`.
24
+ */
25
+ readonly kind: "role" | "user";
26
+ /**
27
+ * The holder's name.
28
+ */
29
+ readonly name: string;
30
+ }
31
+ /**
32
+ * Measure a policy document the way IAM does, which leaves whitespace out.
33
+ *
34
+ * A document indented for a reader therefore counts the same as the one line
35
+ * `JSON.stringify` produces, and a template can be written either way.
36
+ */
37
+ export declare function simIamPolicyDocumentSize(policyDocument: string): number;
38
+ /**
39
+ * Refuse a managed policy document over the character limit.
40
+ *
41
+ * A policy past the limit cannot be deployed, and the account keeps whichever
42
+ * version last fit. The permission the document was grown to grant then goes
43
+ * missing weeks later, at a distance from the change that lost it. Refusing
44
+ * the document here puts the fault beside the policy that carries it.
45
+ *
46
+ * The requiredness check refuses an absent document. This one has nothing to
47
+ * measure.
48
+ */
49
+ export declare function assertSimIamManagedPolicyWithinSizeLimit(policyDocument: string | undefined): void;
50
+ /**
51
+ * Refuse an inline policy document over the character limit.
52
+ */
53
+ export declare function assertSimIamInlinePolicyWithinSizeLimit(policyDocument: string | undefined, holder: SimIamPolicyDocumentHolder): void;
54
+ /**
55
+ * Refuse a Role trust policy document over the character limit.
56
+ */
57
+ export declare function assertSimIamTrustPolicyWithinSizeLimit(policyDocument: string | undefined, roleName: string): void;
@@ -0,0 +1,71 @@
1
+ import { SimIamLimitExceeded } from "../../error/sim-iam.error.js";
2
+ /**
3
+ * The longest managed policy document IAM will take.
4
+ *
5
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
6
+ */
7
+ export const maxSimIamManagedPolicyCharacters = 6144;
8
+ /**
9
+ * The longest inline policy document IAM will take on a Role or a User.
10
+ */
11
+ export const maxSimIamInlinePolicyCharacters = 10_240;
12
+ /**
13
+ * The longest trust policy document IAM will take on a Role.
14
+ *
15
+ * This one is adjustable, up to 8,192 characters. A simulation holds the
16
+ * default an account carries until it asks for more.
17
+ */
18
+ export const maxSimIamTrustPolicyCharacters = 2048;
19
+ /**
20
+ * Measure a policy document the way IAM does, which leaves whitespace out.
21
+ *
22
+ * A document indented for a reader therefore counts the same as the one line
23
+ * `JSON.stringify` produces, and a template can be written either way.
24
+ */
25
+ export function simIamPolicyDocumentSize(policyDocument) {
26
+ return policyDocument.replaceAll(/\s/gu, "").length;
27
+ }
28
+ /**
29
+ * Refuse a managed policy document over the character limit.
30
+ *
31
+ * A policy past the limit cannot be deployed, and the account keeps whichever
32
+ * version last fit. The permission the document was grown to grant then goes
33
+ * missing weeks later, at a distance from the change that lost it. Refusing
34
+ * the document here puts the fault beside the policy that carries it.
35
+ *
36
+ * The requiredness check refuses an absent document. This one has nothing to
37
+ * measure.
38
+ */
39
+ export function assertSimIamManagedPolicyWithinSizeLimit(policyDocument) {
40
+ if (policyDocument === undefined ||
41
+ simIamPolicyDocumentSize(policyDocument) <= maxSimIamManagedPolicyCharacters) {
42
+ return;
43
+ }
44
+ throw new SimIamLimitExceeded(`Cannot exceed quota for PolicySize: ${String(maxSimIamManagedPolicyCharacters)}`);
45
+ }
46
+ /**
47
+ * Refuse an inline policy document over the character limit.
48
+ */
49
+ export function assertSimIamInlinePolicyWithinSizeLimit(policyDocument, holder) {
50
+ assertWithinMaximumPolicySize(policyDocument, maxSimIamInlinePolicyCharacters, holder);
51
+ }
52
+ /**
53
+ * Refuse a Role trust policy document over the character limit.
54
+ */
55
+ export function assertSimIamTrustPolicyWithinSizeLimit(policyDocument, roleName) {
56
+ assertWithinMaximumPolicySize(policyDocument, maxSimIamTrustPolicyCharacters, { kind: "role", name: roleName });
57
+ }
58
+ /**
59
+ * IAM reports both of these in bytes, over a count that is really characters
60
+ * with the whitespace taken out. The wording is kept as IAM writes it. A
61
+ * reader searching for the message finds what a real deploy would have told
62
+ * them.
63
+ */
64
+ function assertWithinMaximumPolicySize(policyDocument, maxCharacters, holder) {
65
+ if (policyDocument === undefined ||
66
+ simIamPolicyDocumentSize(policyDocument) <= maxCharacters) {
67
+ return;
68
+ }
69
+ throw new SimIamLimitExceeded(`Maximum policy size of ${String(maxCharacters)} bytes exceeded for ` +
70
+ `${holder.kind} ${holder.name}`);
71
+ }
@@ -20,7 +20,9 @@ interface SimKmsAuthorizerProperties {
20
20
  * Both carry the KMS condition values a key policy can be written against:
21
21
  * `kms:CallerAccount` for the Account the request came from, and
22
22
  * `kms:ViaService` where another service made the request on the caller's
23
- * behalf.
23
+ * behalf. A service passing on the caller's own KMS permissions says so, and
24
+ * a key policy admitting whoever the request came from is then not enough by
25
+ * itself.
24
26
  */
25
27
  export declare class SimKmsAuthorizer {
26
28
  private readonly iam;
@@ -15,7 +15,9 @@ import { SimKmsViaService } from "../../key/sim-kms-via-service.js";
15
15
  * Both carry the KMS condition values a key policy can be written against:
16
16
  * `kms:CallerAccount` for the Account the request came from, and
17
17
  * `kms:ViaService` where another service made the request on the caller's
18
- * behalf.
18
+ * behalf. A service passing on the caller's own KMS permissions says so, and
19
+ * a key policy admitting whoever the request came from is then not enough by
20
+ * itself.
19
21
  */
20
22
  export class SimKmsAuthorizer {
21
23
  iam;
@@ -41,6 +43,7 @@ export class SimKmsAuthorizer {
41
43
  callerConditions: this.callerAccount,
42
44
  resourcePolicies: [key.policy.asResourcePolicy()],
43
45
  requiresResourcePolicyAllow: true,
46
+ withCallerPermissions: options.withCallerPermissions,
44
47
  });
45
48
  if (decision.isDenied) {
46
49
  throw new SimIamAccessDenied({
@@ -20,4 +20,15 @@ export interface SimKmsRequestOptions {
20
20
  * and a policy conditioned on `kms:ViaService` then does not match.
21
21
  */
22
22
  readonly viaService?: string | undefined;
23
+ /**
24
+ * Whether the service named by `viaService` is making the request with the
25
+ * caller's own KMS permissions rather than with its own.
26
+ *
27
+ * Parameter Store decrypts a SecureString this way. A caller holding
28
+ * ssm:GetParameter and no kms:Decrypt is refused even under the aws/ssm key,
29
+ * whose policy admits the Account's principals reaching KMS through Systems
30
+ * Manager. A key policy naming the caller still allows the request on its
31
+ * own, as it does for any other KMS request.
32
+ */
33
+ readonly withCallerPermissions?: boolean | undefined;
23
34
  }
@@ -1,5 +1,5 @@
1
1
  import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
2
- import type { SimIamResourcePolicyInput } from "../../iam/authorize/context/sim-iam-auth-z-context-builder.js";
2
+ import type { SimIamResourcePolicyInput } from "../../iam/authorize/context/sim-iam-auth-z-input.js";
3
3
  import type { SimIamPolicyDocument } from "../../iam/policy/sim-iam-policy.js";
4
4
  import { type SimKmsViaService } from "./sim-kms-via-service.js";
5
5
  /**
@@ -38,9 +38,10 @@ export declare class SimKmsKeyPolicy {
38
38
  * through the service that owns the key, and it delegates nothing else to
39
39
  * IAM: the second statement covers reading the key's metadata and no more.
40
40
  *
41
- * That is what makes an AWS managed key usable by a caller holding no KMS
42
- * permission at all, and unusable by a caller holding kms:Decrypt on it who
43
- * calls KMS directly.
41
+ * That is what makes an AWS managed key unusable by a caller holding
42
+ * kms:Decrypt on it who calls KMS directly. What the first statement admits
43
+ * is whoever reached KMS through the owning service, which allows the
44
+ * request on its own only where that service used its own permissions.
44
45
  */
45
46
  static awsManaged(keyArn: string, accountId: SimAwsAccountId, viaService: SimKmsViaService): SimKmsKeyPolicy;
46
47
  /**
@@ -53,9 +53,10 @@ export class SimKmsKeyPolicy {
53
53
  * through the service that owns the key, and it delegates nothing else to
54
54
  * IAM: the second statement covers reading the key's metadata and no more.
55
55
  *
56
- * That is what makes an AWS managed key usable by a caller holding no KMS
57
- * permission at all, and unusable by a caller holding kms:Decrypt on it who
58
- * calls KMS directly.
56
+ * That is what makes an AWS managed key unusable by a caller holding
57
+ * kms:Decrypt on it who calls KMS directly. What the first statement admits
58
+ * is whoever reached KMS through the owning service, which allows the
59
+ * request on its own only where that service used its own permissions.
59
60
  */
60
61
  static awsManaged(keyArn, accountId, viaService) {
61
62
  return new SimKmsKeyPolicy(keyArn, {
@@ -48,8 +48,8 @@ export declare class SimCfnLambdaFunctionPropertiesParser {
48
48
  */
49
49
  private roleArn;
50
50
  /**
51
- * The function name defaults to the logical ID, as CloudFormation
52
- * effectively names unnamed functions from it.
51
+ * An unnamed function gets the name CloudFormation generates for it, from
52
+ * the stack name and the logical ID.
53
53
  */
54
54
  private functionName;
55
55
  }
@@ -3,6 +3,7 @@ import { SimCfnLambdaDeadLetterParser } from "./sim-cfn-lambda-dead-letter-parse
3
3
  import { SimCfnLambdaEnvironmentParser } from "./sim-cfn-lambda-environment-parser.js";
4
4
  import { SimCfnLambdaFunctionCodeParser } from "./sim-cfn-lambda-function-code-parser.js";
5
5
  import { SimCfnLambdaPropertyParser } from "./sim-cfn-lambda-property-parser.js";
6
+ import { simCfnLambdaGeneratedFunctionName } from "./sim-cfn-lambda-generated-function-name.js";
6
7
  /**
7
8
  * Map parsed AWS::Lambda::Function properties onto the sim Lambda
8
9
  * CreateFunction command input, with the code input resolved separately so
@@ -74,10 +75,10 @@ export class SimCfnLambdaFunctionPropertiesParser {
74
75
  });
75
76
  }
76
77
  /**
77
- * The function name defaults to the logical ID, as CloudFormation
78
- * effectively names unnamed functions from it.
78
+ * An unnamed function gets the name CloudFormation generates for it, from
79
+ * the stack name and the logical ID.
79
80
  */
80
81
  functionName(resource, properties) {
81
- return (this.propertyParser.optionalString(resource, properties["FunctionName"], "FunctionName") ?? resource.logicalId);
82
+ return (this.propertyParser.optionalString(resource, properties["FunctionName"], "FunctionName") ?? simCfnLambdaGeneratedFunctionName(resource));
82
83
  }
83
84
  }
@@ -0,0 +1,10 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ /**
3
+ * The name CloudFormation gives a function whose template does not name it.
4
+ *
5
+ * Sixty-four characters is short for a name made of a stack name and a logical
6
+ * ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
7
+ * left alone, since Lambda keeps a name as it was given, and every character a
8
+ * stack name or a logical ID is made of is one a function name allows.
9
+ */
10
+ export declare function simCfnLambdaGeneratedFunctionName(resource: SimCfnResource): string;
@@ -0,0 +1,25 @@
1
+ import { SimCfnGeneratedResourceName } from "../../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
2
+ /**
3
+ * The longest name Lambda accepts for a function.
4
+ *
5
+ * The 140 characters `CreateFunction` documents are for a full ARN. A bare
6
+ * function name gets 64, and that is what a template generates.
7
+ *
8
+ * https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html
9
+ */
10
+ const maximumNameLength = 64;
11
+ /**
12
+ * The name CloudFormation gives a function whose template does not name it.
13
+ *
14
+ * Sixty-four characters is short for a name made of a stack name and a logical
15
+ * ID, so `SimCfnGeneratedResourceName` usually has to trim one. The case is
16
+ * left alone, since Lambda keeps a name as it was given, and every character a
17
+ * stack name or a logical ID is made of is one a function name allows.
18
+ */
19
+ export function simCfnLambdaGeneratedFunctionName(resource) {
20
+ return new SimCfnGeneratedResourceName({
21
+ stackName: resource.stackName,
22
+ logicalId: resource.logicalId,
23
+ maximumLength: maximumNameLength,
24
+ }).value;
25
+ }
@@ -1,4 +1,4 @@
1
- import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-context-builder.js";
1
+ import type { SimIamResourcePolicyInput } from "../../../iam/authorize/context/sim-iam-auth-z-input.js";
2
2
  import type { SimLambdaPolicyResource } from "../../function/policy/sim-lambda-policy-resource.js";
3
3
  /**
4
4
  * The resource policies IAM should evaluate alongside identity policies for an
@@ -8,18 +8,25 @@ interface CreateFunctionAuthorizerProperties {
8
8
  *
9
9
  * AWS maps the CreateFunction API operation to the lambda:CreateFunction IAM
10
10
  * action. The resource is the function ARN being created.
11
+ *
12
+ * The execution role is a second question. Lambda keeps that Role and runs the
13
+ * function as it later, so the caller is asked whether they may hand it over,
14
+ * against the Role rather than the function. The create action is decided
15
+ * first, which is the order the two answers come in on real AWS.
11
16
  */
12
17
  export declare class CreateFunctionAuthorizer {
13
18
  private static readonly action;
14
19
  private readonly iam;
20
+ private readonly passRole;
15
21
  constructor(properties: CreateFunctionAuthorizerProperties);
16
22
  /**
17
- * Ensure the caller may create a Lambda function with the given ARN.
23
+ * Ensure the caller may create a Lambda function with the given ARN, and may
24
+ * hand Lambda the execution role it names.
18
25
  *
19
26
  * The caller is passed through unchanged so sim IAM can distinguish an
20
27
  * omitted caller, which defaults to Account root, from an explicit anonymous
21
28
  * caller.
22
29
  */
23
- authorize(functionArn: string, caller?: SimAwsCaller): void;
30
+ authorize(functionArn: string, roleArn: string, caller?: SimAwsCaller): void;
24
31
  }
25
32
  export {};
@@ -1,24 +1,37 @@
1
+ import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
3
+ import { simLambdaServicePrincipal } from "../../sim-lambda-service-principal.js";
2
4
  /**
3
5
  * Applies IAM authorization to a Lambda CreateFunction request.
4
6
  *
5
7
  * AWS maps the CreateFunction API operation to the lambda:CreateFunction IAM
6
8
  * action. The resource is the function ARN being created.
9
+ *
10
+ * The execution role is a second question. Lambda keeps that Role and runs the
11
+ * function as it later, so the caller is asked whether they may hand it over,
12
+ * against the Role rather than the function. The create action is decided
13
+ * first, which is the order the two answers come in on real AWS.
7
14
  */
8
15
  export class CreateFunctionAuthorizer {
9
16
  static action = "lambda:CreateFunction";
10
17
  iam;
18
+ passRole;
11
19
  constructor(properties) {
12
20
  this.iam = properties.iam;
21
+ this.passRole = new SimIamPassRoleAuthorizer({
22
+ iam: properties.iam,
23
+ passedToService: simLambdaServicePrincipal,
24
+ });
13
25
  }
14
26
  /**
15
- * Ensure the caller may create a Lambda function with the given ARN.
27
+ * Ensure the caller may create a Lambda function with the given ARN, and may
28
+ * hand Lambda the execution role it names.
16
29
  *
17
30
  * The caller is passed through unchanged so sim IAM can distinguish an
18
31
  * omitted caller, which defaults to Account root, from an explicit anonymous
19
32
  * caller.
20
33
  */
21
- authorize(functionArn, caller) {
34
+ authorize(functionArn, roleArn, caller) {
22
35
  const decision = this.iam.authorize({
23
36
  action: CreateFunctionAuthorizer.action,
24
37
  resource: functionArn,
@@ -32,5 +45,6 @@ export class CreateFunctionAuthorizer {
32
45
  resource: functionArn,
33
46
  });
34
47
  }
48
+ this.passRole.authorize(roleArn, caller);
35
49
  }
36
50
  }
@@ -51,7 +51,7 @@ export class CreateFunctionCommandHandler {
51
51
  // Allow for potential non-deterministic sequencing of async events.
52
52
  await this.background.sequence();
53
53
  const functionArn = simLambdaFunctionArn(this.accountRegionScope, input.name);
54
- this.authorizer.authorize(functionArn, options?.caller);
54
+ this.authorizer.authorize(functionArn, input.roleArn, options?.caller);
55
55
  this.requireAvailableFunctionName(input.name, functionArn);
56
56
  const environment = this.makeEnvironment(input);
57
57
  const code = await this.resolveCode(input, environment, options?.caller);
@@ -9,19 +9,24 @@ interface UpdateFunctionConfigurationAuthorizerProperties {
9
9
  * AWS maps the UpdateFunctionConfiguration API operation to the
10
10
  * lambda:UpdateFunctionConfiguration IAM action. The resource is the ARN of
11
11
  * the function whose settings are changing.
12
+ *
13
+ * A request changing the execution role hands Lambda a Role, and is asked
14
+ * separately whether it may pass that one. A request leaving the role alone
15
+ * passes nothing and is asked nothing.
12
16
  */
13
17
  export declare class UpdateFunctionConfigurationAuthorizer {
14
18
  private static readonly action;
15
19
  private readonly iam;
20
+ private readonly passRole;
16
21
  constructor(properties: UpdateFunctionConfigurationAuthorizerProperties);
17
22
  /**
18
23
  * Ensure the caller may change the settings of the function with the given
19
- * ARN.
24
+ * ARN, and may hand Lambda an execution role the request replaces it with.
20
25
  *
21
26
  * The caller is passed through unchanged so sim IAM can distinguish an
22
27
  * omitted caller, which defaults to Account root, from an explicit anonymous
23
28
  * caller.
24
29
  */
25
- authorize(functionArn: string, caller?: SimAwsCaller): void;
30
+ authorize(functionArn: string, roleArn: string | undefined, caller?: SimAwsCaller): void;
26
31
  }
27
32
  export {};
@@ -1,26 +1,37 @@
1
+ import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
3
+ import { simLambdaServicePrincipal } from "../../sim-lambda-service-principal.js";
2
4
  /**
3
5
  * Applies IAM authorization to a Lambda UpdateFunctionConfiguration request.
4
6
  *
5
7
  * AWS maps the UpdateFunctionConfiguration API operation to the
6
8
  * lambda:UpdateFunctionConfiguration IAM action. The resource is the ARN of
7
9
  * the function whose settings are changing.
10
+ *
11
+ * A request changing the execution role hands Lambda a Role, and is asked
12
+ * separately whether it may pass that one. A request leaving the role alone
13
+ * passes nothing and is asked nothing.
8
14
  */
9
15
  export class UpdateFunctionConfigurationAuthorizer {
10
16
  static action = "lambda:UpdateFunctionConfiguration";
11
17
  iam;
18
+ passRole;
12
19
  constructor(properties) {
13
20
  this.iam = properties.iam;
21
+ this.passRole = new SimIamPassRoleAuthorizer({
22
+ iam: properties.iam,
23
+ passedToService: simLambdaServicePrincipal,
24
+ });
14
25
  }
15
26
  /**
16
27
  * Ensure the caller may change the settings of the function with the given
17
- * ARN.
28
+ * ARN, and may hand Lambda an execution role the request replaces it with.
18
29
  *
19
30
  * The caller is passed through unchanged so sim IAM can distinguish an
20
31
  * omitted caller, which defaults to Account root, from an explicit anonymous
21
32
  * caller.
22
33
  */
23
- authorize(functionArn, caller) {
34
+ authorize(functionArn, roleArn, caller) {
24
35
  const decision = this.iam.authorize({
25
36
  action: UpdateFunctionConfigurationAuthorizer.action,
26
37
  resource: functionArn,
@@ -34,5 +45,6 @@ export class UpdateFunctionConfigurationAuthorizer {
34
45
  resource: functionArn,
35
46
  });
36
47
  }
48
+ this.passRole.authorize(roleArn, caller);
37
49
  }
38
50
  }
@@ -36,7 +36,7 @@ export class UpdateFunctionConfigurationCommandHandler {
36
36
  // Allow for potential non-deterministic sequencing of async events.
37
37
  await this.background.sequence();
38
38
  const functionName = simLambdaUnqualifiedFunctionOf(name);
39
- this.authorizer.authorize(this.functions.functionArn(functionName), options?.caller);
39
+ this.authorizer.authorize(this.functions.functionArn(functionName), update.roleArn, options?.caller);
40
40
  const simFunction = this.functions.require(functionName);
41
41
  simFunction.updateConfiguration(update);
42
42
  if (update.environmentVariables !== undefined) {