@kensio/yulin 1.20.15 → 1.20.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/README.md +13 -0
  2. package/dist/sdk/module/sim-sdk-module-client-interceptor.d.ts +5 -0
  3. package/dist/sdk/module/sim-sdk-module-client-interceptor.js +14 -0
  4. package/dist/sdk/module/sim-sdk-static-client-factory.d.ts +26 -0
  5. package/dist/sdk/module/sim-sdk-static-client-factory.js +59 -0
  6. package/dist/sdk/send-patch.d.ts +8 -0
  7. package/dist/sdk/send-patch.js +11 -0
  8. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  9. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  10. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +39 -6
  11. package/dist/service/aws/caller/sim-aws-caller-resolver.js +32 -30
  12. package/dist/service/aws/caller/sim-aws-caller.d.ts +9 -0
  13. package/dist/service/aws/caller/sim-aws-resolved-caller.d.ts +19 -0
  14. package/dist/service/aws/caller/sim-aws-resolved-caller.js +26 -0
  15. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +12 -0
  16. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +6 -0
  17. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +12 -0
  18. package/dist/service/aws/factory/sim-aws-account-service-cache.js +9 -0
  19. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  20. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +5 -0
  21. package/dist/service/aws/factory/sim-aws-service-factory.js +14 -0
  22. package/dist/service/aws/sim-aws-properties.d.ts +15 -0
  23. package/dist/service/aws/sim-aws.js +2 -1
  24. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  25. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  26. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  27. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  28. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  29. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  30. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  31. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  32. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  33. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  34. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  35. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  36. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  37. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  38. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  39. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  40. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  41. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  42. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  43. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  44. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  45. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  46. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  47. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  48. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  49. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  50. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  51. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  52. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +25 -0
  53. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
  54. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
  55. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -0
  56. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  57. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  58. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  59. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  60. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  61. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  62. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  63. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  64. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  65. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  66. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +27 -0
  67. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -0
  68. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  69. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  70. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +8 -7
  71. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -37
  72. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  73. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  74. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  75. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +50 -0
  76. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  77. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
  78. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  79. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  80. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  81. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  82. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  83. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  84. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  85. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  86. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  87. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  88. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  89. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  90. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  91. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  92. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  93. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  94. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  95. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  96. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  97. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  98. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +28 -0
  99. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -0
  100. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  101. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +6 -3
  102. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  103. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  104. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  105. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -2
  106. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  107. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  108. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  109. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  110. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +3 -1
  111. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  112. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  113. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  114. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  115. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  116. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  117. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  118. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  119. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  120. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  121. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +8 -12
  122. package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
  123. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
  124. package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
  125. package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
  126. package/dist/service/cloudfront/sim-cloudfront.js +22 -25
  127. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  128. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  129. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  130. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  131. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  132. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  133. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  134. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  135. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  136. package/dist/service/ecr/sim-ecr.js +16 -4
  137. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  138. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  139. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  140. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  141. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  142. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  143. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  144. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  145. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  146. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  147. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  148. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  149. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  150. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  151. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  152. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  153. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  154. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  155. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  156. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  157. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  158. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  159. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  160. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +33 -2
  161. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -2
  162. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  163. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  164. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  165. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  166. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +36 -7
  167. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +22 -11
  168. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +10 -71
  169. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +7 -2
  170. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +87 -0
  171. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  172. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +21 -3
  173. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +34 -10
  174. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  175. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  176. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  177. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  178. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +21 -5
  179. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +7 -3
  180. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +5 -2
  181. package/dist/service/iam/authorize/sim-iam-authorizer.js +3 -1
  182. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  183. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  184. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  185. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  186. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  187. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  188. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  189. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  190. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  191. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  192. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  193. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  194. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  195. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  196. package/dist/service/iam/error/sim-iam.error.js +13 -0
  197. package/dist/service/iam/index.d.ts +1 -0
  198. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  199. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  200. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  201. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  202. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +11 -0
  203. package/dist/service/iam/role/sim-iam-role-with-policy.factory.js +4 -2
  204. package/dist/service/iam/sim-iam-account-parts.d.ts +16 -0
  205. package/dist/service/iam/sim-iam-account-parts.js +2 -0
  206. package/dist/service/iam/sim-iam.d.ts +12 -2
  207. package/dist/service/iam/sim-iam.js +12 -0
  208. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  209. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  210. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  211. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  212. package/dist/service/kms/command/sim-kms-request-options.d.ts +11 -0
  213. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  214. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  215. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  216. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  217. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  218. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  219. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  220. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  221. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  222. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  223. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  224. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  225. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  226. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  227. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  228. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  229. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  230. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  231. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  232. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  233. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  234. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  235. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  236. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  237. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  238. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  239. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  240. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  241. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  242. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  243. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  244. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  245. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  246. package/dist/service/logs/sim-logs-commands.js +4 -0
  247. package/dist/service/logs/sim-logs.js +6 -1
  248. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  249. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  250. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  251. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  252. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  253. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  254. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  255. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  256. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  257. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  258. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  259. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  260. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  261. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  262. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  263. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  264. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  265. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  266. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  267. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  268. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  269. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  270. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  271. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  272. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  273. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +6 -4
  274. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  275. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  276. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  277. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +15 -9
  278. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
  279. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  280. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  281. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  282. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  283. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  284. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  285. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  286. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  287. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  288. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  289. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  290. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  291. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  292. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.d.ts +9 -2
  293. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.js +2 -2
  294. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.d.ts +10 -4
  295. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.js +8 -7
  296. package/dist/service/sts/auth-z/assume-role-target-auth-z.d.ts +2 -2
  297. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.d.ts +6 -2
  298. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.js +14 -11
  299. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +10 -1
  300. package/dist/service/sts/command/assume-role/assume-role.handler.js +6 -2
  301. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +10 -1
  302. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +5 -1
  303. package/dist/service/sts/service-role/sim-service-role.js +5 -1
  304. package/dist/service/sts/sim-sts.d.ts +18 -1
  305. package/dist/service/sts/sim-sts.js +8 -0
  306. package/dist/util/memo/bounded-memo.d.ts +36 -0
  307. package/dist/util/memo/bounded-memo.js +58 -0
  308. package/docs/README.md +54 -0
  309. package/docs/ai-skill/README.md +69 -0
  310. package/docs/cli/README.md +284 -0
  311. package/docs/factories/README.md +140 -0
  312. package/docs/lint/README.md +176 -0
  313. package/docs/non-aws-dependencies/README.md +261 -0
  314. package/docs/sdk/README.md +274 -0
  315. package/docs/serve/README.md +1126 -0
  316. package/docs/services/acm/README.md +823 -0
  317. package/docs/services/apigateway/README.md +1919 -0
  318. package/docs/services/apigatewayv2/README.md +2678 -0
  319. package/docs/services/athena/README.md +1044 -0
  320. package/docs/services/bedrock/README.md +350 -0
  321. package/docs/services/cloudformation/README.md +3625 -0
  322. package/docs/services/cloudfront/README.md +3098 -0
  323. package/docs/services/cloudwatch/README.md +422 -0
  324. package/docs/services/cognito/README.md +4924 -0
  325. package/docs/services/dynamodb/README.md +3785 -0
  326. package/docs/services/ecr/README.md +302 -0
  327. package/docs/services/ecs/README.md +2021 -0
  328. package/docs/services/elbv2/README.md +1901 -0
  329. package/docs/services/eventbridge/README.md +1118 -0
  330. package/docs/services/firehose/README.md +811 -0
  331. package/docs/services/glue/README.md +507 -0
  332. package/docs/services/iam/README.md +1578 -0
  333. package/docs/services/kinesis/README.md +455 -0
  334. package/docs/services/kms/README.md +664 -0
  335. package/docs/services/lambda/README.md +3719 -0
  336. package/docs/services/logs/README.md +882 -0
  337. package/docs/services/organizations/README.md +574 -0
  338. package/docs/services/personalize/README.md +835 -0
  339. package/docs/services/rekognition/README.md +1070 -0
  340. package/docs/services/route53/README.md +1783 -0
  341. package/docs/services/s3/README.md +3029 -0
  342. package/docs/services/scheduler/README.md +814 -0
  343. package/docs/services/secretsmanager/README.md +670 -0
  344. package/docs/services/ses/README.md +1013 -0
  345. package/docs/services/sns/README.md +1904 -0
  346. package/docs/services/sqs/README.md +1185 -0
  347. package/docs/services/ssm/README.md +1096 -0
  348. package/docs/services/stepfunctions/README.md +1341 -0
  349. package/docs/services/sts/README.md +245 -0
  350. package/docs/services/wafv2/README.md +1380 -0
  351. package/docs/terraform/README.md +248 -0
  352. package/docs/time/README.md +284 -0
  353. package/llms.txt +59 -0
  354. package/package.json +7 -4
  355. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -1,6 +1,6 @@
1
1
  import { simAwsAccountRegionScopeFactory } from "../aws/sim-aws-account-region-scope.factory.js";
2
2
  import { SimCloudFrontCloudFormationResourceFactory } from "./cfn/sim-cfn-cloudfront-resource-factory.js";
3
- import { SimCloudFrontResponseHeadersPolicyRegistry } from "./response-headers-policy/sim-cf-response-headers-policy-registry.js";
3
+ import { SimCloudFrontPolicies } from "./sim-cloudfront-policies.js";
4
4
  import { SimCloudFrontOriginAccessControlRegistry } from "./origin-access-control/sim-cf-origin-access-control-registry.js";
5
5
  import { simCffNameInArn } from "./cff/sim-cff-arn.js";
6
6
  import { SimCloudFrontSdkCommandRouter } from "./sdk/sim-cloudfront-sdk-command-router.js";
@@ -8,16 +8,16 @@ import { SimCloudFrontCommands, } from "./sim-cloudfront-commands.js";
8
8
  /**
9
9
  * Simulated CloudFront. Handles SDK commands. Emulates AWS behaviour and state.
10
10
  */
11
- export class SimCloudFront {
11
+ export class SimCloudFront extends SimCloudFrontPolicies {
12
12
  distributions = new Map();
13
13
  cloudFrontFunctions = new Map();
14
- responseHeadersPolicies = new SimCloudFrontResponseHeadersPolicyRegistry();
15
14
  originAccessControls = new SimCloudFrontOriginAccessControlRegistry();
16
15
  accountRegionScope;
17
16
  commands;
18
17
  cfnFactory = new SimCloudFrontCloudFormationResourceFactory(this);
19
18
  sdkRouter = new SimCloudFrontSdkCommandRouter(this);
20
19
  constructor(properties = {}) {
20
+ super();
21
21
  this.accountRegionScope =
22
22
  properties.accountRegionScope ?? simAwsAccountRegionScopeFactory.make();
23
23
  this.commands = new SimCloudFrontCommands({
@@ -27,6 +27,7 @@ export class SimCloudFront {
27
27
  cloudFrontFunctions: this.cloudFrontFunctions,
28
28
  originAccessControls: this.originAccessControls,
29
29
  responseHeadersPolicies: this.responseHeadersPolicies,
30
+ cachePolicies: this.cachePolicies,
30
31
  });
31
32
  }
32
33
  /**
@@ -84,48 +85,44 @@ export class SimCloudFront {
84
85
  * Handle a Create Function Command from the SDK.
85
86
  */
86
87
  async createFunction(command, options) {
87
- return await this.commands.createFunction(command, options);
88
+ return await this.commands.functions.createFunction(command, options);
88
89
  }
89
90
  /**
90
91
  * Handle a Delete Function Command from the SDK.
91
92
  */
92
93
  async deleteFunction(command, options) {
93
- return await this.commands.deleteFunction(command, options);
94
+ return await this.commands.functions.deleteFunction(command, options);
94
95
  }
95
96
  /**
96
- * Get a sim CloudFront Function by ARN.
97
+ * Handle a List Functions Command from the SDK.
97
98
  */
98
- getCloudFrontFunctionByArn(cloudFrontFunctionArn) {
99
- const name = simCffNameInArn(cloudFrontFunctionArn, this.accountRegionScope.accountId);
100
- return name === undefined ? undefined : this.cloudFrontFunctions.get(name);
99
+ async listFunctions(command, options) {
100
+ return await this.commands.functions.listFunctions(command, options);
101
101
  }
102
102
  /**
103
- * Get a sim CloudFront Function by name.
103
+ * Handle a Describe Function Command from the SDK.
104
104
  */
105
- getCloudFrontFunctionByName(cloudFrontFunctionName) {
106
- return this.cloudFrontFunctions.get(cloudFrontFunctionName);
105
+ async describeFunction(command, options) {
106
+ return await this.commands.functions.describeFunction(command, options);
107
107
  }
108
108
  /**
109
- * Store a simulated response headers policy.
110
- *
111
- * There is no CreateResponseHeadersPolicy command here, so CloudFormation is
112
- * the only thing that makes one, and this is how it hands the policy over.
113
- * A name another policy already holds is refused, as CloudFront refuses one.
109
+ * Handle a Get Function Command from the SDK.
114
110
  */
115
- addResponseHeadersPolicy(policy) {
116
- this.responseHeadersPolicies.add(policy);
111
+ async getFunction(command, options) {
112
+ return await this.commands.functions.getFunction(command, options);
117
113
  }
118
114
  /**
119
- * Forget a simulated response headers policy.
115
+ * Get a sim CloudFront Function by ARN.
120
116
  */
121
- removeResponseHeadersPolicy(policyId) {
122
- this.responseHeadersPolicies.remove(policyId);
117
+ getCloudFrontFunctionByArn(cloudFrontFunctionArn) {
118
+ const name = simCffNameInArn(cloudFrontFunctionArn, this.accountRegionScope.accountId);
119
+ return name === undefined ? undefined : this.cloudFrontFunctions.get(name);
123
120
  }
124
121
  /**
125
- * Get a simulated response headers policy by ID.
122
+ * Get a sim CloudFront Function by name.
126
123
  */
127
- getResponseHeadersPolicyById(policyId) {
128
- return this.responseHeadersPolicies.byId(policyId);
124
+ getCloudFrontFunctionByName(cloudFrontFunctionName) {
125
+ return this.cloudFrontFunctions.get(cloudFrontFunctionName);
129
126
  }
130
127
  /**
131
128
  * Store a simulated origin access control.
@@ -0,0 +1,31 @@
1
+ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
2
+ import type { SimAwsResolvedCaller } from "../../aws/caller/sim-aws-caller-resolver.js";
3
+ import type { SimIamInterServiceAuthZ } from "../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import type { SimEcrRepositoryAddress } from "../repository/sim-ecr-repository-address.js";
5
+ interface SimEcrAuthorizerProperties {
6
+ readonly iam: SimIamInterServiceAuthZ;
7
+ readonly address: SimEcrRepositoryAddress;
8
+ }
9
+ /**
10
+ * Applies simulated IAM authorization to ECR requests.
11
+ *
12
+ * Registering a simulated image is not one of them. That is a Yulin-native
13
+ * operation on the simulator's own accessor, and it is how a test says what an
14
+ * image is. A CloudFormation deployment is what authorizes here. It makes and
15
+ * removes a repository as the caller its Stack named.
16
+ */
17
+ export declare class SimEcrAuthorizer {
18
+ private readonly iam;
19
+ private readonly address;
20
+ constructor(properties: SimEcrAuthorizerProperties);
21
+ /**
22
+ * Ensure the caller may perform an action on a repository of this name.
23
+ *
24
+ * The repository need not be there. Real IAM evaluates a request before the
25
+ * service handles it, so a caller with no permission is refused whether or
26
+ * not the repository is there, and `CreateRepository` authorizes against the
27
+ * ARN the repository is about to have.
28
+ */
29
+ authorizeRepository(action: string, repositoryName: string, caller?: SimAwsCaller): SimAwsResolvedCaller;
30
+ }
31
+ export {};
@@ -0,0 +1,38 @@
1
+ import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
2
+ /**
3
+ * Applies simulated IAM authorization to ECR requests.
4
+ *
5
+ * Registering a simulated image is not one of them. That is a Yulin-native
6
+ * operation on the simulator's own accessor, and it is how a test says what an
7
+ * image is. A CloudFormation deployment is what authorizes here. It makes and
8
+ * removes a repository as the caller its Stack named.
9
+ */
10
+ export class SimEcrAuthorizer {
11
+ iam;
12
+ address;
13
+ constructor(properties) {
14
+ this.iam = properties.iam;
15
+ this.address = properties.address;
16
+ }
17
+ /**
18
+ * Ensure the caller may perform an action on a repository of this name.
19
+ *
20
+ * The repository need not be there. Real IAM evaluates a request before the
21
+ * service handles it, so a caller with no permission is refused whether or
22
+ * not the repository is there, and `CreateRepository` authorizes against the
23
+ * ARN the repository is about to have.
24
+ */
25
+ authorizeRepository(action, repositoryName, caller) {
26
+ const resource = this.address.arn(repositoryName);
27
+ const decision = this.iam.authorize({ action, resource, caller });
28
+ if (decision.isDenied) {
29
+ throw new SimIamAccessDenied({
30
+ principal: decision.caller.principal,
31
+ reason: decision.denialReason,
32
+ action,
33
+ resource,
34
+ });
35
+ }
36
+ return decision.caller;
37
+ }
38
+ }
@@ -1,9 +1,12 @@
1
+ import type { SimCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
1
2
  import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
3
  import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
4
+ import type { SimEcrAuthorizer } from "../../authorize/sim-ecr-authorizer.js";
3
5
  import type { SimEcrRepository } from "../../repository/sim-ecr-repository.js";
4
6
  import type { SimEcr } from "../../sim-ecr.js";
5
7
  interface SimCfnEcrRepositoryCreatorProperties {
6
8
  readonly ecr: SimEcr;
9
+ readonly authorizer: SimEcrAuthorizer;
7
10
  }
8
11
  /**
9
12
  * Creates simulated repositories from AWS::ECR::Repository Resources.
@@ -16,11 +19,17 @@ interface SimCfnEcrRepositoryCreatorProperties {
16
19
  */
17
20
  export declare class SimCfnEcrRepositoryCreator {
18
21
  private readonly ecr;
22
+ private readonly authorizer;
19
23
  constructor(properties: SimCfnEcrRepositoryCreatorProperties);
20
24
  /**
21
25
  * Create a repository from an AWS::ECR::Repository Resource.
26
+ *
27
+ * Naming the repository is what makes it. That is where the deployment's
28
+ * caller is authorized, as it is on a real deploy before ECR answers. A
29
+ * repository a test has already registered a handler in is adopted, and the
30
+ * caller is authorized for it either way.
22
31
  */
23
- create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord): SimEcrRepository;
32
+ create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord, options?: SimCfnResourceCallerOptions): SimEcrRepository;
24
33
  /**
25
34
  * Delete a repository created from an AWS::ECR::Repository Resource.
26
35
  *
@@ -37,6 +46,6 @@ export declare class SimCfnEcrRepositoryCreator {
37
46
  * being protected here is a test's own registration rather than anything
38
47
  * CloudFormation put there.
39
48
  */
40
- delete(resource: SimCfnResource, repository: SimEcrRepository): void;
49
+ delete(resource: SimCfnResource, repository: SimEcrRepository, options?: SimCfnResourceCallerOptions): void;
41
50
  }
42
51
  export {};
@@ -10,19 +10,27 @@ import { SimCfnEcrRepositoryProperties } from "./sim-cfn-ecr-repository-properti
10
10
  */
11
11
  export class SimCfnEcrRepositoryCreator {
12
12
  ecr;
13
+ authorizer;
13
14
  constructor(properties) {
14
15
  this.ecr = properties.ecr;
16
+ this.authorizer = properties.authorizer;
15
17
  }
16
18
  /**
17
19
  * Create a repository from an AWS::ECR::Repository Resource.
20
+ *
21
+ * Naming the repository is what makes it. That is where the deployment's
22
+ * caller is authorized, as it is on a real deploy before ECR answers. A
23
+ * repository a test has already registered a handler in is adopted, and the
24
+ * caller is authorized for it either way.
18
25
  */
19
- create(resource, properties) {
26
+ create(resource, properties, options) {
20
27
  const repositoryProperties = new SimCfnEcrRepositoryProperties({
21
28
  resource,
22
29
  properties,
23
30
  });
24
31
  const repositoryName = repositoryProperties.repositoryName();
25
32
  repositoryProperties.recordIgnoredProperties();
33
+ this.authorizer.authorizeRepository("ecr:CreateRepository", repositoryName, options?.caller);
26
34
  return this.ecr.repository(repositoryName);
27
35
  }
28
36
  /**
@@ -41,7 +49,8 @@ export class SimCfnEcrRepositoryCreator {
41
49
  * being protected here is a test's own registration rather than anything
42
50
  * CloudFormation put there.
43
51
  */
44
- delete(resource, repository) {
52
+ delete(resource, repository, options) {
53
+ this.authorizer.authorizeRepository("ecr:DeleteRepository", repository.repositoryName, options?.caller);
45
54
  if (repository.hasImage) {
46
55
  throw new Error(`Unsupported sim ECR CloudFormation Resource ${resource.logicalId} ` +
47
56
  `deletion: the simulated ECR repository ` +
@@ -1,8 +1,10 @@
1
1
  import type { SimCfnServiceResourceFactory } from "../../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
2
- import type { SimCfnResource, SimCloudFormationResourceCreateContext } from "../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimCfnResource, SimCloudFormationResourceCreateContext, SimCloudFormationResourceDeleteContext } from "../../cloudformation/resource/sim-cfn-resource.js";
3
+ import type { SimEcrAuthorizer } from "../authorize/sim-ecr-authorizer.js";
3
4
  import type { SimEcr } from "../sim-ecr.js";
4
5
  interface SimEcrCfnResourceFactoryProperties {
5
6
  readonly ecr: SimEcr;
7
+ readonly authorizer: SimEcrAuthorizer;
6
8
  }
7
9
  /**
8
10
  * CloudFormation Resource factory for simulated ECR resources.
@@ -21,6 +23,6 @@ export declare class SimEcrCfnResourceFactory implements SimCfnServiceResourceFa
21
23
  /**
22
24
  * Delete a simulated ECR resource created from a CloudFormation Resource.
23
25
  */
24
- delete(resourceTypeName: string, resource: SimCfnResource): Promise<void>;
26
+ delete(resourceTypeName: string, resource: SimCfnResource, context: SimCloudFormationResourceDeleteContext): Promise<void>;
25
27
  }
26
28
  export {};
@@ -1,5 +1,7 @@
1
1
  import { assertDefined } from "../../../util/type-guard/defined.js";
2
+ import { simCfnResourceCallerOptions } from "../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
2
3
  import { SimCfnEcrRepositoryCreator } from "./repository/sim-cfn-ecr-repository-creator.js";
4
+ import { unsupportedSimEcrResourceType } from "./sim-ecr-cfn-unsupported-resource.js";
3
5
  /**
4
6
  * CloudFormation Resource factory for simulated ECR resources.
5
7
  *
@@ -10,30 +12,27 @@ import { SimCfnEcrRepositoryCreator } from "./repository/sim-cfn-ecr-repository-
10
12
  export class SimEcrCfnResourceFactory {
11
13
  repositoryCreator;
12
14
  constructor(properties) {
13
- this.repositoryCreator = new SimCfnEcrRepositoryCreator({
14
- ecr: properties.ecr,
15
- });
15
+ this.repositoryCreator = new SimCfnEcrRepositoryCreator(properties);
16
16
  }
17
17
  /**
18
18
  * Create a simulated ECR resource from a CloudFormation Resource.
19
19
  */
20
20
  create(resourceTypeName, resource, context) {
21
21
  if (resourceTypeName !== "Repository") {
22
- throw new Error(`Unsupported sim ECR CloudFormation Resource ${resourceTypeName}`);
22
+ throw unsupportedSimEcrResourceType(resourceTypeName, "");
23
23
  }
24
- return Promise.resolve(this.repositoryCreator.create(resource, context.resolvedProperties ?? resource.properties));
24
+ return Promise.resolve(this.repositoryCreator.create(resource, context.resolvedProperties ?? resource.properties, simCfnResourceCallerOptions(context.caller)));
25
25
  }
26
26
  /**
27
27
  * Delete a simulated ECR resource created from a CloudFormation Resource.
28
28
  */
29
- delete(resourceTypeName, resource) {
29
+ delete(resourceTypeName, resource, context) {
30
30
  if (resourceTypeName !== "Repository") {
31
- throw new Error(`Unsupported sim ECR CloudFormation Resource ${resourceTypeName} ` +
32
- `deletion`);
31
+ throw unsupportedSimEcrResourceType(resourceTypeName, " deletion");
33
32
  }
34
33
  const repository = resource.simResource;
35
34
  assertDefined(repository, `sim ECR repository for CloudFormation Resource ${resource.logicalId}`);
36
- this.repositoryCreator.delete(resource, repository);
35
+ this.repositoryCreator.delete(resource, repository, simCfnResourceCallerOptions(context.caller));
37
36
  return Promise.resolve();
38
37
  }
39
38
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A refusal naming an ECR Resource type this simulation has no creator for.
3
+ *
4
+ * The wording is what a Stack reads to record the Resource as a skip rather
5
+ * than failing the whole deployment over it.
6
+ */
7
+ export declare function unsupportedSimEcrResourceType(resourceTypeName: string, suffix: string): Error;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A refusal naming an ECR Resource type this simulation has no creator for.
3
+ *
4
+ * The wording is what a Stack reads to record the Resource as a skip rather
5
+ * than failing the whole deployment over it.
6
+ */
7
+ export function unsupportedSimEcrResourceType(resourceTypeName, suffix) {
8
+ return new Error(`Unsupported sim ECR CloudFormation Resource ${resourceTypeName}${suffix}`);
9
+ }
@@ -1,9 +1,11 @@
1
1
  import type { SimCfnServiceResourceFactory } from "../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
2
2
  import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
3
+ import type { SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-service-auth-z.js";
3
4
  import { SimEcrRegistry } from "./registry/sim-ecr-registry.js";
4
5
  import type { SimEcrRepository } from "./repository/sim-ecr-repository.js";
5
6
  interface SimEcrProperties {
6
7
  readonly accountRegionScope?: SimAwsAccountRegionScope;
8
+ readonly iam?: SimIamInterServiceAuthZ;
7
9
  readonly registry?: SimEcrRegistry;
8
10
  }
9
11
  /**
@@ -19,6 +21,11 @@ interface SimEcrProperties {
19
21
  * Repositories are scoped to an account and region, as they are on real AWS:
20
22
  * a repository ARN names the region, and the registry host in an image URI
21
23
  * carries both the account and the region.
24
+ *
25
+ * Nothing a test does here is authorized, for the same reason. Naming a
26
+ * repository is the simulator's own accessor, and no principal makes that
27
+ * request. A CloudFormation deployment does make one, and a Stack making or
28
+ * removing a repository is decided by simulated IAM as the caller it named.
22
29
  */
23
30
  export declare class SimEcr {
24
31
  private readonly repositories;
@@ -1,4 +1,6 @@
1
1
  import { simAwsAccountRegionScopeFactory } from "../aws/sim-aws-account-region-scope.factory.js";
2
+ import { simIamInRegion } from "../iam/authorize/sim-iam-region-auth-z.js";
3
+ import { SimEcrAuthorizer } from "./authorize/sim-ecr-authorizer.js";
2
4
  import { SimEcrCfnResourceFactory } from "./cfn/sim-ecr-cfn-resource-factory.js";
3
5
  import { SimEcrRegistry } from "./registry/sim-ecr-registry.js";
4
6
  import { SimEcrRepositoryAddress } from "./repository/sim-ecr-repository-address.js";
@@ -16,15 +18,25 @@ import { SimEcrRepositoryStore } from "./repository/sim-ecr-repository-store.js"
16
18
  * Repositories are scoped to an account and region, as they are on real AWS:
17
19
  * a repository ARN names the region, and the registry host in an image URI
18
20
  * carries both the account and the region.
21
+ *
22
+ * Nothing a test does here is authorized, for the same reason. Naming a
23
+ * repository is the simulator's own accessor, and no principal makes that
24
+ * request. A CloudFormation deployment does make one, and a Stack making or
25
+ * removing a repository is decided by simulated IAM as the caller it named.
19
26
  */
20
27
  export class SimEcr {
21
28
  repositories;
22
- cfnFactory = new SimEcrCfnResourceFactory({ ecr: this });
29
+ cfnFactory;
23
30
  constructor(properties = {}) {
24
31
  const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), registry = new SimEcrRegistry(), } = properties;
25
- this.repositories = new SimEcrRepositoryStore({
26
- address: new SimEcrRepositoryAddress(accountRegionScope),
27
- registry,
32
+ const address = new SimEcrRepositoryAddress(accountRegionScope);
33
+ this.repositories = new SimEcrRepositoryStore({ address, registry });
34
+ this.cfnFactory = new SimEcrCfnResourceFactory({
35
+ ecr: this,
36
+ authorizer: new SimEcrAuthorizer({
37
+ iam: simIamInRegion(properties.iam, accountRegionScope.regionName),
38
+ address,
39
+ }),
28
40
  });
29
41
  }
30
42
  /**
@@ -18,11 +18,23 @@ interface SimEcsAuthorizerProperties {
18
18
  * A denial is reported as ECS's own AccessDeniedException rather than the
19
19
  * shared IAM error, because that is the error a real ECS caller would have to
20
20
  * handle.
21
+ *
22
+ * A registration carrying a `taskRoleArn` or an `executionRoleArn` hands ECS
23
+ * Roles it runs the task as later, and each one is authorized as
24
+ * `iam:PassRole` against the Role itself.
21
25
  */
22
26
  export declare class SimEcsAuthorizer {
23
27
  private readonly iam;
24
28
  private readonly callerIdentifier;
29
+ private readonly passRole;
25
30
  constructor(properties: SimEcsAuthorizerProperties);
31
+ /**
32
+ * Ensure the caller may hand ECS every Role a task definition names.
33
+ *
34
+ * Both Roles are optional on a registration, and one left out passes
35
+ * nothing.
36
+ */
37
+ authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimEcsRequestOptions): void;
26
38
  /**
27
39
  * Ensure the caller may perform an action on a cluster, named by its ARN.
28
40
  *
@@ -1,5 +1,7 @@
1
+ import { SimIamPassRoleAuthorizer, simIamPassRoleDenialMessage, } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamCallerIdentifier } from "../../../iam/error/sim-iam-caller-identifier.js";
2
3
  import { SimEcsAccessDeniedException } from "../../error/sim-ecs.error.js";
4
+ import { simEcsTasksServicePrincipal } from "../../sim-ecs-service-principal.js";
3
5
  /**
4
6
  * The resource an ECS action with no resource type authorizes against.
5
7
  *
@@ -24,12 +26,31 @@ const noResource = "*";
24
26
  * A denial is reported as ECS's own AccessDeniedException rather than the
25
27
  * shared IAM error, because that is the error a real ECS caller would have to
26
28
  * handle.
29
+ *
30
+ * A registration carrying a `taskRoleArn` or an `executionRoleArn` hands ECS
31
+ * Roles it runs the task as later, and each one is authorized as
32
+ * `iam:PassRole` against the Role itself.
27
33
  */
28
34
  export class SimEcsAuthorizer {
29
35
  iam;
30
36
  callerIdentifier = new SimIamCallerIdentifier();
37
+ passRole;
31
38
  constructor(properties) {
32
39
  this.iam = properties.iam;
40
+ this.passRole = new SimIamPassRoleAuthorizer({
41
+ iam: properties.iam,
42
+ passedToService: simEcsTasksServicePrincipal,
43
+ denied: (denial) => new SimEcsAccessDeniedException(simIamPassRoleDenialMessage(denial)),
44
+ });
45
+ }
46
+ /**
47
+ * Ensure the caller may hand ECS every Role a task definition names.
48
+ *
49
+ * Both Roles are optional on a registration, and one left out passes
50
+ * nothing.
51
+ */
52
+ authorizePassRole(roleArns, options) {
53
+ this.passRole.authorizeAll(roleArns, options?.caller);
33
54
  }
34
55
  /**
35
56
  * Ensure the caller may perform an action on a cluster, named by its ARN.
@@ -47,6 +47,7 @@ export class RegisterTaskDefinitionCommandHandler extends SimEcsCommandHandler {
47
47
  const settings = new SimEcsTaskDefinitionSettings(command.input);
48
48
  await this.sequence();
49
49
  const caller = this.authorizer.authorizeAnyResource("ecs:RegisterTaskDefinition", options);
50
+ this.authorizer.authorizePassRole([settings.taskRoleArn, settings.executionRoleArn], options);
50
51
  const familyRevisions = this.taskDefinitions.family(family);
51
52
  const revision = familyRevisions.nextRevisionNumber();
52
53
  const taskDefinition = new SimEcsTaskDefinition({
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The service principal ECS holds a task's Roles as.
3
+ *
4
+ * A task role and a task execution role are both trusted by this principal,
5
+ * and it is what `iam:PassedToService` carries when a task definition is
6
+ * registered.
7
+ */
8
+ export declare const simEcsTasksServicePrincipal = "ecs-tasks.amazonaws.com";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The service principal ECS holds a task's Roles as.
3
+ *
4
+ * A task role and a task execution role are both trusted by this principal,
5
+ * and it is what `iam:PassedToService` carries when a task definition is
6
+ * registered.
7
+ */
8
+ export const simEcsTasksServicePrincipal = "ecs-tasks.amazonaws.com";
@@ -16,6 +16,11 @@ interface SimEventBridgeAuthorizerProperties {
16
16
  * answers a refused request with. It has no error of its own for the case, so
17
17
  * there is nothing service-specific to translate to.
18
18
  *
19
+ * A target carrying a `RoleArn` hands EventBridge a Role it runs the target
20
+ * as later, and that is authorized as `iam:PassRole` against the Role. An ECS
21
+ * target is the only one this simulation reads a `RoleArn` from, since a
22
+ * `RoleArn` on any other target is refused.
23
+ *
19
24
  * Event bus resource policies are not part of the decision yet, because
20
25
  * nothing sets one: PutPermission and the bus `Policy` attribute are not
21
26
  * simulated. A caller from another Account therefore has no way to be admitted
@@ -24,7 +29,14 @@ interface SimEventBridgeAuthorizerProperties {
24
29
  export declare class SimEventBridgeAuthorizer {
25
30
  private readonly iam;
26
31
  private readonly callerIdentifier;
32
+ private readonly passRole;
27
33
  constructor(properties: SimEventBridgeAuthorizerProperties);
34
+ /**
35
+ * Ensure the caller may hand EventBridge every Role a request names.
36
+ *
37
+ * A target with no Role of its own passes nothing.
38
+ */
39
+ authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimEventBridgeRequestOptions): void;
28
40
  /**
29
41
  * Ensure the caller may perform an action on a bus, named by its ARN.
30
42
  *
@@ -1,4 +1,6 @@
1
+ import { SimIamPassRoleAuthorizer, simIamPassRoleDenialMessage, } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamCallerIdentifier } from "../../../iam/error/sim-iam-caller-identifier.js";
3
+ import { simEventBridgeServicePrincipal } from "../../delivery/sim-event-bridge-delivery.js";
2
4
  import { SimEventBridgeAccessDeniedException } from "../../error/sim-event-bridge.error.js";
3
5
  /**
4
6
  * The resource an action with no resource type authorizes against.
@@ -20,6 +22,11 @@ const noResource = "*";
20
22
  * answers a refused request with. It has no error of its own for the case, so
21
23
  * there is nothing service-specific to translate to.
22
24
  *
25
+ * A target carrying a `RoleArn` hands EventBridge a Role it runs the target
26
+ * as later, and that is authorized as `iam:PassRole` against the Role. An ECS
27
+ * target is the only one this simulation reads a `RoleArn` from, since a
28
+ * `RoleArn` on any other target is refused.
29
+ *
23
30
  * Event bus resource policies are not part of the decision yet, because
24
31
  * nothing sets one: PutPermission and the bus `Policy` attribute are not
25
32
  * simulated. A caller from another Account therefore has no way to be admitted
@@ -28,8 +35,22 @@ const noResource = "*";
28
35
  export class SimEventBridgeAuthorizer {
29
36
  iam;
30
37
  callerIdentifier = new SimIamCallerIdentifier();
38
+ passRole;
31
39
  constructor(properties) {
32
40
  this.iam = properties.iam;
41
+ this.passRole = new SimIamPassRoleAuthorizer({
42
+ iam: properties.iam,
43
+ passedToService: simEventBridgeServicePrincipal,
44
+ denied: (denial) => new SimEventBridgeAccessDeniedException(simIamPassRoleDenialMessage(denial)),
45
+ });
46
+ }
47
+ /**
48
+ * Ensure the caller may hand EventBridge every Role a request names.
49
+ *
50
+ * A target with no Role of its own passes nothing.
51
+ */
52
+ authorizePassRole(roleArns, options) {
53
+ this.passRole.authorizeAll(roleArns, options?.caller);
33
54
  }
34
55
  /**
35
56
  * Ensure the caller may perform an action on a bus, named by its ARN.
@@ -19,6 +19,12 @@ interface SimEventBridgeRuleAccessProperties {
19
19
  readonly authorizer: SimEventBridgeAuthorizer;
20
20
  readonly accountRegionScope: SimAwsAccountRegionScope;
21
21
  }
22
+ /**
23
+ * The part of a target that names a Role.
24
+ */
25
+ interface SimEventBridgeTargetRole {
26
+ readonly RoleArn?: string | undefined;
27
+ }
22
28
  interface SimEventBridgeRuleRequest {
23
29
  readonly Name?: string | undefined;
24
30
  readonly EventBusName?: string | undefined;
@@ -48,6 +54,13 @@ export declare class SimEventBridgeRuleAccess {
48
54
  * Ensure the caller may perform an action on a rule, which need not exist.
49
55
  */
50
56
  authorize(action: string, requested: SimEventBridgeRequestedRule, options?: SimEventBridgeRequestOptions): void;
57
+ /**
58
+ * Ensure the caller may hand EventBridge every Role a request names.
59
+ *
60
+ * A rule runs its targets as the Role each one carries, long after the
61
+ * request that put them there, so adding one is a hand-over of that Role.
62
+ */
63
+ authorizePassRole(targets: readonly SimEventBridgeTargetRole[], options?: SimEventBridgeRequestOptions): void;
51
64
  /**
52
65
  * Resolve the rule a request names, authorizing the action first.
53
66
  */
@@ -37,6 +37,15 @@ export class SimEventBridgeRuleAccess {
37
37
  authorize(action, requested, options) {
38
38
  this.authorizer.authorizeBus(action, this.arnFor(requested), options);
39
39
  }
40
+ /**
41
+ * Ensure the caller may hand EventBridge every Role a request names.
42
+ *
43
+ * A rule runs its targets as the Role each one carries, long after the
44
+ * request that put them there, so adding one is a hand-over of that Role.
45
+ */
46
+ authorizePassRole(targets, options) {
47
+ this.authorizer.authorizePassRole(targets.map((target) => target.RoleArn), options);
48
+ }
40
49
  /**
41
50
  * Resolve the rule a request names, authorizing the action first.
42
51
  */
@@ -33,6 +33,7 @@ export class SimEventBridgePutTargets {
33
33
  for (const target of requested) {
34
34
  refuseUnsimulatedTargetInput(target);
35
35
  }
36
+ this.access.authorizePassRole(requested, options);
36
37
  const added = requested.map((target) => SimEventTarget.of(target));
37
38
  refuseRepeatedTargetIds(added);
38
39
  const busName = rule.busName.value;
@@ -11,10 +11,22 @@ interface SimFirehoseAuthorizerProperties {
11
11
  * name, and the resource is the ARN of the delivery stream the operation names.
12
12
  * ListDeliveryStreams is the exception. It names no delivery stream, so it
13
13
  * authorizes against `*`.
14
+ *
15
+ * A delivery stream carries a Role for its destination, and a second one for
16
+ * its source where it reads a Kinesis stream. Firehose keeps both and delivers
17
+ * as them later, so creating one authorizes `iam:PassRole` against each.
14
18
  */
15
19
  export declare class SimFirehoseAuthorizer {
16
20
  private readonly iam;
21
+ private readonly passRole;
17
22
  constructor(properties: SimFirehoseAuthorizerProperties);
23
+ /**
24
+ * Ensure the caller may hand Firehose every Role a delivery stream names.
25
+ *
26
+ * A delivery stream taking records through PutRecord has no source Role, and
27
+ * one left out passes nothing.
28
+ */
29
+ authorizePassRole(roleArns: readonly (string | undefined)[], caller?: SimAwsCaller): void;
18
30
  /**
19
31
  * Ensure the caller may perform an action on a delivery stream, named by its
20
32
  * ARN.