@kensio/yulin 1.20.17 → 1.21.1

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 (662) hide show
  1. package/README.md +1 -0
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +4 -0
  3. package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
  4. package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
  5. package/dist/service/athena/engine/sim-athena-shims.js +2 -0
  6. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  7. package/dist/service/aws/factory/sim-aws-lambda-collaborators.d.ts +2 -0
  8. package/dist/service/aws/factory/sim-aws-lambda-collaborators.js +3 -0
  9. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts +7 -0
  10. package/dist/service/aws/factory/sim-aws-logs-collaborators.js +10 -0
  11. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.d.ts +3 -0
  12. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.js +5 -0
  13. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +3 -0
  14. package/dist/service/aws/factory/sim-aws-service-factory.js +4 -0
  15. package/dist/service/aws/sim-aws-account-region-scope.d.ts +3 -0
  16. package/dist/service/aws/sim-aws-account-region-scope.js +4 -0
  17. package/dist/service/aws/sim-aws-account.d.ts +3 -0
  18. package/dist/service/aws/sim-aws-account.js +4 -0
  19. package/dist/service/aws/sim-aws-region.d.ts +3 -0
  20. package/dist/service/aws/sim-aws-region.js +4 -0
  21. package/dist/service/aws/sim-aws-service-accessors.d.ts +3 -0
  22. package/dist/service/aws/sim-aws-service-accessors.js +4 -0
  23. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.d.ts +6 -0
  24. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.js +12 -0
  25. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.d.ts +12 -0
  26. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.js +31 -0
  27. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.d.ts +15 -0
  28. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.js +38 -0
  29. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.d.ts +6 -0
  30. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.js +17 -0
  31. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.d.ts +6 -0
  32. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.js +29 -0
  33. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.d.ts +11 -0
  34. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.js +37 -0
  35. package/dist/service/backup/cfn/sim-cfn-backup-properties.d.ts +12 -0
  36. package/dist/service/backup/cfn/sim-cfn-backup-properties.js +37 -0
  37. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.d.ts +17 -0
  38. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.js +62 -0
  39. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.d.ts +7 -0
  40. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.js +22 -0
  41. package/dist/service/backup/command/sim-backup-authorizer.d.ts +11 -0
  42. package/dist/service/backup/command/sim-backup-authorizer.js +24 -0
  43. package/dist/service/backup/command/sim-backup-command.types.d.ts +238 -0
  44. package/dist/service/backup/command/sim-backup-command.types.js +1 -0
  45. package/dist/service/backup/command/sim-backup-configuration-commands.d.ts +32 -0
  46. package/dist/service/backup/command/sim-backup-configuration-commands.js +138 -0
  47. package/dist/service/backup/command/sim-backup-job-commands.d.ts +23 -0
  48. package/dist/service/backup/command/sim-backup-job-commands.js +52 -0
  49. package/dist/service/backup/command/sim-backup-recovery-point-commands.d.ts +18 -0
  50. package/dist/service/backup/command/sim-backup-recovery-point-commands.js +38 -0
  51. package/dist/service/backup/command/sim-backup-request-options.d.ts +4 -0
  52. package/dist/service/backup/command/sim-backup-request-options.js +1 -0
  53. package/dist/service/backup/command/sim-backup-required-string.d.ts +2 -0
  54. package/dist/service/backup/command/sim-backup-required-string.js +8 -0
  55. package/dist/service/backup/error/sim-backup.error.d.ts +38 -0
  56. package/dist/service/backup/error/sim-backup.error.js +50 -0
  57. package/dist/service/backup/index.d.ts +9 -0
  58. package/dist/service/backup/index.js +7 -0
  59. package/dist/service/backup/job/sim-backup-job-input.d.ts +11 -0
  60. package/dist/service/backup/job/sim-backup-job-input.js +1 -0
  61. package/dist/service/backup/job/sim-backup-job-page.d.ts +22 -0
  62. package/dist/service/backup/job/sim-backup-job-page.js +54 -0
  63. package/dist/service/backup/job/sim-backup-job.d.ts +25 -0
  64. package/dist/service/backup/job/sim-backup-job.factory.d.ts +10 -0
  65. package/dist/service/backup/job/sim-backup-job.factory.js +24 -0
  66. package/dist/service/backup/job/sim-backup-job.js +54 -0
  67. package/dist/service/backup/job/sim-backup-jobs.d.ts +18 -0
  68. package/dist/service/backup/job/sim-backup-jobs.js +33 -0
  69. package/dist/service/backup/plan/sim-backup-plan-schedules.d.ts +21 -0
  70. package/dist/service/backup/plan/sim-backup-plan-schedules.js +66 -0
  71. package/dist/service/backup/plan/sim-backup-plan.d.ts +22 -0
  72. package/dist/service/backup/plan/sim-backup-plan.js +37 -0
  73. package/dist/service/backup/plan/sim-backup-rule.d.ts +9 -0
  74. package/dist/service/backup/plan/sim-backup-rule.js +71 -0
  75. package/dist/service/backup/recovery-point/sim-backup-recovery-point.d.ts +28 -0
  76. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.d.ts +9 -0
  77. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.js +23 -0
  78. package/dist/service/backup/recovery-point/sim-backup-recovery-point.js +62 -0
  79. package/dist/service/backup/sdk/sim-backup-sdk-command-router.d.ts +9 -0
  80. package/dist/service/backup/sdk/sim-backup-sdk-command-router.js +37 -0
  81. package/dist/service/backup/selection/sim-backup-selection.d.ts +22 -0
  82. package/dist/service/backup/selection/sim-backup-selection.js +43 -0
  83. package/dist/service/backup/sim-backup-arn.d.ts +7 -0
  84. package/dist/service/backup/sim-backup-arn.js +12 -0
  85. package/dist/service/backup/sim-backup-properties.d.ts +8 -0
  86. package/dist/service/backup/sim-backup-properties.js +1 -0
  87. package/dist/service/backup/sim-backup-resource-resolver.d.ts +24 -0
  88. package/dist/service/backup/sim-backup-resource-resolver.js +44 -0
  89. package/dist/service/backup/sim-backup-store.d.ts +29 -0
  90. package/dist/service/backup/sim-backup-store.js +80 -0
  91. package/dist/service/backup/sim-backup.d.ts +48 -0
  92. package/dist/service/backup/sim-backup.js +139 -0
  93. package/dist/service/backup/vault/sim-backup-vault-description.d.ts +12 -0
  94. package/dist/service/backup/vault/sim-backup-vault-description.js +15 -0
  95. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.d.ts +5 -0
  96. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.js +31 -0
  97. package/dist/service/backup/vault/sim-backup-vault-lock.d.ts +15 -0
  98. package/dist/service/backup/vault/sim-backup-vault-lock.js +23 -0
  99. package/dist/service/backup/vault/sim-backup-vault-recovery-points.d.ts +12 -0
  100. package/dist/service/backup/vault/sim-backup-vault-recovery-points.js +30 -0
  101. package/dist/service/backup/vault/sim-backup-vault-retention.d.ts +4 -0
  102. package/dist/service/backup/vault/sim-backup-vault-retention.js +20 -0
  103. package/dist/service/backup/vault/sim-backup-vault.d.ts +33 -0
  104. package/dist/service/backup/vault/sim-backup-vault.js +49 -0
  105. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.d.ts +3 -0
  106. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.js +66 -0
  107. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  108. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
  109. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
  110. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-cfn-value-adapter.js +6 -0
  111. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.d.ts +23 -0
  112. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.js +22 -0
  113. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.js +2 -0
  114. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.d.ts +49 -0
  115. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.js +61 -0
  116. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.d.ts +51 -0
  117. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.js +1 -0
  118. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.js +4 -0
  119. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +12 -1
  120. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
  121. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
  122. package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
  123. package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
  124. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
  125. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
  126. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
  127. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
  128. package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
  129. package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
  130. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
  131. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
  132. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
  133. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
  134. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
  135. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
  136. package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
  137. package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
  138. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
  139. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
  140. package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
  141. package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
  142. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
  143. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
  144. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +13 -3
  145. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +31 -3
  146. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +8 -3
  147. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +96 -12
  148. package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
  149. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +9 -8
  150. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +40 -11
  151. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
  152. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
  153. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
  154. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
  155. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
  156. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
  157. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-behavior-policies.d.ts +3 -2
  158. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-behavior-policies.js +3 -2
  159. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -6
  160. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +6 -6
  161. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +8 -23
  162. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
  163. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
  164. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
  165. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
  166. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
  167. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
  168. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
  169. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
  170. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  171. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +12 -0
  172. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  173. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  174. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
  175. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
  176. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
  177. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
  178. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
  179. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
  180. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
  181. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
  182. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
  183. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
  184. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
  185. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
  186. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  187. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
  188. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
  189. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
  190. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
  191. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
  192. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
  193. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
  194. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
  195. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
  196. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
  197. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
  198. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
  199. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
  200. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
  201. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +7 -5
  202. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +8 -5
  203. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +4 -1
  204. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  205. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +6 -2
  206. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
  207. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
  208. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
  209. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
  210. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +5 -3
  211. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  212. package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
  213. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
  214. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
  215. package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
  216. package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
  217. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
  218. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
  219. package/dist/service/cloudfront/index.d.ts +2 -0
  220. package/dist/service/cloudfront/index.js +1 -0
  221. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
  222. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
  223. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
  224. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
  225. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
  226. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
  227. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
  228. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
  229. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
  230. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
  231. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
  232. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
  233. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
  234. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
  235. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
  236. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
  237. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
  238. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
  239. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
  240. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
  241. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
  242. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
  243. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
  244. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
  245. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
  246. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
  247. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
  248. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
  249. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
  250. package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
  251. package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
  252. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  253. package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
  254. package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
  255. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +12 -0
  256. package/dist/service/cloudfront/sim-cloudfront-commands.js +12 -0
  257. package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
  258. package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
  259. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
  260. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
  261. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +22 -5
  262. package/dist/service/cloudfront/sim-cloudfront-policies.js +27 -5
  263. package/dist/service/cloudfront/sim-cloudfront.d.ts +15 -31
  264. package/dist/service/cloudfront/sim-cloudfront.js +23 -41
  265. package/dist/service/cloudwatch/index.d.ts +1 -0
  266. package/dist/service/cloudwatch/index.js +1 -0
  267. package/dist/service/cloudwatch/sim-cloudwatch-commands.d.ts +2 -0
  268. package/dist/service/cloudwatch/sim-cloudwatch-commands.js +6 -0
  269. package/dist/service/cloudwatch/sim-cloudwatch.d.ts +9 -0
  270. package/dist/service/cloudwatch/sim-cloudwatch.js +10 -0
  271. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.d.ts +58 -0
  272. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.js +53 -0
  273. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.d.ts +3 -0
  274. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.js +8 -2
  275. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.d.ts +3 -0
  276. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.js +4 -0
  277. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.d.ts +11 -1
  278. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.js +13 -1
  279. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.d.ts +3 -0
  280. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.js +16 -4
  281. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.d.ts +7 -0
  282. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.js +11 -1
  283. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.d.ts +3 -0
  284. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.js +8 -2
  285. package/dist/service/cognito/command/hosted/hosted-auth.command.d.ts +19 -0
  286. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.d.ts +1 -1
  287. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.js +3 -2
  288. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.d.ts +8 -0
  289. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.js +11 -3
  290. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.d.ts +11 -1
  291. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.js +13 -2
  292. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.d.ts +11 -1
  293. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.js +11 -1
  294. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.d.ts +7 -1
  295. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.js +18 -7
  296. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.d.ts +20 -3
  297. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.js +19 -3
  298. package/dist/service/cognito/command/hosted/sim-cognito-token-endpoint.d.ts +2 -0
  299. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.d.ts +8 -0
  300. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.js +13 -4
  301. package/dist/service/cognito/command/sim-cognito-commands.d.ts +5 -0
  302. package/dist/service/cognito/command/sim-cognito-commands.js +22 -2
  303. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.d.ts +74 -0
  304. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.js +110 -0
  305. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.d.ts +5 -49
  306. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.js +7 -87
  307. package/dist/service/cognito/command/user/sim-cognito-user-commands.d.ts +4 -0
  308. package/dist/service/cognito/command/user/sim-cognito-user-commands.js +38 -29
  309. package/dist/service/cognito/error/sim-cognito-managed-login.error.d.ts +23 -0
  310. package/dist/service/cognito/error/sim-cognito-managed-login.error.js +36 -0
  311. package/dist/service/cognito/error/sim-cognito-throttle.error.d.ts +13 -0
  312. package/dist/service/cognito/error/sim-cognito-throttle.error.js +15 -0
  313. package/dist/service/cognito/index.d.ts +2 -0
  314. package/dist/service/cognito/index.js +2 -0
  315. package/dist/service/cognito/metric/sim-cognito-counted-request.d.ts +50 -0
  316. package/dist/service/cognito/metric/sim-cognito-counted-request.js +51 -0
  317. package/dist/service/cognito/metric/sim-cognito-metrics.d.ts +22 -0
  318. package/dist/service/cognito/metric/sim-cognito-metrics.js +26 -0
  319. package/dist/service/cognito/metric/sim-cognito-pool-metrics.d.ts +40 -0
  320. package/dist/service/cognito/metric/sim-cognito-pool-metrics.js +51 -0
  321. package/dist/service/cognito/metric/sim-cognito-throttled-request.d.ts +11 -0
  322. package/dist/service/cognito/metric/sim-cognito-throttled-request.js +15 -0
  323. package/dist/service/cognito/serve/page/sim-cognito-managed-login.d.ts +1 -0
  324. package/dist/service/cognito/serve/page/sim-cognito-managed-login.js +6 -1
  325. package/dist/service/cognito/serve/page/sim-cognito-page-markup.d.ts +4 -1
  326. package/dist/service/cognito/serve/page/sim-cognito-page-markup.js +6 -2
  327. package/dist/service/cognito/serve/page/sim-cognito-provider-page.d.ts +35 -0
  328. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +50 -0
  329. package/dist/service/cognito/sim-cognito-identity-provider.d.ts +6 -0
  330. package/dist/service/cognito/sim-cognito-identity-provider.js +1 -0
  331. package/dist/service/cognito/sim-cognito-user-directory.js +3 -3
  332. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.d.ts +9 -0
  333. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.js +2 -0
  334. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.d.ts +8 -0
  335. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.js +8 -0
  336. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.d.ts +36 -0
  337. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.js +45 -0
  338. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.d.ts +42 -9
  339. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.js +56 -27
  340. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.d.ts +52 -0
  341. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.js +49 -0
  342. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +48 -0
  343. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +94 -0
  344. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.d.ts +13 -0
  345. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.js +19 -0
  346. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.d.ts +7 -0
  347. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.js +9 -0
  348. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.d.ts +3 -2
  349. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.js +3 -2
  350. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.d.ts +18 -1
  351. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.js +35 -18
  352. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +6 -5
  353. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +6 -5
  354. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +6 -4
  355. package/dist/service/kms/command/sim-kms-request-options.d.ts +9 -5
  356. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  357. package/dist/service/lambda/command/create-function/create-function.handler.js +4 -1
  358. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  359. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +7 -11
  360. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +7 -8
  361. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.d.ts +11 -0
  362. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.js +31 -0
  363. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.d.ts +10 -0
  364. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.js +12 -0
  365. package/dist/service/lambda/function/sim-lambda-function.d.ts +3 -0
  366. package/dist/service/lambda/function/sim-lambda-function.js +6 -2
  367. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +7 -0
  368. package/dist/service/lambda/metric/sim-lambda-function-metrics.d.ts +47 -0
  369. package/dist/service/lambda/metric/sim-lambda-function-metrics.js +83 -0
  370. package/dist/service/lambda/metric/sim-lambda-iterator-age.d.ts +29 -0
  371. package/dist/service/lambda/metric/sim-lambda-iterator-age.js +41 -0
  372. package/dist/service/lambda/metric/sim-lambda-metrics.d.ts +12 -0
  373. package/dist/service/lambda/metric/sim-lambda-metrics.js +13 -0
  374. package/dist/service/lambda/sim-lambda-commands.d.ts +2 -0
  375. package/dist/service/lambda/sim-lambda-commands.js +2 -1
  376. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.d.ts +9 -0
  377. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.js +25 -0
  378. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.d.ts +30 -0
  379. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.js +52 -0
  380. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.d.ts +40 -0
  381. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.js +66 -0
  382. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.d.ts +19 -0
  383. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.js +40 -0
  384. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.d.ts +5 -0
  385. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.js +23 -0
  386. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.d.ts +25 -0
  387. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.js +58 -0
  388. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.d.ts +6 -0
  389. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.js +19 -0
  390. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.d.ts +2 -0
  391. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +4 -0
  392. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +5 -3
  393. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +12 -3
  394. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
  395. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
  396. package/dist/service/logs/command/event/sim-logs-put-log-events.d.ts +3 -0
  397. package/dist/service/logs/command/event/sim-logs-put-log-events.js +3 -0
  398. package/dist/service/logs/command/group/sim-logs-log-group-commands.js +3 -3
  399. package/dist/service/logs/command/metric/metric-filter.command.d.ts +79 -0
  400. package/dist/service/logs/command/metric/metric-filter.command.js +1 -0
  401. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.d.ts +48 -0
  402. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.js +95 -0
  403. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.d.ts +11 -0
  404. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.js +79 -0
  405. package/dist/service/logs/command/sim-logs-command.types.d.ts +1 -0
  406. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
  407. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
  408. package/dist/service/logs/group/sim-logs-log-group.d.ts +6 -0
  409. package/dist/service/logs/group/sim-logs-log-group.js +6 -0
  410. package/dist/service/logs/index.d.ts +6 -0
  411. package/dist/service/logs/index.js +4 -0
  412. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.d.ts +40 -0
  413. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.js +78 -0
  414. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.d.ts +25 -0
  415. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.js +81 -0
  416. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.d.ts +57 -0
  417. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.js +85 -0
  418. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.d.ts +24 -0
  419. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.js +41 -0
  420. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.d.ts +20 -0
  421. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.js +39 -0
  422. package/dist/service/logs/metric/sim-logs-metric-datapoint.d.ts +25 -0
  423. package/dist/service/logs/metric/sim-logs-metric-datapoint.js +1 -0
  424. package/dist/service/logs/metric/sim-logs-metric-fan-out.d.ts +62 -0
  425. package/dist/service/logs/metric/sim-logs-metric-fan-out.js +116 -0
  426. package/dist/service/logs/metric/sim-logs-metric-filter-selection.d.ts +17 -0
  427. package/dist/service/logs/metric/sim-logs-metric-filter-selection.js +17 -0
  428. package/dist/service/logs/metric/sim-logs-metric-filter-store.d.ts +35 -0
  429. package/dist/service/logs/metric/sim-logs-metric-filter-store.js +47 -0
  430. package/dist/service/logs/metric/sim-logs-metric-filter.d.ts +49 -0
  431. package/dist/service/logs/metric/sim-logs-metric-filter.js +95 -0
  432. package/dist/service/logs/metric/sim-logs-metric-publication-failure.d.ts +31 -0
  433. package/dist/service/logs/metric/sim-logs-metric-publication-failure.js +12 -0
  434. package/dist/service/logs/metric/sim-logs-metric-publications.d.ts +11 -0
  435. package/dist/service/logs/metric/sim-logs-metric-publications.js +1 -0
  436. package/dist/service/logs/metric/sim-logs-metric-transformation.d.ts +45 -0
  437. package/dist/service/logs/metric/sim-logs-metric-transformation.js +127 -0
  438. package/dist/service/logs/sdk/sim-logs-sdk-command-router.js +12 -0
  439. package/dist/service/logs/sim-logs-commands.d.ts +12 -0
  440. package/dist/service/logs/sim-logs-commands.js +17 -0
  441. package/dist/service/logs/sim-logs-metric-operations.d.ts +31 -0
  442. package/dist/service/logs/sim-logs-metric-operations.js +37 -0
  443. package/dist/service/logs/sim-logs.d.ts +4 -3
  444. package/dist/service/logs/sim-logs.js +4 -3
  445. package/dist/service/logs/write/sim-logs-service-writer.d.ts +3 -0
  446. package/dist/service/logs/write/sim-logs-service-writer.js +5 -1
  447. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +32 -0
  448. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +31 -1
  449. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +13 -2
  450. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +18 -1
  451. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +17 -1
  452. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +27 -3
  453. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +45 -0
  454. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +90 -0
  455. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.d.ts +42 -0
  456. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.js +59 -0
  457. package/dist/service/s3/bucket/lock/sim-s3-default-retention.d.ts +8 -0
  458. package/dist/service/s3/bucket/lock/sim-s3-default-retention.js +15 -0
  459. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.d.ts +49 -0
  460. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.js +102 -0
  461. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.d.ts +14 -0
  462. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.js +1 -0
  463. package/dist/service/s3/bucket/lock/sim-s3-object-lock.d.ts +62 -0
  464. package/dist/service/s3/bucket/lock/sim-s3-object-lock.js +100 -0
  465. package/dist/service/s3/bucket/lock/sim-s3-object-retention.d.ts +55 -0
  466. package/dist/service/s3/bucket/lock/sim-s3-object-retention.js +82 -0
  467. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  468. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +9 -1
  469. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.d.ts +1 -1
  470. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +1 -2
  471. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +114 -0
  472. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +148 -0
  473. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +30 -29
  474. package/dist/service/s3/bucket/sim-s3-bucket.js +42 -45
  475. package/dist/service/s3/bucket/sim-s3-object-deletion.d.ts +30 -0
  476. package/dist/service/s3/bucket/sim-s3-object-deletion.js +29 -0
  477. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.d.ts +61 -0
  478. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.js +65 -0
  479. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.d.ts +97 -0
  480. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.js +176 -0
  481. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.d.ts +10 -0
  482. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.js +16 -0
  483. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +85 -0
  484. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +101 -0
  485. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.d.ts +52 -0
  486. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.js +91 -0
  487. package/dist/service/s3/bucket/versioning/sim-s3-version-page.d.ts +32 -0
  488. package/dist/service/s3/bucket/versioning/sim-s3-version-page.js +45 -0
  489. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts +0 -5
  490. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +3 -14
  491. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +18 -1
  492. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +34 -1
  493. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.d.ts +37 -0
  494. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.js +78 -0
  495. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.d.ts +20 -0
  496. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.js +107 -0
  497. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +14 -7
  498. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +29 -37
  499. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +62 -0
  500. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +89 -0
  501. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +9 -5
  502. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +16 -16
  503. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.d.ts +9 -5
  504. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.js +17 -6
  505. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.d.ts +19 -0
  506. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.js +28 -0
  507. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +24 -0
  508. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +30 -0
  509. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.command.d.ts +2 -0
  510. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.handler.js +3 -1
  511. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +3 -1
  512. package/dist/service/s3/command/copy-object/copy-object.handler.js +3 -1
  513. package/dist/service/s3/command/delete-object/delete-object-version-removal.d.ts +50 -0
  514. package/dist/service/s3/command/delete-object/delete-object-version-removal.js +52 -0
  515. package/dist/service/s3/command/delete-object/delete-object.command.d.ts +19 -2
  516. package/dist/service/s3/command/delete-object/delete-object.handler.d.ts +7 -1
  517. package/dist/service/s3/command/delete-object/delete-object.handler.js +28 -16
  518. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.d.ts +24 -0
  519. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.js +32 -0
  520. package/dist/service/s3/command/delete-objects/delete-object-attempt.d.ts +6 -2
  521. package/dist/service/s3/command/delete-objects/delete-object-attempt.js +6 -2
  522. package/dist/service/s3/command/delete-objects/delete-objects-key-removal.js +10 -9
  523. package/dist/service/s3/command/delete-objects/delete-objects-outcome.js +9 -1
  524. package/dist/service/s3/command/delete-objects/delete-objects.command.d.ts +6 -0
  525. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.d.ts +23 -0
  526. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.js +1 -0
  527. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.d.ts +31 -0
  528. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.js +40 -0
  529. package/dist/service/s3/command/get-object/get-object-loader.d.ts +3 -2
  530. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  531. package/dist/service/s3/command/get-object/get-object.command.d.ts +9 -1
  532. package/dist/service/s3/command/get-object/get-object.handler.js +1 -1
  533. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.d.ts +25 -0
  534. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.js +1 -0
  535. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.d.ts +31 -0
  536. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.js +41 -0
  537. package/dist/service/s3/command/head-object/head-object-loader.d.ts +1 -1
  538. package/dist/service/s3/command/head-object/head-object-loader.js +7 -3
  539. package/dist/service/s3/command/head-object/head-object.command.d.ts +9 -1
  540. package/dist/service/s3/command/head-object/head-object.handler.js +1 -1
  541. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.d.ts +31 -0
  542. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.js +55 -0
  543. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.d.ts +17 -0
  544. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +34 -0
  545. package/dist/service/s3/command/list-object-versions/list-object-versions.command.d.ts +59 -0
  546. package/dist/service/s3/command/list-object-versions/list-object-versions.command.js +1 -0
  547. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.d.ts +34 -0
  548. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.js +62 -0
  549. package/dist/service/s3/command/object/sim-s3-read-object-version.d.ts +34 -0
  550. package/dist/service/s3/command/object/sim-s3-read-object-version.js +52 -0
  551. package/dist/service/s3/command/object-lock/sim-s3-locked-version.d.ts +11 -0
  552. package/dist/service/s3/command/object-lock/sim-s3-locked-version.js +27 -0
  553. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.d.ts +42 -0
  554. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.js +66 -0
  555. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.d.ts +30 -0
  556. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.js +41 -0
  557. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.d.ts +21 -0
  558. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.js +1 -0
  559. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.d.ts +31 -0
  560. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.js +44 -0
  561. package/dist/service/s3/command/put-object/put-object.command.d.ts +3 -0
  562. package/dist/service/s3/command/put-object/put-object.handler.js +10 -10
  563. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.d.ts +24 -0
  564. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.js +1 -0
  565. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.d.ts +32 -0
  566. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.js +41 -0
  567. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.d.ts +21 -0
  568. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.js +1 -0
  569. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.d.ts +32 -0
  570. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.js +47 -0
  571. package/dist/service/s3/command/put-object-retention/put-object-retention.command.d.ts +29 -0
  572. package/dist/service/s3/command/put-object-retention/put-object-retention.command.js +1 -0
  573. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.d.ts +31 -0
  574. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.js +42 -0
  575. package/dist/service/s3/command/sim-s3-command.types.d.ts +7 -0
  576. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.d.ts +35 -0
  577. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.js +57 -0
  578. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.d.ts +26 -0
  579. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.js +34 -0
  580. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.d.ts +13 -0
  581. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.js +28 -0
  582. package/dist/service/s3/error/sim-s3-object-lock.error.d.ts +22 -0
  583. package/dist/service/s3/error/sim-s3-object-lock.error.js +26 -0
  584. package/dist/service/s3/error/sim-s3.error.d.ts +22 -0
  585. package/dist/service/s3/error/sim-s3.error.js +26 -0
  586. package/dist/service/s3/notification/event/sim-s3-event-records.js +3 -0
  587. package/dist/service/s3/notification/event/sim-s3-event.type.d.ts +5 -3
  588. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +15 -0
  589. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +4 -1
  590. package/dist/service/s3/notification/event/sim-s3-object-event.d.ts +6 -0
  591. package/dist/service/s3/notification/event/sim-s3-object-event.js +2 -0
  592. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +1 -1
  593. package/dist/service/s3/notification/sim-s3-object-notifier.js +2 -2
  594. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.d.ts +10 -0
  595. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +84 -0
  596. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +6 -132
  597. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.d.ts +10 -0
  598. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.js +28 -0
  599. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.d.ts +7 -0
  600. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.js +80 -0
  601. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  602. package/dist/service/s3/sim-s3-commands.js +6 -0
  603. package/dist/service/s3/sim-s3-operations.d.ts +5 -5
  604. package/dist/service/s3/sim-s3-operations.js +5 -6
  605. package/dist/service/s3/sim-s3-version-operations.d.ts +32 -0
  606. package/dist/service/s3/sim-s3-version-operations.js +45 -0
  607. package/dist/service/scheduler/command/schedule/schedule.command.d.ts +9 -2
  608. package/dist/service/scheduler/command/schedule/sim-scheduler-described-schedule.js +2 -0
  609. package/dist/service/scheduler/command/schedule/sim-scheduler-unsimulated-target.js +0 -6
  610. package/dist/service/scheduler/command/sim-scheduler-command.types.d.ts +1 -1
  611. package/dist/service/scheduler/command/sim-scheduler-commands.js +1 -0
  612. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.d.ts +17 -0
  613. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.js +29 -0
  614. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.d.ts +6 -1
  615. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.js +9 -0
  616. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.d.ts +18 -0
  617. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.js +62 -0
  618. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.d.ts +29 -0
  619. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.js +81 -0
  620. package/dist/service/scheduler/delivery/sim-scheduler-delivery-function.js +9 -5
  621. package/dist/service/scheduler/delivery/sim-scheduler-delivery.d.ts +11 -0
  622. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.d.ts +5 -1
  623. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.js +8 -0
  624. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.d.ts +4 -1
  625. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.js +20 -15
  626. package/dist/service/scheduler/index.d.ts +1 -1
  627. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.d.ts +15 -0
  628. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.js +24 -0
  629. package/dist/service/scheduler/target/sim-scheduler-retry-policy.d.ts +20 -0
  630. package/dist/service/scheduler/target/sim-scheduler-retry-policy.js +37 -0
  631. package/dist/service/scheduler/target/sim-scheduler-target.d.ts +6 -0
  632. package/dist/service/scheduler/target/sim-scheduler-target.js +12 -0
  633. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.d.ts +15 -0
  634. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.js +33 -0
  635. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.d.ts +16 -0
  636. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.js +33 -1
  637. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.d.ts +12 -6
  638. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.js +18 -13
  639. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.d.ts +1 -0
  640. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.js +9 -1
  641. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +7 -10
  642. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +10 -11
  643. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +11 -16
  644. package/dist/terraform/map/sim-tf-map-sqs-redrive.d.ts +4 -3
  645. package/dist/terraform/map/sim-tf-map-sqs-redrive.js +4 -3
  646. package/docs/README.md +1 -0
  647. package/docs/services/athena/README.md +7 -1
  648. package/docs/services/backup/README.md +553 -0
  649. package/docs/services/cloudformation/README.md +18 -7
  650. package/docs/services/cloudfront/README.md +903 -25
  651. package/docs/services/cloudwatch/README.md +159 -3
  652. package/docs/services/cognito/README.md +370 -7
  653. package/docs/services/ecs/README.md +5 -2
  654. package/docs/services/kms/README.md +9 -5
  655. package/docs/services/lambda/README.md +28 -0
  656. package/docs/services/logs/README.md +290 -3
  657. package/docs/services/s3/README.md +463 -20
  658. package/docs/services/scheduler/README.md +48 -9
  659. package/docs/services/sqs/README.md +47 -10
  660. package/docs/services/ssm/README.md +26 -33
  661. package/llms.txt +1 -0
  662. package/package.json +7 -2
@@ -862,13 +862,340 @@ failures come back.
862
862
 
863
863
  ### Limitations
864
864
 
865
- - Object versioning is left out. Deletion removes the Object rather than writing a delete marker,
866
- and `VersionId` and `MFA` are both ignored on the request.
865
+ - `VersionId` and `MFA` are ignored on a `DeleteObjects` request. A versioned Bucket writes a delete
866
+ marker over each key and reports it per key under `DeleteMarker` and `DeleteMarkerVersionId`, and
867
+ removing a named version needs `DeleteObjectCommand`. See
868
+ [Object versioning](#object-versioning).
867
869
  - A request naming no Objects, or more than the thousand S3 accepts, is refused with `MalformedXML`
868
870
  before anything is deleted.
869
871
  - A Bucket using filesystem-backed storage refuses deletion. See
870
872
  [Filesystem-backed Bucket storage](#filesystem-backed-bucket-storage).
871
873
 
874
+ ## Object versioning
875
+
876
+ A versioned Bucket keeps every write of a key instead of overwriting it, and answers a delete with a
877
+ marker rather than removing anything. Turn it on with `PutBucketVersioningCommand`, or with
878
+ `VersioningConfiguration` on an `AWS::S3::Bucket` resource.
879
+
880
+ ```typescript sim-s3-object-versioning
881
+ import {
882
+ DeleteObjectCommand,
883
+ GetObjectCommand,
884
+ ListObjectVersionsCommand,
885
+ PutBucketVersioningCommand,
886
+ PutObjectCommand,
887
+ } from "@aws-sdk/client-s3";
888
+ import { SimAws } from "@kensio/yulin";
889
+
890
+ const simAws = new SimAws();
891
+ const simS3 = simAws.s3();
892
+
893
+ await simAws.cloudFormation().deployTemplate({
894
+ stackName: "history-stack",
895
+ template: {
896
+ Resources: {
897
+ HistoryBucket: {
898
+ Type: "AWS::S3::Bucket",
899
+ Properties: { BucketName: "history" },
900
+ },
901
+ },
902
+ },
903
+ });
904
+
905
+ // Written before the Bucket was versioned, so this one takes the null version
906
+ // id, as it does in real S3. A template declaring VersioningConfiguration
907
+ // gives even the first write a version id of its own instead.
908
+ await simS3.putObject(
909
+ new PutObjectCommand({
910
+ Bucket: "history",
911
+ Key: "snapshots/reader-1.json",
912
+ Body: JSON.stringify({ words: ["好"] }),
913
+ }),
914
+ );
915
+
916
+ await simS3.putBucketVersioning(
917
+ new PutBucketVersioningCommand({
918
+ Bucket: "history",
919
+ VersioningConfiguration: { Status: "Enabled" },
920
+ }),
921
+ );
922
+
923
+ await simS3.putObject(
924
+ new PutObjectCommand({
925
+ Bucket: "history",
926
+ Key: "snapshots/reader-1.json",
927
+ Body: JSON.stringify({ words: [] }),
928
+ }),
929
+ );
930
+
931
+ // The write did not overwrite anything. Both versions are listed, newest
932
+ // first, with IsLatest on the one a plain read answers with.
933
+ const listed = await simS3.listObjectVersions(
934
+ new ListObjectVersionsCommand({ Bucket: "history", Prefix: "snapshots/" }),
935
+ );
936
+
937
+ console.log(listed.Versions?.map((version) => version.VersionId));
938
+ // [ "<a version id>", "null" ]
939
+
940
+ // Recovery is a read of the earlier version and a write of it back.
941
+ const earlier = await simS3.getObject(
942
+ new GetObjectCommand({
943
+ Bucket: "history",
944
+ Key: "snapshots/reader-1.json",
945
+ VersionId: "null",
946
+ }),
947
+ );
948
+
949
+ const recovered = await Array.fromAsync(earlier.Body ?? []);
950
+
951
+ await simS3.putObject(
952
+ new PutObjectCommand({
953
+ Bucket: "history",
954
+ Key: "snapshots/reader-1.json",
955
+ Body: Buffer.concat(recovered),
956
+ }),
957
+ );
958
+
959
+ // A delete writes a marker over the key rather than removing anything, and
960
+ // deleting the marker by its own id brings the Object back.
961
+ const deleted = await simS3.deleteObject(
962
+ new DeleteObjectCommand({
963
+ Bucket: "history",
964
+ Key: "snapshots/reader-1.json",
965
+ }),
966
+ );
967
+
968
+ console.log(deleted.DeleteMarker); // true
969
+
970
+ await simS3.deleteObject(
971
+ new DeleteObjectCommand({
972
+ Bucket: "history",
973
+ Key: "snapshots/reader-1.json",
974
+ VersionId: deleted.VersionId,
975
+ }),
976
+ );
977
+ ```
978
+
979
+ `PutObjectCommand`, `CopyObjectCommand` and `CompleteMultipartUploadCommand` each report the
980
+ `VersionId` they wrote under. `GetObjectCommand` and `HeadObjectCommand` take one and read that
981
+ version, and report the version they read. `DeleteObjectCommand` takes one and removes that version
982
+ for good.
983
+
984
+ `ListObjectVersionsCommand` reports the Objects under `Versions` and the delete markers under
985
+ `DeleteMarkers`, keys in ascending order and each key's versions newest first. `IsLatest` marks the
986
+ version a read without a `VersionId` answers with. `ListObjectsV2Command` reports the current
987
+ version of each key alone, and a key hidden behind a delete marker is absent from it.
988
+
989
+ Both lists are paged together, so `MaxKeys` counts an Object and a marker alike. A truncated listing
990
+ carries `NextKeyMarker` and `NextVersionIdMarker`, which the next request sends back as `KeyMarker`
991
+ and `VersionIdMarker`. See [Walking a truncated listing](#walking-a-truncated-listing) for the page
992
+ size and how to lower it.
993
+
994
+ ### Enabling versioning over a Bucket that already holds Objects
995
+
996
+ Real S3 gives an Object written before the configuration arrived the version id `null`, and
997
+ simulated S3 does the same. That Object is the current version of its key, reads back under the
998
+ literal string `null`, and stays where it is when a later write pushes it out of being current.
999
+
1000
+ A Bucket keeping no versions still answers `ListObjectVersionsCommand`, reporting each Object once
1001
+ under the null version id and marked latest. That is what real S3 answers for an unversioned Bucket,
1002
+ and it means the operation is safe to call before deciding whether the Bucket is versioned.
1003
+
1004
+ ### Suspending versioning
1005
+
1006
+ `Status: "Suspended"` stops new versions being made and discards none of the ones already there. An
1007
+ Object written while suspended takes the null version id and replaces whatever else holds it, so a
1008
+ run of writes shares one version between them. Every version written while versioning was enabled
1009
+ stays readable by its own id.
1010
+
1011
+ There is no way back to unversioned. Real S3 has no request for it, and
1012
+ `GetBucketVersioningCommand` reports no status at all for a Bucket nobody has configured, which is
1013
+ what separates one from a Bucket whose versioning was suspended.
1014
+
1015
+ ### Event notifications
1016
+
1017
+ A delete on a versioned Bucket raises `s3:ObjectRemoved:DeleteMarkerCreated` rather than
1018
+ `s3:ObjectRemoved:Delete`, carrying the marker's version id. Removing a version by its own id raises
1019
+ `s3:ObjectRemoved:Delete` with that version id. A record from a versioned Bucket carries
1020
+ `s3.object.versionId`, and one from a Bucket without versioning leaves the field out.
1021
+
1022
+ ### Limitations
1023
+
1024
+ - MFA delete is refused with `NotImplemented` rather than stored. Nothing here could enforce it, and
1025
+ a Bucket reporting a protection it does not apply is worse than one that says so. `MFADelete:
1026
+ "Disabled"` is taken, and any other value is refused with `InvalidArgument`.
1027
+ - A `versionId` in a `CopySource` is still refused with `NotImplemented`. A copy reads the current
1028
+ version.
1029
+ - `NoncurrentVersionTransitions` is stored and unread, because storage classes are left out. An
1030
+ `Expiration` rule expires the current version behind a delete marker, as real S3 does, and raises
1031
+ nothing. A `NoncurrentVersionExpiration` rule bounds the history, and `ExpiredObjectDeleteMarker`
1032
+ removes a marker left bare. See
1033
+ [Bounding the history a versioned Bucket keeps](#bounding-the-history-a-versioned-bucket-keeps).
1034
+ - The `?versioning` and `?versions` sub-resources are refused over the served S3 REST endpoint.
1035
+ Versioning is reachable through the SDK and through a template.
1036
+ - A Bucket mounted on a filesystem directory refuses the deletion a delete marker asks for, the way
1037
+ it refuses `DeleteObject`. See [Filesystem-backed Bucket storage](#filesystem-backed-bucket-storage).
1038
+
1039
+ ## Object Lock
1040
+
1041
+ Object Lock holds a version of an Object against a delete. A version can be held by a retention
1042
+ period, by a legal hold or by both, and a delete naming a held version is answered with
1043
+ `AccessDenied`. One way past exists and it is narrow. A `GOVERNANCE` retention period gives way to a
1044
+ request carrying `BypassGovernanceRetention` from a caller allowed to use it. A `COMPLIANCE` period
1045
+ and a legal hold hold against everyone, the account root included. Turn it on with `PutObjectLockConfigurationCommand`, or with
1046
+ `ObjectLockEnabled` on an `AWS::S3::Bucket` resource.
1047
+
1048
+ Object Lock holds a version, and versioning has to be on underneath it. Turning it on over a Bucket
1049
+ with versioning off is refused with `InvalidBucketState`, as real S3 refuses it, and a template
1050
+ declaring Object Lock without `VersioningConfiguration` fails the stack. See
1051
+ [Object versioning](#object-versioning) for what versioning itself changes.
1052
+
1053
+ ```typescript sim-s3-object-lock
1054
+ /**
1055
+ * A reader's history in a Bucket nothing in the account can delete from.
1056
+ */
1057
+
1058
+ import {
1059
+ DeleteObjectCommand,
1060
+ HeadObjectCommand,
1061
+ PutObjectCommand,
1062
+ } from "@aws-sdk/client-s3";
1063
+
1064
+ import { SimAws } from "@kensio/yulin";
1065
+
1066
+ const simAws = new SimAws();
1067
+ const simS3 = simAws.s3();
1068
+
1069
+ // Versioning goes on underneath Object Lock. Every version written into this
1070
+ // Bucket is then retained for seven days from the write.
1071
+ const stack = await simAws.cloudFormation().deployTemplate({
1072
+ stackName: "history-stack",
1073
+ template: {
1074
+ Resources: {
1075
+ HistoryBucket: {
1076
+ Type: "AWS::S3::Bucket",
1077
+ Properties: {
1078
+ BucketName: "reader-history",
1079
+ VersioningConfiguration: { Status: "Enabled" },
1080
+ ObjectLockEnabled: true,
1081
+ ObjectLockConfiguration: {
1082
+ ObjectLockEnabled: "Enabled",
1083
+ Rule: { DefaultRetention: { Mode: "COMPLIANCE", Days: 7 } },
1084
+ },
1085
+ },
1086
+ },
1087
+ },
1088
+ },
1089
+ });
1090
+ await stack.waitForDeployComplete();
1091
+
1092
+ const written = await simS3.putObject(
1093
+ new PutObjectCommand({
1094
+ Bucket: "reader-history",
1095
+ Key: "events/reader-1.json",
1096
+ Body: JSON.stringify({ words: ["好"] }),
1097
+ }),
1098
+ );
1099
+
1100
+ const held = await simS3.headObject(
1101
+ new HeadObjectCommand({
1102
+ Bucket: "reader-history",
1103
+ Key: "events/reader-1.json",
1104
+ VersionId: written.VersionId,
1105
+ }),
1106
+ );
1107
+
1108
+ console.log(held.ObjectLockMode); // "COMPLIANCE"
1109
+
1110
+ try {
1111
+ await simS3.deleteObject(
1112
+ new DeleteObjectCommand({
1113
+ Bucket: "reader-history",
1114
+ Key: "events/reader-1.json",
1115
+ VersionId: written.VersionId,
1116
+ BypassGovernanceRetention: true,
1117
+ }),
1118
+ );
1119
+ } catch (error) {
1120
+ // AccessDenied. A compliance period gives way to nobody, and naming the
1121
+ // bypass changes nothing.
1122
+ console.log((error as Error).name);
1123
+ }
1124
+
1125
+ // The period lapses because simulated time passed it.
1126
+ await simAws.clock().advanceBy({ days: 8 });
1127
+
1128
+ await simS3.deleteObject(
1129
+ new DeleteObjectCommand({
1130
+ Bucket: "reader-history",
1131
+ Key: "events/reader-1.json",
1132
+ VersionId: written.VersionId,
1133
+ }),
1134
+ );
1135
+ ```
1136
+
1137
+ The retention boundary is a pure function of simulated time, read off the clock every time a delete
1138
+ asks. Advancing the clock past `RetainUntilDate` is all a test does to watch a held version become
1139
+ deletable. See [Controlling time](https://yulinsim.dev/time/ "Controlling time").
1140
+
1141
+ `GetObject` and `HeadObject` report `ObjectLockMode` and `ObjectLockRetainUntilDate` for a version
1142
+ under a retention period, and `ObjectLockLegalHoldStatus` for one under a hold. A version free of
1143
+ both leaves all three out.
1144
+
1145
+ ### Retention modes
1146
+
1147
+ `GOVERNANCE` and `COMPLIANCE` differ over who can get out of them. A governance period gives way to a
1148
+ delete carrying `BypassGovernanceRetention` from a caller holding `s3:BypassGovernanceRetention`,
1149
+ which sim IAM authorizes as a decision of its own alongside the `s3:DeleteObject` the delete already
1150
+ needed. Holding the permission and using it are separate. A delete that leaves the flag off is
1151
+ refused whatever the caller may do.
1152
+
1153
+ A compliance period gives way to nobody, the account root included. `PutObjectRetentionCommand`
1154
+ follows the same split. A compliance period can be extended in the same mode and that is all, since
1155
+ shortening one would end the guarantee early and turning one into a governance period would hand the
1156
+ version to the first caller holding the bypass permission. A governance period can be shortened, or
1157
+ turned into a compliance one, by a request that bypasses it.
1158
+
1159
+ ### Legal holds
1160
+
1161
+ `PutObjectLegalHoldCommand` turns the hold on a version on and off. A hold has no period to wait out.
1162
+ Only a `Status: "OFF"` takes one off, which is what makes a hold the thing to reach for when the end
1163
+ of the retention is unknowable in advance. A version can carry a hold and a retention period at
1164
+ once, and either one on its own refuses the delete.
1165
+
1166
+ ### Default retention
1167
+
1168
+ A `DefaultRetention` under `Rule` retains every version written after it, counted from the write, so
1169
+ two versions of one key written a day apart are held until two different instants. It takes `Days` or
1170
+ `Years` and refuses both together, a year is 365 days, and the longest one real S3 takes is a hundred
1171
+ years. A Bucket with Object Lock on and no
1172
+ default leaves each version to whatever requests name it.
1173
+
1174
+ ### From a CloudFormation template
1175
+
1176
+ `ObjectLockEnabled` and `ObjectLockConfiguration` are applied through
1177
+ `PutObjectLockConfigurationCommand`, so a template and an SDK caller are validated identically. CDK's
1178
+ `objectLockEnabled` and `objectLockDefaultRetention` synthesise both. `ObjectLockConfiguration`
1179
+ without `ObjectLockEnabled: true` fails the resource, as real CloudFormation refuses it, because a
1180
+ Bucket created around the property would report a default retention it never applied.
1181
+
1182
+ ### Limitations
1183
+
1184
+ - `GetObjectRetentionCommand` and `GetObjectLegalHoldCommand` are absent. A version reports both
1185
+ through `GetObject` and `HeadObject`.
1186
+ - `PutObjectCommand` takes no `ObjectLockMode`, `ObjectLockRetainUntilDate` or
1187
+ `ObjectLockLegalHoldStatus`. A version is held by the Bucket's default retention and by
1188
+ `PutObjectRetentionCommand` and `PutObjectLegalHoldCommand` afterwards.
1189
+ - `CreateBucketCommand` takes no `ObjectLockEnabledForBucket`. Turn versioning on, then Object Lock.
1190
+ - `DeleteObjectsCommand` names keys and no versions, so a batch delete writes delete markers and
1191
+ reaches no held version. See [Deleting Objects](#deleting-objects).
1192
+ - The `?object-lock`, `?retention` and `?legal-hold` sub-resources are refused over the served S3
1193
+ REST endpoint. Object Lock is reachable through the SDK and through a template.
1194
+ - A Bucket policy setting minimum and maximum allowable retention periods is left out. The only
1195
+ bound applied is the hundred years real S3 caps a `DefaultRetention` at. A `RetainUntilDate` on a
1196
+ single version is taken as given, however far ahead it names.
1197
+ - `S3 Batch Operations` applying retention across a manifest is left out.
1198
+
872
1199
  ## Event notifications
873
1200
 
874
1201
  A simulated S3 Bucket can notify a simulated Lambda function, a simulated SQS queue or a simulated
@@ -1667,8 +1994,8 @@ writes fall outside it. Without that, the simulation stops after a thousand deli
1667
1994
  - `eventVersion` is the version the S3 event message structure page documents now. AWS increments the
1668
1995
  minor version whenever it adds a field, so compare the major for equality and leave the whole
1669
1996
  string alone.
1670
- - `versionId` is absent from every record, as it is on real S3 for a Bucket without versioning.
1671
- Versioning is left out.
1997
+ - `versionId` is absent from a record raised by a Bucket without versioning, as it is on real S3,
1998
+ and carried by one from a versioned Bucket. See [Object versioning](#object-versioning).
1672
1999
  - A notification cannot be configured on a standalone `SimS3`. It has no other simulated services to
1673
2000
  notify, and no shared background scheduler for `backgroundTasksComplete()` to drain. Reach
1674
2001
  simulated S3 through `SimAws` instead.
@@ -1694,10 +2021,12 @@ writes fall outside it. Without that, the simulation stops after a thousand deli
1694
2021
 
1695
2022
  ## Buckets from CloudFormation
1696
2023
 
1697
- An `AWS::S3::Bucket` resource carries five properties simulated S3 acts on. Those are `BucketName`,
1698
- `LifecycleConfiguration`, `NotificationConfiguration`, `PublicAccessBlockConfiguration` and
2024
+ An `AWS::S3::Bucket` resource carries eight properties simulated S3 acts on. Those are `BucketName`,
2025
+ `LifecycleConfiguration`, `NotificationConfiguration`, `ObjectLockConfiguration`,
2026
+ `ObjectLockEnabled`, `PublicAccessBlockConfiguration`, `VersioningConfiguration` and
1699
2027
  `WebsiteConfiguration`. See [Lifecycle configuration](#lifecycle-configuration) for the parts of a
1700
- rule that are read.
2028
+ rule that are read, [Object versioning](#object-versioning) for what versioning a Bucket changes, and
2029
+ [Object Lock](#object-lock) for what holds a version once it is written.
1701
2030
 
1702
2031
  A Bucket with no `BucketName` is named from the stack name, the logical ID and a tail derived from
1703
2032
  both, lower cased as a bucket name has to be. A `SiteBucket` in `orders-stack` becomes
@@ -1708,15 +2037,27 @@ cover how the stack name and the logical ID share what is left.
1708
2037
  Any other property is left out and recorded in
1709
2038
  [`stack.ignoredProperties`](https://yulinsim.dev/services/cloudformation/#properties-a-resource-was-created-without),
1710
2039
  and the Bucket is created and the stack carries on. That matters because a Bucket deployed without
1711
- the versioning, replication or CORS configuration its template asked for looks configured and
2040
+ the replication or CORS configuration its template asked for looks configured and
1712
2041
  behaves as though it were bare, and the failure that causes turns up somewhere else entirely. The
1713
2042
  record is where a test checks which of those it is standing on. A property name `AWS::S3::Bucket`
1714
2043
  never had is recorded the same way, and a typo leaves the stack standing.
1715
2044
 
1716
- One of the five given in the wrong shape still fails the stack, and so does a `BucketName` that is
2045
+ One of the eight given in the wrong shape still fails the stack, and so does a `BucketName` that is
1717
2046
  something other than a string. There is no Bucket to create under a name nothing else in the
1718
2047
  template refers to.
1719
2048
 
2049
+ A `ReplicationConfiguration` fails the stack as well, for a different reason. Replication is not
2050
+ simulated and nothing acts on the property, and the value is still read for the constraints real S3
2051
+ enforces on it. Those are a `Metrics.EventThreshold` with no `ReplicationTime` at `Status: Enabled`,
2052
+ a rule stating a `Filter` without the `DeleteMarkerReplication`, `Priority` and `Status` that S3
2053
+ requires alongside one, and a source Bucket whose template never enabled versioning. Real S3 answers
2054
+ each of them with a 400 and CloudFormation rolls the stack back, and the CloudFormation resource
2055
+ schema states none of them, so cfn-lint passes a template carrying any one. A deploy here that
2056
+ reported them as working would be the last check between a repository and that rollback.
2057
+
2058
+ A configuration passing all three is recorded like any other skipped property. One that fails takes
2059
+ the Bucket with it and is never recorded, because the Resource is refused before it is created.
2060
+
1720
2061
  `BucketEncryption` and `Tags` are read, ignored and left out of the record, because nothing this
1721
2062
  simulator models can tell the difference. There is no simulated KMS, Object bytes are stored as they
1722
2063
  arrive, and no simulated service reads a Bucket tag. CDK puts both on almost every Bucket it synthesizes, and
@@ -1918,8 +2259,9 @@ them disabled in favour of policies.
1918
2259
  ## Lifecycle configuration
1919
2260
 
1920
2261
  Sim S3 stores a Bucket's lifecycle rules and acts on them. An `Expiration` rule removes the Objects
1921
- it selects once simulated time passes the boundary, and an `AbortIncompleteMultipartUpload` rule
1922
- discards uploads that were started and left unfinished.
2262
+ it selects once simulated time passes the boundary, a `NoncurrentVersionExpiration` rule bounds the
2263
+ history a versioned Bucket keeps, and an `AbortIncompleteMultipartUpload` rule discards uploads that
2264
+ were started and left unfinished.
1923
2265
 
1924
2266
  Retention is otherwise the one property of a log or a backup Bucket a test cannot demonstrate.
1925
2267
  Reading the rules back off a deployed Bucket says the rules arrived. Putting an Object, moving the
@@ -1985,6 +2327,100 @@ what the rules leave at that instant, and a Bucket carrying no rules costs one c
1985
2327
  the clock backwards afterwards leaves an expired Object gone, because the rule deleted it on the way
1986
2328
  past.
1987
2329
 
2330
+ ### Bounding the history a versioned Bucket keeps
2331
+
2332
+ A versioned Bucket gains a version on every write and keeps every one of them. A
2333
+ `NoncurrentVersionExpiration` rule bounds that. `NoncurrentDays` removes a version once simulated
2334
+ time passes it, counted from the moment that version stopped being current rather than from its
2335
+ write, which is how real S3 measures it. A version written a year ago and displaced yesterday has
2336
+ been noncurrent for a day.
2337
+
2338
+ ```typescript sim-s3-noncurrent-expiry
2339
+ /**
2340
+ * Bounding a reader's history at ninety days of noncurrent versions.
2341
+ */
2342
+
2343
+ import {
2344
+ ListObjectVersionsCommand,
2345
+ PutBucketLifecycleConfigurationCommand,
2346
+ PutBucketVersioningCommand,
2347
+ PutObjectCommand,
2348
+ } from "@aws-sdk/client-s3";
2349
+
2350
+ import { SimAws } from "@kensio/yulin";
2351
+
2352
+ const simAws = new SimAws();
2353
+ const simS3 = simAws.s3();
2354
+
2355
+ const stack = await simAws.cloudFormation().deployTemplate({
2356
+ stackName: "history-stack",
2357
+ template: {
2358
+ Resources: {
2359
+ HistoryBucket: {
2360
+ Type: "AWS::S3::Bucket",
2361
+ Properties: { BucketName: "reader-history" },
2362
+ },
2363
+ },
2364
+ },
2365
+ });
2366
+ await stack.waitForDeployComplete();
2367
+
2368
+ await simS3.putBucketVersioning(
2369
+ new PutBucketVersioningCommand({
2370
+ Bucket: "reader-history",
2371
+ VersioningConfiguration: { Status: "Enabled" },
2372
+ }),
2373
+ );
2374
+
2375
+ await simS3.putBucketLifecycleConfiguration(
2376
+ new PutBucketLifecycleConfigurationCommand({
2377
+ Bucket: "reader-history",
2378
+ LifecycleConfiguration: {
2379
+ Rules: [
2380
+ {
2381
+ ID: "bound-history",
2382
+ Status: "Enabled",
2383
+ Filter: { Prefix: "snapshots/" },
2384
+ NoncurrentVersionExpiration: { NoncurrentDays: 90 },
2385
+ },
2386
+ ],
2387
+ },
2388
+ }),
2389
+ );
2390
+
2391
+ const snapshot = {
2392
+ Bucket: "reader-history",
2393
+ Key: "snapshots/reader-1.json",
2394
+ };
2395
+
2396
+ await simS3.putObject(new PutObjectCommand({ ...snapshot, Body: "before" }));
2397
+ await simS3.putObject(new PutObjectCommand({ ...snapshot, Body: "after" }));
2398
+
2399
+ await simAws.clock().advanceBy({ days: 91 });
2400
+
2401
+ const listed = await simS3.listObjectVersions(
2402
+ new ListObjectVersionsCommand({ Bucket: "reader-history" }),
2403
+ );
2404
+
2405
+ // The version the second write displaced has gone, and the current one stays
2406
+ // however old it is.
2407
+ console.log(listed.Versions?.length); // 1
2408
+ ```
2409
+
2410
+ `NewerNoncurrentVersions` holds that many of the most recent noncurrent versions back from the rule,
2411
+ whatever their age, so a rule keeping two reaches the third and everything older. Real S3 requires
2412
+ `NoncurrentDays` alongside it, and a rule stating the count on its own names no period to measure and
2413
+ expires nothing.
2414
+
2415
+ `ExpiredObjectDeleteMarker` under `Expiration` removes a delete marker left with no version under it,
2416
+ which takes the key out of `ListObjectVersions` altogether. A marker still hiding a version stays,
2417
+ since that marker is what a read of the key answers with. The two run in that order in one pass, so a
2418
+ marker whose last version expired in the same pass goes with it.
2419
+
2420
+ A noncurrent version is removed from the Bucket's history, and a `GetObject` naming its `VersionId`
2421
+ answers `NoSuchVersion` afterwards. The current version is beyond every rule of this kind, however
2422
+ old it is.
2423
+
1988
2424
  ### What a rule selects
1989
2425
 
1990
2426
  A rule selects Objects by its `Filter`, or by the older top-level `Prefix`. A rule with no scope at
@@ -2075,14 +2511,17 @@ all three, and a rule stored here that real S3 would have rejected reads back lo
2075
2511
  CloudFormation spells some rule fields differently from the request. `Id` becomes `ID`,
2076
2512
  `ExpirationInDays` and `ExpirationDate` are gathered under `Expiration`, and a transition's
2077
2513
  `TransitionInDays` becomes `Days`. The singular `Transition` a template may state alongside
2078
- `Transitions` joins the list. Everything else, `Status`, `Prefix`, `AbortIncompleteMultipartUpload`,
2079
- `TagFilters` and the object size bounds among them, is carried across as the template stated it.
2514
+ `Transitions` joins the list. `NoncurrentVersionExpirationInDays` becomes the `NoncurrentDays` of a
2515
+ `NoncurrentVersionExpiration`, which is what CDK's `noncurrentVersionExpiration` synthesises, and a
2516
+ template stating the nested object instead is taken as it stands. Everything else, `Status`,
2517
+ `Prefix`, `AbortIncompleteMultipartUpload`, `TagFilters` and the object size bounds among them, is
2518
+ carried across as the template stated it.
2080
2519
 
2081
2520
  `LifecycleConfiguration` is one of the properties simulated S3 acts on. It stays out of
2082
2521
  [`stack.ignoredProperties`](https://yulinsim.dev/services/cloudformation/#properties-a-resource-was-created-without).
2083
- The two actions it enforces are `Expiration`, whether the template flattened it onto the rule or
2084
- not, and `AbortIncompleteMultipartUpload`. A `Transitions` rule is stored and read back and goes no
2085
- further. Which Objects an enforced action reaches is decided by the fields listed under
2522
+ The three actions it enforces are `Expiration`, whether the template flattened it onto the rule or
2523
+ not, `NoncurrentVersionExpiration`, in either of its two spellings, and
2524
+ `AbortIncompleteMultipartUpload`. A `Transitions` rule is stored and read back and goes no further. Which Objects an enforced action reaches is decided by the fields listed under
2086
2525
  [What a rule selects](#what-a-rule-selects).
2087
2526
 
2088
2527
  ### Limitations
@@ -2093,8 +2532,11 @@ No Object moves between storage classes. Storage classes are left out of the sim
2093
2532
  Real S3 raises `s3:LifecycleExpiration:Delete` when a rule removes an Object. That event family is
2094
2533
  among the ones sim S3 leaves out. An expiry here is silent.
2095
2534
 
2096
- `NoncurrentVersionExpiration`, `NoncurrentVersionTransitions` and `ExpiredObjectDeleteMarker` are
2097
- stored and unread, because Object versions are left out.
2535
+ `NoncurrentVersionTransitions` is stored and unread, alongside `Transitions`, because storage classes
2536
+ are left out. An `Expiration` rule on a versioned Bucket writes a delete marker over the current
2537
+ version and leaves the version itself where it is, which is what real S3 does, and a
2538
+ `NoncurrentVersionExpiration` rule is what then removes it. See
2539
+ [Object versioning](#object-versioning).
2098
2540
 
2099
2541
  A Bucket mounted on a filesystem directory refuses the deletion an expiry asks for, the way it
2100
2542
  refuses `DeleteObject`, and answers `NotImplemented`. Removing a real file off the mounted directory
@@ -2980,6 +3422,9 @@ Sim S3 currently supports:
2980
3422
  - `PutBucketNotificationConfigurationCommand` and `GetBucketNotificationConfigurationCommand`, with
2981
3423
  Object events delivered to a simulated Lambda function, a simulated SQS queue or a simulated SNS
2982
3424
  topic
3425
+ - `PutBucketVersioningCommand`, `GetBucketVersioningCommand` and `ListObjectVersionsCommand`, with
3426
+ every write of a key kept, a delete writing a marker over it, and a named version readable and
3427
+ removable on its own
2983
3428
  - `PutBucketWebsiteCommand`, for static website hosting
2984
3429
  - `PutBucketLifecycleConfigurationCommand`, `GetBucketLifecycleConfigurationCommand` and
2985
3430
  `DeleteBucketLifecycleCommand`, storing a Bucket's lifecycle rules and handing them back without
@@ -3012,8 +3457,6 @@ needs them to model the requested behaviour.
3012
3457
 
3013
3458
  These apply across the page. The sections above each list what is specific to them.
3014
3459
 
3015
- - Object versioning is left out. There are no version ids, no delete markers and no `VersionId` on
3016
- any request or response.
3017
3460
  - A listing reports `StorageClass` as `STANDARD` for every Object. Storage classes themselves are
3018
3461
  left out, and every Object is in that one.
3019
3462
  - `EncodingType` is ignored on a listing, and keys come back unencoded.
@@ -238,6 +238,39 @@ console.log(failure?.message);
238
238
  `JSON.stringify` on a failure carries the message alongside the schedule, the target, the role and
239
239
  the instant it names.
240
240
 
241
+ A Lambda target has another boundary. Scheduler records a failure when it cannot assume the role,
242
+ the role cannot invoke the function, the function is missing or Lambda refuses the request. Once
243
+ Lambda accepts the asynchronous invocation, its event invoke config applies. Handler errors follow
244
+ Lambda's retry, destination and function dead-letter queue settings and do not appear in
245
+ `deliveryFailures`.
246
+
247
+ ### Retrying and dead-lettering a delivery
248
+
249
+ Set `Target.RetryPolicy` to retry a failure that may clear. `MaximumRetryAttempts` is the number of
250
+ attempts after the first one and accepts 0 through 185. `MaximumEventAgeInSeconds` accepts 60 through
251
+ 86,400. If the policy leaves either member out, its effective value is 185 attempts or 86,400
252
+ seconds. `GetSchedule` still reports the policy as it was written.
253
+
254
+ Retries use the simulation's clock. The first retry is due one second after the failed attempt. Each
255
+ following delay doubles to 2, 4, 8 seconds and so on. A retry does not run while the clock stands
256
+ still. `advanceBy(...)` runs every retry that becomes due in the interval and settles their work
257
+ before it returns.
258
+
259
+ Scheduler does not retry a failure that cannot clear by trying the same request. A missing target,
260
+ a missing execution role, an execution role that does not trust Scheduler and an IAM denial are
261
+ permanent failures. They are abandoned after the initial attempt.
262
+
263
+ Set `Target.DeadLetterConfig.Arn` to a standard SQS queue ARN to keep an input that Scheduler abandons.
264
+ The execution role needs `sqs:SendMessage` on this queue as well as permission to invoke the target.
265
+ The message body is the target's original `Input`. Its string message attributes follow Scheduler's
266
+ shape and include the error, schedule ARN, target ARN, scheduled time and retry count.
267
+ `EXHAUSTED_RETRY_CONDITION` is `MaximumRetryAttempts` or `MaximumEventAgeInSeconds` for an exhausted
268
+ retryable failure. A permanent failure leaves that attribute out.
269
+
270
+ A successful DLQ send does not add an entry to `deliveryFailures`, since the configured destination
271
+ received the input. A missing queue or denied `sqs:SendMessage` is recorded there instead. This keeps
272
+ a misconfigured DLQ visible to a test.
273
+
241
274
  ### One-time schedules and what happens after
242
275
 
243
276
  An `at(...)` schedule fires once and then stops. By default it stays in the Account afterwards, which
@@ -759,10 +792,12 @@ Resources of the same stack.
759
792
  - `at(...)`, `rate(...)` and six-field `cron(...)` expressions, fired by advancing the simulation's
760
793
  clock.
761
794
  - Lambda, SQS and SNS targets, with a target `Input`, invoked as the target's execution role and
762
- authorized against that role's own policies.
795
+ authorized against that role's own policies. Lambda targets use asynchronous Event invocation.
763
796
  - ECS targets, running a simulated task as the execution role, with the task definition and
764
797
  `TaskCount` from `EcsParameters` and container overrides from the target's `Input`.
765
798
  - `ActionAfterCompletion`, and `deliveryFailures` for invocations that did not happen.
799
+ - Target retry policies driven by simulated time, and standard SQS dead-letter queues carrying the
800
+ original input and Scheduler diagnostic attributes.
766
801
  - `CreateScheduleGroup`, `GetScheduleGroup`, `DeleteScheduleGroup` and `ListScheduleGroups`, over
767
802
  the `default` group every account and region starts with and any group created beside it.
768
803
  - `AWS::Scheduler::Schedule` and `AWS::Scheduler::ScheduleGroup` deployed from a CloudFormation
@@ -779,9 +814,12 @@ Resources of the same stack.
779
814
  of it, and a simulation left alone in real time never fires however long it is left.
780
815
  - Firing is exact and exactly once. Real Scheduler invokes within a minute of the due time, and its
781
816
  promise is at-least-once.
782
- - An invocation is attempted once. There is no retry and no dead letter queue. A target that throws
783
- is recorded as a failure, and never redelivered. A failed invocation never rejects
784
- `advanceBy(...)`, and is read from `deliveryFailures`.
817
+ - Retry delays are deterministic powers of two seconds. Real Scheduler uses exponential backoff
818
+ without publishing an exact sequence. The fixed sequence lets a test advance to a known retry
819
+ instant.
820
+ - Delivery retries cover failures before the target accepts the request. A Lambda handler failure
821
+ happens after Lambda accepts its asynchronous invocation and uses Lambda's retry, destination and
822
+ function dead-letter queue settings instead.
785
823
  - A schedule group carries no tags. `CreateScheduleGroup` refuses `Tags`, since the simulation
786
824
  stores them nowhere. A template's `Tags` are recorded as an ignored property and the group still
787
825
  deploys.
@@ -798,9 +836,10 @@ Resources of the same stack.
798
836
  - Targets are Lambda, SQS, SNS and ECS. The universal target
799
837
  (`arn:aws:scheduler:::aws-sdk:<service>:<action>`) and every other target service are refused when
800
838
  the schedule is created, ahead of the first due instant.
801
- - A target `DeadLetterConfig`, `RetryPolicy`, `EventBridgeParameters`, `KinesisParameters`,
802
- `SageMakerPipelineParameters` and `SqsParameters` are refused outright, as is `EcsParameters` on a
803
- target whose ARN names something other than an ECS cluster.
839
+ - A target `EventBridgeParameters`, `KinesisParameters`, `SageMakerPipelineParameters` and
840
+ `SqsParameters` are refused outright, as is `EcsParameters` on a target whose ARN names something
841
+ other than an ECS cluster. A `DeadLetterConfig` must name a standard SQS queue because simulated
842
+ SQS does not support FIFO queues.
804
843
  - An ECS target's `EcsParameters` takes `TaskDefinitionArn` and `TaskCount`, and takes and ignores
805
844
  `LaunchType`, `PlatformVersion`, `NetworkConfiguration` and `CapacityProviderStrategy`, since
806
845
  there is no placement and no network here for them to apply to. Anything else it can carry, such
@@ -810,5 +849,5 @@ Resources of the same stack.
810
849
  on an ECS target, where every other target type takes any text.
811
850
  - A `TaskCount` above one runs that many simulated tasks, and a bound container handler runs once
812
851
  for each of them, in this process and one after another.
813
- - `KmsKeyArn` is refused, and `ClientToken` is accepted and ignored. Nothing here retries, so it has
814
- no request to make idempotent.
852
+ - `KmsKeyArn` is refused, and `ClientToken` is accepted and ignored. Schedule management requests
853
+ are not retried, so the token has no request to make idempotent.