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