@kensio/yulin 1.20.16 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
  2. package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
  3. package/dist/service/athena/engine/sim-athena-shims.js +2 -0
  4. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  5. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  6. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
  7. package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
  8. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
  9. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  10. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
  11. package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
  12. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  13. package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
  14. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  15. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  16. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  17. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  18. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  19. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  20. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  21. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  22. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  23. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  24. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  25. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  26. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +16 -0
  27. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
  28. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
  29. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  30. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  31. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  32. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  33. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  34. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  35. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  36. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  37. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  38. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  39. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  40. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  41. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +16 -0
  42. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
  43. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
  44. package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
  45. package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
  46. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
  47. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
  48. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
  49. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
  50. package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
  51. package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
  52. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
  53. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
  54. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
  55. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
  56. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
  57. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
  58. package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
  59. package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
  60. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
  61. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
  62. package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
  63. package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
  64. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
  65. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
  66. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  67. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  68. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +35 -0
  69. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +49 -0
  70. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +33 -0
  71. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +132 -0
  72. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  73. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  74. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  75. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  76. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  77. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  78. package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
  79. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  80. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  81. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  82. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  83. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +28 -0
  84. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +71 -0
  85. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  86. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  87. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
  88. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
  89. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
  90. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
  91. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
  92. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
  93. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +9 -7
  94. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +12 -37
  95. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  96. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  97. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  98. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +35 -0
  99. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
  100. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
  101. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
  102. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
  103. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
  104. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
  105. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
  106. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
  107. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -0
  108. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +22 -0
  109. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +2 -0
  110. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +4 -0
  111. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  112. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  113. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  114. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  115. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  116. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  117. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  118. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  119. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  120. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  121. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  122. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  123. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  124. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  125. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  126. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
  127. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
  128. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
  129. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
  130. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
  131. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
  132. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
  133. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
  134. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
  135. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
  136. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
  137. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
  138. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +4 -0
  139. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
  140. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
  141. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
  142. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
  143. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
  144. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
  145. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
  146. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
  147. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
  148. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
  149. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
  150. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
  151. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  152. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  153. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
  154. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
  155. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +30 -0
  156. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +44 -0
  157. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  158. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +9 -3
  159. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  160. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  161. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +4 -0
  162. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +8 -2
  163. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  164. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  165. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
  166. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
  167. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  168. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  169. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
  170. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
  171. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +7 -3
  172. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +4 -0
  173. package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
  174. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
  175. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
  176. package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
  177. package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
  178. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
  179. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
  180. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  181. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  182. package/dist/service/cloudfront/index.d.ts +2 -0
  183. package/dist/service/cloudfront/index.js +1 -0
  184. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
  185. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
  186. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
  187. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
  188. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
  189. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
  190. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
  191. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
  192. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
  193. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
  194. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  195. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  196. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
  197. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
  198. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
  199. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
  200. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
  201. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
  202. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
  203. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
  204. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
  205. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
  206. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
  207. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
  208. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
  209. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
  210. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
  211. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
  212. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
  213. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
  214. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
  215. package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
  216. package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
  217. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +24 -0
  218. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  219. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  220. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  221. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  222. package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
  223. package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
  224. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +20 -12
  225. package/dist/service/cloudfront/sim-cloudfront-commands.js +20 -17
  226. package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
  227. package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
  228. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
  229. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
  230. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +60 -0
  231. package/dist/service/cloudfront/sim-cloudfront-policies.js +75 -0
  232. package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -44
  233. package/dist/service/cloudfront/sim-cloudfront.js +37 -58
  234. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  235. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  236. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  237. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  238. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  239. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  240. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  241. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  242. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  243. package/dist/service/ecr/sim-ecr.js +16 -4
  244. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  245. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  246. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  247. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  248. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  249. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  250. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  251. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  252. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  253. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  254. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  255. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  256. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  257. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  258. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  259. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  260. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  261. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  262. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  263. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  264. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  265. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  266. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  267. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +34 -2
  268. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +34 -2
  269. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  270. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  271. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  272. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  273. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
  274. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
  275. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
  276. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
  277. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +89 -0
  278. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  279. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
  280. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
  281. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  282. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  283. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  284. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  285. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
  286. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
  287. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
  288. package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
  289. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  290. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  291. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  292. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  293. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  294. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  295. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  296. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  297. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  298. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  299. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  300. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  301. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  302. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  303. package/dist/service/iam/error/sim-iam.error.js +13 -0
  304. package/dist/service/iam/index.d.ts +1 -0
  305. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  306. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  307. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  308. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  309. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
  310. package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
  311. package/dist/service/iam/sim-iam-account-parts.js +1 -0
  312. package/dist/service/iam/sim-iam.d.ts +12 -2
  313. package/dist/service/iam/sim-iam.js +12 -0
  314. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  315. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  316. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  317. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  318. package/dist/service/kms/command/sim-kms-request-options.d.ts +15 -0
  319. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  320. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  321. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  322. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  323. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  324. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  325. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  326. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  327. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  328. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  329. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  330. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  331. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  332. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  333. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  334. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  335. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  336. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  337. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  338. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  339. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  340. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  341. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  342. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  343. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  344. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  345. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  346. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  347. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  348. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  349. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  350. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  351. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
  352. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
  353. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
  354. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
  355. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  356. package/dist/service/logs/sim-logs-commands.js +4 -0
  357. package/dist/service/logs/sim-logs.js +6 -1
  358. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  359. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  360. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  361. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  362. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  363. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  364. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  365. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  366. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  367. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  368. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  369. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  370. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  371. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  372. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  373. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  374. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  375. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  376. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  377. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  378. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  379. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  380. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  381. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  382. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  383. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +11 -12
  384. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  385. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  386. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  387. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +13 -8
  388. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +13 -8
  389. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  390. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  391. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  392. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  393. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  394. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  395. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  396. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  397. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  398. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  399. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  400. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  401. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  402. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
  403. package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
  404. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
  405. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
  406. package/dist/service/sts/sim-sts.d.ts +9 -0
  407. package/dist/service/sts/sim-sts.js +4 -0
  408. package/dist/util/memo/bounded-memo.d.ts +36 -0
  409. package/dist/util/memo/bounded-memo.js +58 -0
  410. package/docs/sdk/README.md +3 -1
  411. package/docs/services/athena/README.md +7 -1
  412. package/docs/services/cloudformation/README.md +197 -11
  413. package/docs/services/cloudfront/README.md +1116 -14
  414. package/docs/services/cloudwatch/README.md +6 -4
  415. package/docs/services/cognito/README.md +8 -7
  416. package/docs/services/dynamodb/README.md +6 -5
  417. package/docs/services/ecs/README.md +23 -9
  418. package/docs/services/elbv2/README.md +6 -2
  419. package/docs/services/eventbridge/README.md +9 -1
  420. package/docs/services/firehose/README.md +9 -3
  421. package/docs/services/glue/README.md +6 -0
  422. package/docs/services/iam/README.md +322 -27
  423. package/docs/services/kinesis/README.md +3 -2
  424. package/docs/services/kms/README.md +11 -2
  425. package/docs/services/lambda/README.md +76 -2
  426. package/docs/services/logs/README.md +22 -2
  427. package/docs/services/s3/README.md +7 -2
  428. package/docs/services/scheduler/README.md +12 -4
  429. package/docs/services/secretsmanager/README.md +6 -3
  430. package/docs/services/ses/README.md +3 -1
  431. package/docs/services/sns/README.md +5 -5
  432. package/docs/services/sqs/README.md +5 -5
  433. package/docs/services/ssm/README.md +35 -18
  434. package/docs/services/stepfunctions/README.md +11 -2
  435. package/docs/services/wafv2/README.md +5 -3
  436. package/package.json +1 -1
  437. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -1,5 +1,6 @@
1
1
  import { type SimAwsCredentialIdentityResolver, type SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
2
2
  import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
3
+ import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
3
4
  import type { SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
4
5
  export interface SimIamAuthZCallerContext {
5
6
  readonly caller: SimAwsResolvedCaller;
@@ -23,13 +24,18 @@ export interface SimIamAuthZCallerContextBuilderProperties {
23
24
  * The caller this simulation attributes an unattributed request to.
24
25
  */
25
26
  readonly defaultCaller?: SimAwsDefaultCaller | undefined;
27
+ /**
28
+ * Where an unattributed request looks before the default.
29
+ */
30
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
26
31
  }
27
32
  /**
28
33
  * Resolves the caller and any policy sources implied by that caller.
29
34
  *
30
- * A request that omits a caller is decided as the simulation's default caller,
31
- * and as the Account root where the simulation named none. An explicit
32
- * anonymous caller falls back to neither.
35
+ * A request that omits a caller is decided as the ambient caller of the run-as
36
+ * block it is inside, then as the simulation's default caller, and as the
37
+ * Account root where there is neither. An explicit anonymous caller falls back
38
+ * to none of them.
33
39
  */
34
40
  export declare class SimIamAuthZCallerContextBuilder {
35
41
  private readonly callerResolver;
@@ -2,9 +2,10 @@ import { SimAwsCallerResolver, } from "../../../aws/caller/sim-aws-caller-resolv
2
2
  /**
3
3
  * Resolves the caller and any policy sources implied by that caller.
4
4
  *
5
- * A request that omits a caller is decided as the simulation's default caller,
6
- * and as the Account root where the simulation named none. An explicit
7
- * anonymous caller falls back to neither.
5
+ * A request that omits a caller is decided as the ambient caller of the run-as
6
+ * block it is inside, then as the simulation's default caller, and as the
7
+ * Account root where there is neither. An explicit anonymous caller falls back
8
+ * to none of them.
8
9
  */
9
10
  export class SimIamAuthZCallerContextBuilder {
10
11
  callerResolver;
@@ -17,6 +18,7 @@ export class SimIamAuthZCallerContextBuilder {
17
18
  this.callerResolver = new SimAwsCallerResolver({
18
19
  credentialIdentityResolver: properties.credentialIdentityResolver,
19
20
  defaultCaller: properties.defaultCaller,
21
+ ambientCaller: properties.ambientCaller,
20
22
  });
21
23
  }
22
24
  /**
@@ -1,81 +1,15 @@
1
1
  import type { SimArn } from "../../../aws/arn.js";
2
- import type { AwsRegionName } from "../../../aws/sim-aws-region.js";
3
- import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
2
+ import type { SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
3
+ import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
4
4
  import type { SimAwsAccountId } from "../../../aws/sim-aws-account.js";
5
5
  import type { SimIamAccountResolver } from "../../registry/sim-iam-account-resolver.js";
6
- import type { SimIamConditionValue, SimIamPolicy, SimIamPolicyDocument } from "../../policy/sim-iam-policy.js";
6
+ import type { SimIamPolicy } from "../../policy/sim-iam-policy.js";
7
7
  import type { SimIamRole, SimIamRoleName } from "../../role/sim-iam-role.js";
8
- import type { SimIamCallerConditionSource } from "./sim-iam-caller-condition-source.js";
9
- import type { SimIamAuthZContext, SimIamAuthZPolicySource, SimIamAuthZPolicySourceType } from "./sim-iam-auth-z-context.js";
8
+ import type { SimIamAuthZContext, SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
9
+ import type { SimIamAuthorizationInput } from "./sim-iam-auth-z-input.js";
10
10
  import type { SimAwsCredentialIdentityResolver } from "../../../aws/caller/sim-aws-caller-resolver.js";
11
11
  import type { SimIamUser, SimIamUsername } from "../../user/sim-iam-user.js";
12
12
  import type { SimIamServiceControlPolicyResolver } from "../scp/sim-iam-scp-resolver.js";
13
- export interface SimIamResourcePolicyInput {
14
- readonly document: SimIamPolicyDocument;
15
- readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
16
- readonly policyName?: string | undefined;
17
- readonly resourceArn?: string | undefined;
18
- }
19
- /**
20
- * Entry-point input for sim IAM allow/deny authorization.
21
- */
22
- export interface SimIamAuthorizationInput {
23
- readonly action: string;
24
- readonly resource: string;
25
- /**
26
- * The Region the request was made in, which sim IAM derives
27
- * `aws:RequestedRegion` from.
28
- *
29
- * A simulated service supplies its own Region. A request reaching one
30
- * through its command handlers therefore carries it, with the caller saying
31
- * nothing. IAM itself belongs to an Account and has no Region to fall back
32
- * on. A request arriving without one leaves the key out of the condition
33
- * context, and a statement conditioned on it matches nothing.
34
- */
35
- readonly region?: AwsRegionName | undefined;
36
- /**
37
- * Condition values known by the service handling the simulated request, such
38
- * as S3 object tags. Sim IAM automatically supplies global condition values
39
- * that it can derive itself, such as AWS:PrincipalArn.
40
- *
41
- * Context-key names are matched case-insensitively by the condition matcher,
42
- * while string values remain case-sensitive. IAM-derived values take
43
- * precedence over supplied values for equivalent keys.
44
- */
45
- readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
46
- /**
47
- * Condition values the service can only supply once IAM has resolved the
48
- * caller, such as the Account a KMS request came from.
49
- *
50
- * These are combined with the values supplied directly, and IAM-derived
51
- * values still take precedence over both.
52
- */
53
- readonly callerConditions?: SimIamCallerConditionSource | undefined;
54
- /**
55
- * Simulated request caller.
56
- *
57
- * If credentials are supplied, they are authenticated before policy
58
- * evaluation. If omitted, authorization defaults to the Account root.
59
- */
60
- readonly caller?: SimAwsCaller | undefined;
61
- /**
62
- * Resource policies supplied by the service that owns the target resource.
63
- *
64
- * Resource policies are not loaded from IAM's managed-policy store. They are
65
- * supplied by the target service, such as an S3 Bucket policy or other
66
- * service-level resource policy.
67
- */
68
- readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
69
- /**
70
- * Whether the resource's own policy must allow the request.
71
- *
72
- * Off by default, which is the ordinary AWS rule: a resource with no policy
73
- * leaves the decision to the caller's identity policies. A service sets it
74
- * for a resource whose policy is mandatory and is the root of trust for
75
- * reaching it, which in AWS means a KMS key policy.
76
- */
77
- readonly requiresResourcePolicyAllow?: boolean | undefined;
78
- }
79
13
  interface SimIamAuthZContextBuilderProperties {
80
14
  /**
81
15
  * The Account whose IAM is evaluating the request.
@@ -86,6 +20,10 @@ interface SimIamAuthZContextBuilderProperties {
86
20
  readonly users: ReadonlyMap<SimIamUsername, SimIamUser>;
87
21
  readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
88
22
  readonly defaultCaller?: SimAwsDefaultCaller | undefined;
23
+ /**
24
+ * Where a request naming no caller looks before the default.
25
+ */
26
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
89
27
  /**
90
28
  * Resolves other Accounts' IAM in the same simulation, for the identity side
91
29
  * of a cross-Account request.
@@ -47,6 +47,7 @@ export class SimIamAuthZContextBuilder {
47
47
  accountRootPrincipal: makeSimAwsAccountRootPrincipal(properties.accountId),
48
48
  credentialIdentityResolver: properties.credentialIdentityResolver,
49
49
  defaultCaller: properties.defaultCaller,
50
+ ambientCaller: properties.ambientCaller,
50
51
  });
51
52
  this.identityPolicyCoordinator = new SimIamAuthZIdentityPolicyCoordinator({
52
53
  policies: properties.policies,
@@ -75,7 +76,7 @@ export class SimIamAuthZContextBuilder {
75
76
  ],
76
77
  resourcePolicies: this.resourcePolicySources(input),
77
78
  serviceControlPolicies: this.scpSourceBuilder.build(callerContext.caller),
78
- allowRequirement: this.allowRequirement.resolve(callerAccount, input.requiresResourcePolicyAllow),
79
+ allowRequirement: this.allowRequirement.resolve(callerAccount, input),
79
80
  action: input.action,
80
81
  resource: input.resource,
81
82
  conditionContext: this.conditionContext(input, callerContext.caller),
@@ -0,0 +1,89 @@
1
+ import type { AwsRegionName } from "../../../aws/sim-aws-region.js";
2
+ import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
3
+ import type { SimIamConditionValue, SimIamPolicyDocument } from "../../policy/sim-iam-policy.js";
4
+ import type { SimIamCallerConditionSource } from "./sim-iam-caller-condition-source.js";
5
+ import type { SimIamAuthZPolicySourceType } from "./sim-iam-auth-z-context.js";
6
+ export interface SimIamResourcePolicyInput {
7
+ readonly document: SimIamPolicyDocument;
8
+ readonly sourceType?: Extract<SimIamAuthZPolicySourceType, "resource" | "trust">;
9
+ readonly policyName?: string | undefined;
10
+ readonly resourceArn?: string | undefined;
11
+ }
12
+ /**
13
+ * Entry-point input for sim IAM allow/deny authorization.
14
+ */
15
+ export interface SimIamAuthorizationInput {
16
+ readonly action: string;
17
+ readonly resource: string;
18
+ /**
19
+ * The Region the request was made in, which sim IAM derives
20
+ * `aws:RequestedRegion` from.
21
+ *
22
+ * A simulated service supplies its own Region. A request reaching one
23
+ * through its command handlers therefore carries it, with the caller saying
24
+ * nothing. IAM itself belongs to an Account and has no Region to fall back
25
+ * on. A request arriving without one leaves the key out of the condition
26
+ * context, and a statement conditioned on it matches nothing.
27
+ */
28
+ readonly region?: AwsRegionName | undefined;
29
+ /**
30
+ * Condition values known by the service handling the simulated request, such
31
+ * as S3 object tags. Sim IAM automatically supplies global condition values
32
+ * that it can derive itself, such as AWS:PrincipalArn.
33
+ *
34
+ * Context-key names are matched case-insensitively by the condition matcher,
35
+ * while string values remain case-sensitive. IAM-derived values take
36
+ * precedence over supplied values for equivalent keys.
37
+ */
38
+ readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
39
+ /**
40
+ * Condition values the service can only supply once IAM has resolved the
41
+ * caller, such as the Account a KMS request came from.
42
+ *
43
+ * These are combined with the values supplied directly, and IAM-derived
44
+ * values still take precedence over both.
45
+ */
46
+ readonly callerConditions?: SimIamCallerConditionSource | undefined;
47
+ /**
48
+ * Simulated request caller.
49
+ *
50
+ * If credentials are supplied, they are authenticated before policy
51
+ * evaluation. If omitted, authorization falls back to the ambient caller of
52
+ * the run-as block the request is inside, then to the simulation's default
53
+ * caller, and then to the Account root.
54
+ */
55
+ readonly caller?: SimAwsCaller | undefined;
56
+ /**
57
+ * Resource policies supplied by the service that owns the target resource.
58
+ *
59
+ * Resource policies are not loaded from IAM's managed-policy store. They are
60
+ * supplied by the target service, such as an S3 Bucket policy or other
61
+ * service-level resource policy.
62
+ */
63
+ readonly resourcePolicies?: readonly SimIamResourcePolicyInput[] | undefined;
64
+ /**
65
+ * Whether the resource's own policy must allow the request.
66
+ *
67
+ * Off by default, which is the ordinary AWS rule: a resource with no policy
68
+ * leaves the decision to the caller's identity policies. A service sets it
69
+ * for a resource whose policy is mandatory and is the root of trust for
70
+ * reaching it, which in AWS means a KMS key policy.
71
+ */
72
+ readonly requiresResourcePolicyAllow?: boolean | undefined;
73
+ /**
74
+ * Whether the service is making this request with the caller's own
75
+ * permissions rather than with its own.
76
+ *
77
+ * Off by default, which is the ordinary AWS rule. Within one Account a
78
+ * resource policy admitting the caller is enough on its own. A service sets
79
+ * this where it reaches another service as the caller. A resource policy
80
+ * that admits whoever the request came from then grants nothing by itself,
81
+ * because what it admits is the service. A resource policy naming the caller
82
+ * still allows the request on its own.
83
+ *
84
+ * No simulated service sets this. Parameter Store is the case it was written
85
+ * for, and the aws/ssm key policy grants its cryptographic actions to a
86
+ * wildcard principal outright.
87
+ */
88
+ readonly withCallerPermissions?: boolean | undefined;
89
+ }
@@ -44,9 +44,12 @@ export declare class SimIamPolicyPrincipalMatcher {
44
44
  /**
45
45
  * Compare an AWS principal pattern with the resolved caller.
46
46
  *
47
- * The wildcard matches both authenticated and anonymous requests. Other AWS
48
- * forms require an ARN-based caller. Account delegation forms compare against
49
- * the account ID derived by the caller resolver.
47
+ * The wildcard matches both authenticated and anonymous requests, and names
48
+ * neither. Other AWS forms require an ARN-based caller. Account delegation
49
+ * forms compare against the account ID derived by the caller resolver. An
50
+ * ARN carrying a wildcard of its own admits a set of principals without
51
+ * naming one, so it counts as a match on the same terms as `*`. Real IAM
52
+ * accepts no wildcard inside a Principal ARN at all.
50
53
  *
51
54
  * A pattern is compared against two ARNs, because an assumed-role session
52
55
  * has two. The session ARN is the caller, and the Role behind it is the
@@ -55,6 +58,11 @@ export declare class SimIamPolicyPrincipalMatcher {
55
58
  * that is not a session, so one comparison happens in that case.
56
59
  */
57
60
  private awsPatternMatches;
61
+ /**
62
+ * The kind of match an ARN principal pattern makes, by whether it names one
63
+ * principal or admits a set of them.
64
+ */
65
+ private arnPatternMatch;
58
66
  /**
59
67
  * Whether a principal pattern names one of the caller's ARNs.
60
68
  */
@@ -38,9 +38,9 @@ export class SimIamPolicyPrincipalMatcher {
38
38
  return this.valueMatches(statement.principal);
39
39
  }
40
40
  if (statement.notPrincipal !== undefined) {
41
- // Excluding the caller says nothing about the Account delegating, so a
42
- // NotPrincipal that leaves the caller in is a direct grant.
43
- return SimIamPrincipalMatch.direct().when(!this.valueMatches(statement.notPrincipal).matched);
41
+ // Leaving the caller out of the exclusion admits it without naming it,
42
+ // in the way a wildcard principal does.
43
+ return SimIamPrincipalMatch.everyone().when(!this.valueMatches(statement.notPrincipal).matched);
44
44
  }
45
45
  return SimIamPrincipalMatch.none();
46
46
  }
@@ -78,9 +78,12 @@ export class SimIamPolicyPrincipalMatcher {
78
78
  /**
79
79
  * Compare an AWS principal pattern with the resolved caller.
80
80
  *
81
- * The wildcard matches both authenticated and anonymous requests. Other AWS
82
- * forms require an ARN-based caller. Account delegation forms compare against
83
- * the account ID derived by the caller resolver.
81
+ * The wildcard matches both authenticated and anonymous requests, and names
82
+ * neither. Other AWS forms require an ARN-based caller. Account delegation
83
+ * forms compare against the account ID derived by the caller resolver. An
84
+ * ARN carrying a wildcard of its own admits a set of principals without
85
+ * naming one, so it counts as a match on the same terms as `*`. Real IAM
86
+ * accepts no wildcard inside a Principal ARN at all.
84
87
  *
85
88
  * A pattern is compared against two ARNs, because an assumed-role session
86
89
  * has two. The session ARN is the caller, and the Role behind it is the
@@ -90,7 +93,7 @@ export class SimIamPolicyPrincipalMatcher {
90
93
  */
91
94
  awsPatternMatches(pattern) {
92
95
  if (pattern === "*") {
93
- return SimIamPrincipalMatch.direct();
96
+ return SimIamPrincipalMatch.everyone();
94
97
  }
95
98
  const caller = this.context.caller;
96
99
  if (caller.arn === undefined) {
@@ -100,9 +103,18 @@ export class SimIamPolicyPrincipalMatcher {
100
103
  if (delegatedAccountId !== undefined) {
101
104
  return SimIamPrincipalMatch.accountDelegation().when(caller.accountId === delegatedAccountId);
102
105
  }
103
- return SimIamPrincipalMatch.direct().when(this.arnMatches(pattern, caller.arn) ||
106
+ return this.arnPatternMatch(pattern).when(this.arnMatches(pattern, caller.arn) ||
104
107
  this.arnMatches(pattern, caller.identityPolicyArn));
105
108
  }
109
+ /**
110
+ * The kind of match an ARN principal pattern makes, by whether it names one
111
+ * principal or admits a set of them.
112
+ */
113
+ arnPatternMatch(pattern) {
114
+ return pattern.includes("*") || pattern.includes("?")
115
+ ? SimIamPrincipalMatch.everyone()
116
+ : SimIamPrincipalMatch.direct();
117
+ }
106
118
  /**
107
119
  * Whether a principal pattern names one of the caller's ARNs.
108
120
  */
@@ -1,16 +1,32 @@
1
1
  /**
2
2
  * How a resource-policy statement came to apply to the caller.
3
3
  *
4
- * AWS treats these two differently. A statement naming the caller's own ARN is
5
- * a grant to that principal. A statement naming the Account, as a bare account
6
- * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
- * granting anything by itself. Most of this simulator does not yet act on the
8
- * difference; a KMS key policy does, because it is the whole reason the
9
- * default key policy does not make a key usable by everyone in the Account.
4
+ * AWS treats these apart. A statement naming the caller's own ARN is a grant
5
+ * to that principal. A statement naming the Account, as a bare account ID or a
6
+ * root ARN, delegates the decision to that Account's IAM and grants nothing by
7
+ * itself. A statement whose principal is a wildcard names nobody. It admits
8
+ * whoever the request came from, and a service calling with the caller's own
9
+ * permissions still needs IAM to allow that caller.
10
+ *
11
+ * A KMS key policy is where the difference shows. It is the whole reason the
12
+ * default key policy leaves a key unusable by the Account's principals until
13
+ * IAM allows them, and the reason the aws/ssm key leaves a SecureString
14
+ * unreadable to a caller holding no kms:Decrypt.
10
15
  */
11
16
  export declare class SimIamPrincipalMatch {
17
+ /**
18
+ * Whether the statement applies to the caller at all.
19
+ */
12
20
  readonly matched: boolean;
21
+ /**
22
+ * Whether the statement applies by way of the caller's Account.
23
+ */
13
24
  readonly isAccountDelegation: boolean;
25
+ /**
26
+ * Whether the statement named the caller, rather than admitting it as one
27
+ * of a wider set.
28
+ */
29
+ readonly namesCaller: boolean;
14
30
  private constructor();
15
31
  /**
16
32
  * The statement does not apply to this caller.
@@ -24,11 +40,16 @@ export declare class SimIamPrincipalMatch {
24
40
  * The statement applies by way of the caller's Account.
25
41
  */
26
42
  static accountDelegation(): SimIamPrincipalMatch;
43
+ /**
44
+ * The statement applies to whoever made the request, naming nobody.
45
+ */
46
+ static everyone(): SimIamPrincipalMatch;
27
47
  /**
28
48
  * The first match among alternatives, since Principal lists are an OR.
29
49
  *
30
- * A direct match wins over a delegated one where both apply, because a
31
- * statement naming the caller grants to the caller whatever else it says.
50
+ * A statement naming the caller wins over one that admits it some other
51
+ * way, because naming the caller grants to the caller whatever else the
52
+ * statement says.
32
53
  */
33
54
  static first(matches: readonly SimIamPrincipalMatch[]): SimIamPrincipalMatch;
34
55
  /**
@@ -1,47 +1,72 @@
1
1
  /**
2
2
  * How a resource-policy statement came to apply to the caller.
3
3
  *
4
- * AWS treats these two differently. A statement naming the caller's own ARN is
5
- * a grant to that principal. A statement naming the Account, as a bare account
6
- * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
- * granting anything by itself. Most of this simulator does not yet act on the
8
- * difference; a KMS key policy does, because it is the whole reason the
9
- * default key policy does not make a key usable by everyone in the Account.
4
+ * AWS treats these apart. A statement naming the caller's own ARN is a grant
5
+ * to that principal. A statement naming the Account, as a bare account ID or a
6
+ * root ARN, delegates the decision to that Account's IAM and grants nothing by
7
+ * itself. A statement whose principal is a wildcard names nobody. It admits
8
+ * whoever the request came from, and a service calling with the caller's own
9
+ * permissions still needs IAM to allow that caller.
10
+ *
11
+ * A KMS key policy is where the difference shows. It is the whole reason the
12
+ * default key policy leaves a key unusable by the Account's principals until
13
+ * IAM allows them, and the reason the aws/ssm key leaves a SecureString
14
+ * unreadable to a caller holding no kms:Decrypt.
10
15
  */
11
16
  export class SimIamPrincipalMatch {
17
+ /**
18
+ * Whether the statement applies to the caller at all.
19
+ */
12
20
  matched;
21
+ /**
22
+ * Whether the statement applies by way of the caller's Account.
23
+ */
13
24
  isAccountDelegation;
14
- constructor(matched, isAccountDelegation) {
25
+ /**
26
+ * Whether the statement named the caller, rather than admitting it as one
27
+ * of a wider set.
28
+ */
29
+ namesCaller;
30
+ constructor(matched, isAccountDelegation, namesCaller) {
15
31
  this.matched = matched;
16
32
  this.isAccountDelegation = isAccountDelegation;
33
+ this.namesCaller = namesCaller;
17
34
  }
18
35
  /**
19
36
  * The statement does not apply to this caller.
20
37
  */
21
38
  static none() {
22
- return new SimIamPrincipalMatch(false, false);
39
+ return new SimIamPrincipalMatch(false, false, false);
23
40
  }
24
41
  /**
25
42
  * The statement names this caller, or applies without naming an Account.
26
43
  */
27
44
  static direct() {
28
- return new SimIamPrincipalMatch(true, false);
45
+ return new SimIamPrincipalMatch(true, false, true);
29
46
  }
30
47
  /**
31
48
  * The statement applies by way of the caller's Account.
32
49
  */
33
50
  static accountDelegation() {
34
- return new SimIamPrincipalMatch(true, true);
51
+ return new SimIamPrincipalMatch(true, true, false);
52
+ }
53
+ /**
54
+ * The statement applies to whoever made the request, naming nobody.
55
+ */
56
+ static everyone() {
57
+ return new SimIamPrincipalMatch(true, false, false);
35
58
  }
36
59
  /**
37
60
  * The first match among alternatives, since Principal lists are an OR.
38
61
  *
39
- * A direct match wins over a delegated one where both apply, because a
40
- * statement naming the caller grants to the caller whatever else it says.
62
+ * A statement naming the caller wins over one that admits it some other
63
+ * way, because naming the caller grants to the caller whatever else the
64
+ * statement says.
41
65
  */
42
66
  static first(matches) {
43
67
  const matched = matches.filter((result) => result.matched);
44
- return (matched.find((result) => !result.isAccountDelegation) ??
68
+ return (matched.find((result) => result.namesCaller) ??
69
+ matched.find((result) => !result.isAccountDelegation) ??
45
70
  matched[0] ??
46
71
  this.none());
47
72
  }
@@ -0,0 +1,74 @@
1
+ import type { SimAwsCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
2
+ import type { SimIamInterServiceAuthZ } from "../sim-iam-inter-service-auth-z.js";
3
+ /**
4
+ * What a service needs to report a Role the caller may not pass.
5
+ */
6
+ export interface SimIamPassRoleDenial {
7
+ readonly principal: SimAwsPrincipal;
8
+ readonly roleArn: string;
9
+ /**
10
+ * What else the message should say about why the request was denied, in the
11
+ * sense SimIamAccessDenied uses it.
12
+ */
13
+ readonly reason?: string | undefined;
14
+ }
15
+ interface SimIamPassRoleAuthorizerProperties {
16
+ readonly iam: SimIamInterServiceAuthZ;
17
+ /**
18
+ * The service principal the Role is being handed to, such as
19
+ * `lambda.amazonaws.com`. This is what `iam:PassedToService` carries.
20
+ */
21
+ readonly passedToService: string;
22
+ /**
23
+ * The error a refusal is reported as.
24
+ *
25
+ * Defaults to the shared IAM AccessDenied. A service reporting its own
26
+ * denials as its own error type supplies one, so a caller catching that type
27
+ * catches a refused Role along with everything else the service refused
28
+ * them.
29
+ */
30
+ readonly denied?: (denial: SimIamPassRoleDenial) => Error;
31
+ }
32
+ /**
33
+ * Authorizes handing a Role to a simulated service.
34
+ *
35
+ * A service given a Role to keep uses it under its own identity later, so
36
+ * being allowed to create the thing settles only half of the request. AWS asks
37
+ * separately whether the caller may hand that Role over, and the resource of
38
+ * that question is the Role. A scoped deployment role refused `iam:PassRole` is
39
+ * one of the commoner ways a real deployment stops.
40
+ *
41
+ * The Role need not exist. Real IAM decides a request before the service
42
+ * handles it, so a caller with no permission to pass a Role is refused whether
43
+ * or not the ARN names one.
44
+ */
45
+ export declare class SimIamPassRoleAuthorizer {
46
+ private readonly iam;
47
+ private readonly passedToService;
48
+ private readonly denied;
49
+ constructor(properties: SimIamPassRoleAuthorizerProperties);
50
+ /**
51
+ * Ensure the caller may hand this Role to the service.
52
+ *
53
+ * A request naming no Role passes nothing and is left alone. That covers an
54
+ * optional Role, such as the one an update request omits to keep the Role
55
+ * already in place, and saves each call site repeating the check.
56
+ */
57
+ authorize(roleArn: string | undefined, caller?: SimAwsCaller): void;
58
+ /**
59
+ * Ensure the caller may hand every one of these Roles to the service.
60
+ *
61
+ * A Firehose delivery stream carrying a Role for its destination beside one
62
+ * for its source is what this is for. Each Role is its own question, and the
63
+ * first refusal is the one reported.
64
+ */
65
+ authorizeAll(roleArns: readonly (string | undefined)[], caller?: SimAwsCaller): void;
66
+ }
67
+ /**
68
+ * The message a service reports a refused Role with, in AWS's wording.
69
+ *
70
+ * A service reporting denials as its own error type builds its message from
71
+ * this, so a refused Role reads the same however it is reported.
72
+ */
73
+ export declare function simIamPassRoleDenialMessage(denial: SimIamPassRoleDenial): string;
74
+ export {};
@@ -0,0 +1,92 @@
1
+ import { SimIamCallerIdentifier } from "../../error/sim-iam-caller-identifier.js";
2
+ import { SimIamAccessDenied } from "../../error/sim-iam.error.js";
3
+ /**
4
+ * The IAM action a caller handing a Role to a service is authorized for.
5
+ */
6
+ const passRoleAction = "iam:PassRole";
7
+ /**
8
+ * The condition key naming the service the Role is being handed to.
9
+ */
10
+ const passedToServiceKey = "iam:PassedToService";
11
+ /**
12
+ * Authorizes handing a Role to a simulated service.
13
+ *
14
+ * A service given a Role to keep uses it under its own identity later, so
15
+ * being allowed to create the thing settles only half of the request. AWS asks
16
+ * separately whether the caller may hand that Role over, and the resource of
17
+ * that question is the Role. A scoped deployment role refused `iam:PassRole` is
18
+ * one of the commoner ways a real deployment stops.
19
+ *
20
+ * The Role need not exist. Real IAM decides a request before the service
21
+ * handles it, so a caller with no permission to pass a Role is refused whether
22
+ * or not the ARN names one.
23
+ */
24
+ export class SimIamPassRoleAuthorizer {
25
+ iam;
26
+ passedToService;
27
+ denied;
28
+ constructor(properties) {
29
+ this.iam = properties.iam;
30
+ this.passedToService = properties.passedToService;
31
+ this.denied = properties.denied ?? accessDenied;
32
+ }
33
+ /**
34
+ * Ensure the caller may hand this Role to the service.
35
+ *
36
+ * A request naming no Role passes nothing and is left alone. That covers an
37
+ * optional Role, such as the one an update request omits to keep the Role
38
+ * already in place, and saves each call site repeating the check.
39
+ */
40
+ authorize(roleArn, caller) {
41
+ if (roleArn === undefined) {
42
+ return;
43
+ }
44
+ const decision = this.iam.authorize({
45
+ action: passRoleAction,
46
+ resource: roleArn,
47
+ conditionContext: { [passedToServiceKey]: this.passedToService },
48
+ caller,
49
+ });
50
+ if (decision.isDenied) {
51
+ throw this.denied({
52
+ principal: decision.caller.principal,
53
+ roleArn,
54
+ reason: decision.denialReason,
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Ensure the caller may hand every one of these Roles to the service.
60
+ *
61
+ * A Firehose delivery stream carrying a Role for its destination beside one
62
+ * for its source is what this is for. Each Role is its own question, and the
63
+ * first refusal is the one reported.
64
+ */
65
+ authorizeAll(roleArns, caller) {
66
+ for (const roleArn of roleArns) {
67
+ this.authorize(roleArn, caller);
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Report a refused Role as the shared IAM AccessDenied.
73
+ */
74
+ function accessDenied(denial) {
75
+ return new SimIamAccessDenied({
76
+ principal: denial.principal,
77
+ reason: denial.reason,
78
+ action: passRoleAction,
79
+ resource: denial.roleArn,
80
+ });
81
+ }
82
+ /**
83
+ * The message a service reports a refused Role with, in AWS's wording.
84
+ *
85
+ * A service reporting denials as its own error type builds its message from
86
+ * this, so a refused Role reads the same however it is reported.
87
+ */
88
+ export function simIamPassRoleDenialMessage(denial) {
89
+ const identifier = new SimIamCallerIdentifier().format(denial.principal);
90
+ return (`User: ${identifier} is not authorized to perform: ${passRoleAction} on ` +
91
+ `resource: ${denial.roleArn}`);
92
+ }