aws-sdk-core 2.3.23 → 3.89.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 (496) hide show
  1. checksums.yaml +5 -5
  2. data/VERSION +1 -0
  3. data/ca-bundle.crt +3615 -3541
  4. data/lib/aws-sdk-core.rb +106 -404
  5. data/lib/aws-sdk-core/arn.rb +77 -0
  6. data/lib/aws-sdk-core/arn_parser.rb +38 -0
  7. data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +101 -0
  8. data/lib/aws-sdk-core/async_client_stubs.rb +80 -0
  9. data/lib/aws-sdk-core/binary.rb +6 -0
  10. data/lib/aws-sdk-core/binary/decode_handler.rb +56 -0
  11. data/lib/aws-sdk-core/binary/encode_handler.rb +32 -0
  12. data/lib/aws-sdk-core/binary/event_builder.rb +122 -0
  13. data/lib/aws-sdk-core/binary/event_parser.rb +134 -0
  14. data/lib/aws-sdk-core/binary/event_stream_decoder.rb +62 -0
  15. data/lib/aws-sdk-core/binary/event_stream_encoder.rb +53 -0
  16. data/lib/aws-sdk-core/client_side_monitoring/publisher.rb +49 -0
  17. data/lib/aws-sdk-core/client_side_monitoring/request_metrics.rb +197 -0
  18. data/lib/aws-sdk-core/client_stubs.rb +73 -10
  19. data/lib/aws-sdk-core/credential_provider.rb +0 -29
  20. data/lib/aws-sdk-core/credential_provider_chain.rb +56 -6
  21. data/lib/aws-sdk-core/deprecations.rb +16 -10
  22. data/lib/aws-sdk-core/ecs_credentials.rb +14 -10
  23. data/lib/aws-sdk-core/endpoint_cache.rb +191 -0
  24. data/lib/aws-sdk-core/errors.rb +221 -11
  25. data/lib/aws-sdk-core/event_emitter.rb +62 -0
  26. data/lib/aws-sdk-core/ini_parser.rb +41 -0
  27. data/lib/aws-sdk-core/instance_profile_credentials.rb +133 -42
  28. data/lib/aws-sdk-core/json.rb +9 -10
  29. data/lib/aws-sdk-core/json/builder.rb +4 -2
  30. data/lib/aws-sdk-core/json/error_handler.rb +19 -2
  31. data/lib/aws-sdk-core/json/handler.rb +22 -3
  32. data/lib/aws-sdk-core/json/parser.rb +1 -1
  33. data/lib/aws-sdk-core/log/formatter.rb +7 -1
  34. data/lib/aws-sdk-core/log/param_filter.rb +4 -3
  35. data/lib/aws-sdk-core/pageable_response.rb +1 -0
  36. data/lib/aws-sdk-core/pager.rb +30 -25
  37. data/lib/aws-sdk-core/param_converter.rb +3 -3
  38. data/lib/aws-sdk-core/param_validator.rb +60 -26
  39. data/lib/aws-sdk-core/plugins/api_key.rb +52 -0
  40. data/lib/aws-sdk-core/plugins/apig_authorizer_token.rb +30 -0
  41. data/lib/aws-sdk-core/plugins/apig_credentials_configuration.rb +34 -0
  42. data/lib/aws-sdk-core/plugins/apig_user_agent.rb +37 -0
  43. data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +280 -0
  44. data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +84 -0
  45. data/lib/aws-sdk-core/plugins/credentials_configuration.rb +62 -0
  46. data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +160 -0
  47. data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +63 -0
  48. data/lib/aws-sdk-core/plugins/event_stream_configuration.rb +30 -0
  49. data/lib/aws-sdk-core/plugins/global_configuration.rb +19 -10
  50. data/lib/aws-sdk-core/plugins/helpful_socket_errors.rb +41 -0
  51. data/lib/aws-sdk-core/plugins/idempotency_token.rb +36 -0
  52. data/lib/aws-sdk-core/plugins/invocation_id.rb +33 -0
  53. data/lib/aws-sdk-core/plugins/jsonvalue_converter.rb +29 -0
  54. data/lib/aws-sdk-core/plugins/logging.rb +18 -18
  55. data/lib/aws-sdk-core/plugins/param_converter.rb +9 -5
  56. data/lib/aws-sdk-core/plugins/param_validator.rb +8 -5
  57. data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +10 -0
  58. data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -1
  59. data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +13 -12
  60. data/lib/aws-sdk-core/plugins/protocols/query.rb +2 -2
  61. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +48 -19
  62. data/lib/aws-sdk-core/plugins/response_paging.rb +5 -18
  63. data/lib/aws-sdk-core/plugins/retry_errors.rb +102 -24
  64. data/lib/aws-sdk-core/plugins/signature_v2.rb +51 -0
  65. data/lib/aws-sdk-core/plugins/signature_v4.rb +141 -0
  66. data/lib/aws-sdk-core/plugins/stub_responses.rb +35 -18
  67. data/lib/aws-sdk-core/plugins/transfer_encoding.rb +53 -0
  68. data/lib/aws-sdk-core/plugins/user_agent.rb +23 -10
  69. data/lib/aws-sdk-core/process_credentials.rb +80 -0
  70. data/lib/aws-sdk-core/query.rb +5 -0
  71. data/lib/aws-sdk-core/query/ec2_param_builder.rb +9 -3
  72. data/lib/aws-sdk-core/query/handler.rb +20 -16
  73. data/lib/aws-sdk-core/query/param_builder.rb +10 -4
  74. data/lib/aws-sdk-core/refreshing_credentials.rb +1 -1
  75. data/lib/aws-sdk-core/resources/collection.rb +121 -0
  76. data/lib/aws-sdk-core/rest.rb +10 -0
  77. data/lib/aws-sdk-core/rest/handler.rb +1 -0
  78. data/lib/aws-sdk-core/rest/request/builder.rb +2 -1
  79. data/lib/aws-sdk-core/rest/request/endpoint.rb +11 -66
  80. data/lib/aws-sdk-core/rest/request/headers.rb +20 -1
  81. data/lib/aws-sdk-core/rest/request/querystring_builder.rb +103 -0
  82. data/lib/aws-sdk-core/rest/response/body.rb +14 -1
  83. data/lib/aws-sdk-core/rest/response/headers.rb +9 -0
  84. data/lib/aws-sdk-core/rest/response/parser.rb +18 -14
  85. data/lib/aws-sdk-core/shared_config.rb +451 -0
  86. data/lib/aws-sdk-core/shared_credentials.rb +16 -53
  87. data/lib/aws-sdk-core/structure.rb +22 -13
  88. data/lib/aws-sdk-core/stubbing/data_applicator.rb +1 -1
  89. data/lib/aws-sdk-core/stubbing/empty_stub.rb +10 -3
  90. data/lib/aws-sdk-core/stubbing/protocols/api_gateway.rb +8 -0
  91. data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +1 -1
  92. data/lib/aws-sdk-core/stubbing/protocols/rest.rb +99 -1
  93. data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +5 -1
  94. data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +9 -5
  95. data/lib/aws-sdk-core/stubbing/stub_data.rb +16 -3
  96. data/lib/aws-sdk-core/util.rb +66 -0
  97. data/lib/aws-sdk-core/waiters.rb +3 -0
  98. data/lib/aws-sdk-core/waiters/poller.rb +5 -7
  99. data/lib/aws-sdk-core/waiters/waiter.rb +3 -2
  100. data/lib/aws-sdk-core/xml.rb +9 -0
  101. data/lib/aws-sdk-core/xml/builder.rb +11 -5
  102. data/lib/aws-sdk-core/xml/error_handler.rb +27 -5
  103. data/lib/aws-sdk-core/xml/parser.rb +1 -11
  104. data/lib/aws-sdk-core/xml/parser/engines/ox.rb +5 -1
  105. data/lib/aws-sdk-core/xml/parser/frame.rb +6 -6
  106. data/lib/aws-sdk-sts.rb +45 -0
  107. data/lib/aws-sdk-sts/client.rb +2156 -0
  108. data/lib/aws-sdk-sts/client_api.rb +336 -0
  109. data/lib/aws-sdk-sts/customizations.rb +2 -0
  110. data/lib/aws-sdk-sts/errors.rb +142 -0
  111. data/lib/aws-sdk-sts/plugins/sts_regional_endpoints.rb +32 -0
  112. data/lib/aws-sdk-sts/presigner.rb +67 -0
  113. data/lib/aws-sdk-sts/resource.rb +23 -0
  114. data/lib/aws-sdk-sts/types.rb +1504 -0
  115. data/lib/seahorse.rb +60 -60
  116. data/lib/seahorse/client/async_base.rb +50 -0
  117. data/lib/seahorse/client/async_response.rb +62 -0
  118. data/lib/seahorse/client/base.rb +5 -9
  119. data/lib/seahorse/client/configuration.rb +10 -2
  120. data/lib/seahorse/client/events.rb +1 -1
  121. data/lib/seahorse/client/h2/connection.rb +246 -0
  122. data/lib/seahorse/client/h2/handler.rb +151 -0
  123. data/lib/seahorse/client/handler_list_entry.rb +2 -2
  124. data/lib/seahorse/client/http/async_response.rb +42 -0
  125. data/lib/seahorse/client/http/response.rb +13 -8
  126. data/lib/seahorse/client/logging/formatter.rb +7 -1
  127. data/lib/seahorse/client/logging/handler.rb +2 -0
  128. data/lib/seahorse/client/net_http/connection_pool.rb +46 -28
  129. data/lib/seahorse/client/net_http/handler.rb +17 -3
  130. data/lib/seahorse/client/net_http/patches.rb +9 -1
  131. data/lib/seahorse/client/networking_error.rb +28 -0
  132. data/lib/seahorse/client/plugin.rb +67 -6
  133. data/lib/seahorse/client/plugin_list.rb +3 -1
  134. data/lib/seahorse/client/plugins/content_length.rb +7 -2
  135. data/lib/seahorse/client/plugins/endpoint.rb +14 -10
  136. data/lib/seahorse/client/plugins/h2.rb +64 -0
  137. data/lib/seahorse/client/plugins/logging.rb +17 -19
  138. data/lib/seahorse/client/plugins/net_http.rb +23 -15
  139. data/lib/seahorse/client/plugins/raise_response_errors.rb +4 -4
  140. data/lib/seahorse/client/plugins/response_target.rb +10 -1
  141. data/lib/seahorse/client/request_context.rb +5 -0
  142. data/lib/seahorse/client/response.rb +9 -20
  143. data/lib/seahorse/model/api.rb +37 -0
  144. data/lib/seahorse/model/authorizer.rb +21 -0
  145. data/lib/seahorse/model/operation.rb +20 -0
  146. data/lib/seahorse/model/shapes.rb +44 -2
  147. data/lib/seahorse/util.rb +1 -21
  148. metadata +127 -360
  149. data/apis/acm/2015-12-08/api-2.json +0 -495
  150. data/apis/acm/2015-12-08/examples-1.json +0 -5
  151. data/apis/acm/2015-12-08/paginators-1.json +0 -10
  152. data/apis/apigateway/2015-07-09/api-2.json +0 -3347
  153. data/apis/apigateway/2015-07-09/examples-1.json +0 -5
  154. data/apis/apigateway/2015-07-09/paginators-1.json +0 -52
  155. data/apis/application-autoscaling/2016-02-06/api-2.json +0 -502
  156. data/apis/application-autoscaling/2016-02-06/examples-1.json +0 -5
  157. data/apis/application-autoscaling/2016-02-06/paginators-1.json +0 -22
  158. data/apis/autoscaling/2011-01-01/api-2.json +0 -2038
  159. data/apis/autoscaling/2011-01-01/examples-1.json +0 -5
  160. data/apis/autoscaling/2011-01-01/paginators-1.json +0 -52
  161. data/apis/autoscaling/2011-01-01/resources-1.json +0 -1613
  162. data/apis/autoscaling/2011-01-01/waiters-2.json +0 -62
  163. data/apis/cloudformation/2010-05-15/api-2.json +0 -1299
  164. data/apis/cloudformation/2010-05-15/examples-1.json +0 -5
  165. data/apis/cloudformation/2010-05-15/paginators-1.json +0 -27
  166. data/apis/cloudformation/2010-05-15/resources-1.json +0 -202
  167. data/apis/cloudformation/2010-05-15/waiters-2.json +0 -235
  168. data/apis/cloudfront/2016-01-28/api-2.json +0 -2218
  169. data/apis/cloudfront/2016-01-28/examples-1.json +0 -5
  170. data/apis/cloudfront/2016-01-28/paginators-1.json +0 -32
  171. data/apis/cloudfront/2016-01-28/waiters-2.json +0 -47
  172. data/apis/cloudhsm/2014-05-30/api-2.json +0 -877
  173. data/apis/cloudhsm/2014-05-30/examples-1.json +0 -5
  174. data/apis/cloudsearch/2013-01-01/api-2.json +0 -2001
  175. data/apis/cloudsearch/2013-01-01/paginators-1.json +0 -20
  176. data/apis/cloudsearchdomain/2013-01-01/api-2.json +0 -373
  177. data/apis/cloudsearchdomain/2013-01-01/examples-1.json +0 -5
  178. data/apis/cloudtrail/2013-11-01/api-2.json +0 -801
  179. data/apis/cloudtrail/2013-11-01/examples-1.json +0 -5
  180. data/apis/cloudtrail/2013-11-01/paginators-1.json +0 -7
  181. data/apis/codecommit/2015-04-13/api-2.json +0 -916
  182. data/apis/codecommit/2015-04-13/examples-1.json +0 -5
  183. data/apis/codecommit/2015-04-13/paginators-1.json +0 -14
  184. data/apis/codedeploy/2014-10-06/api-2.json +0 -1954
  185. data/apis/codedeploy/2014-10-06/examples-1.json +0 -5
  186. data/apis/codedeploy/2014-10-06/paginators-1.json +0 -34
  187. data/apis/codepipeline/2015-07-09/api-2.json +0 -1633
  188. data/apis/codepipeline/2015-07-09/examples-1.json +0 -902
  189. data/apis/cognito-identity/2014-06-30/api-2.json +0 -859
  190. data/apis/cognito-identity/2014-06-30/examples-1.json +0 -5
  191. data/apis/cognito-idp/2016-04-18/api-2.json +0 -1657
  192. data/apis/cognito-idp/2016-04-18/examples-1.json +0 -5
  193. data/apis/cognito-sync/2014-06-30/api-2.json +0 -1874
  194. data/apis/config/2014-11-12/api-2.json +0 -1303
  195. data/apis/config/2014-11-12/examples-1.json +0 -5
  196. data/apis/config/2014-11-12/paginators-1.json +0 -10
  197. data/apis/datapipeline/2012-10-29/api-2.json +0 -1167
  198. data/apis/datapipeline/2012-10-29/paginators-1.json +0 -26
  199. data/apis/devicefarm/2015-06-23/api-2.json +0 -1819
  200. data/apis/devicefarm/2015-06-23/examples-1.json +0 -5
  201. data/apis/devicefarm/2015-06-23/paginators-1.json +0 -74
  202. data/apis/directconnect/2012-10-25/api-2.json +0 -793
  203. data/apis/directconnect/2012-10-25/examples-1.json +0 -5
  204. data/apis/directconnect/2012-10-25/paginators-1.json +0 -22
  205. data/apis/discovery/2015-11-01/api-2.json +0 -556
  206. data/apis/discovery/2015-11-01/examples-1.json +0 -5
  207. data/apis/dms/2016-01-01/api-2.json +0 -1469
  208. data/apis/dms/2016-01-01/examples-1.json +0 -5
  209. data/apis/ds/2015-04-16/api-2.json +0 -1674
  210. data/apis/ds/2015-04-16/examples-1.json +0 -5
  211. data/apis/dynamodb/2012-08-10/api-2.json +0 -1200
  212. data/apis/dynamodb/2012-08-10/examples-1.json +0 -5
  213. data/apis/dynamodb/2012-08-10/paginators-1.json +0 -26
  214. data/apis/dynamodb/2012-08-10/resources-1.json +0 -136
  215. data/apis/dynamodb/2012-08-10/waiters-2.json +0 -35
  216. data/apis/ec2/2015-10-01/api-2.json +0 -13759
  217. data/apis/ec2/2015-10-01/examples-1.json +0 -5
  218. data/apis/ec2/2015-10-01/paginators-1.json +0 -138
  219. data/apis/ec2/2015-10-01/resources-1.json +0 -2582
  220. data/apis/ec2/2015-10-01/waiters-2.json +0 -593
  221. data/apis/ec2/2016-04-01/api-2.json +0 -13842
  222. data/apis/ec2/2016-04-01/examples-1.json +0 -5
  223. data/apis/ec2/2016-04-01/paginators-1.json +0 -138
  224. data/apis/ec2/2016-04-01/resources-1.json +0 -2582
  225. data/apis/ec2/2016-04-01/waiters-2.json +0 -593
  226. data/apis/ecr/2015-09-21/api-2.json +0 -849
  227. data/apis/ecr/2015-09-21/examples-1.json +0 -5
  228. data/apis/ecs/2014-11-13/api-2.json +0 -1396
  229. data/apis/ecs/2014-11-13/examples-1.json +0 -5
  230. data/apis/ecs/2014-11-13/paginators-1.json +0 -40
  231. data/apis/ecs/2014-11-13/waiters-2.json +0 -93
  232. data/apis/elasticache/2015-02-02/api-2.json +0 -2426
  233. data/apis/elasticache/2015-02-02/examples-1.json +0 -5
  234. data/apis/elasticache/2015-02-02/paginators-1.json +0 -76
  235. data/apis/elasticache/2015-02-02/waiters-2.json +0 -143
  236. data/apis/elasticbeanstalk/2010-12-01/api-2.json +0 -1894
  237. data/apis/elasticbeanstalk/2010-12-01/examples-1.json +0 -1109
  238. data/apis/elasticbeanstalk/2010-12-01/paginators-1.json +0 -25
  239. data/apis/elasticfilesystem/2015-02-01/api-2.json +0 -713
  240. data/apis/elasticfilesystem/2015-02-01/examples-1.json +0 -5
  241. data/apis/elasticloadbalancing/2012-06-01/api-2.json +0 -2145
  242. data/apis/elasticloadbalancing/2012-06-01/paginators-1.json +0 -18
  243. data/apis/elasticloadbalancing/2012-06-01/waiters-2.json +0 -49
  244. data/apis/elasticmapreduce/2009-03-31/api-2.json +0 -1341
  245. data/apis/elasticmapreduce/2009-03-31/examples-1.json +0 -5
  246. data/apis/elasticmapreduce/2009-03-31/paginators-1.json +0 -32
  247. data/apis/elasticmapreduce/2009-03-31/waiters-2.json +0 -67
  248. data/apis/elastictranscoder/2012-09-25/api-2.json +0 -1807
  249. data/apis/elastictranscoder/2012-09-25/paginators-1.json +0 -24
  250. data/apis/elastictranscoder/2012-09-25/waiters-2.json +0 -30
  251. data/apis/email/2010-12-01/api-2.json +0 -1791
  252. data/apis/email/2010-12-01/examples-1.json +0 -5
  253. data/apis/email/2010-12-01/paginators-1.json +0 -13
  254. data/apis/email/2010-12-01/waiters-2.json +0 -18
  255. data/apis/es/2015-01-01/api-2.json +0 -764
  256. data/apis/events/2015-10-07/api-2.json +0 -643
  257. data/apis/events/2015-10-07/examples-1.json +0 -5
  258. data/apis/firehose/2015-08-04/api-2.json +0 -719
  259. data/apis/gamelift/2015-10-01/api-2.json +0 -2307
  260. data/apis/gamelift/2015-10-01/examples-1.json +0 -5
  261. data/apis/glacier/2012-06-01/api-2.json +0 -2144
  262. data/apis/glacier/2012-06-01/paginators-1.json +0 -28
  263. data/apis/glacier/2012-06-01/resources-1.json +0 -563
  264. data/apis/glacier/2012-06-01/waiters-2.json +0 -39
  265. data/apis/iam/2010-05-08/api-2.json +0 -4514
  266. data/apis/iam/2010-05-08/examples-1.json +0 -5
  267. data/apis/iam/2010-05-08/paginators-1.json +0 -198
  268. data/apis/iam/2010-05-08/resources-1.json +0 -1740
  269. data/apis/iam/2010-05-08/waiters-2.json +0 -39
  270. data/apis/importexport/2010-06-01/api-2.json +0 -666
  271. data/apis/importexport/2010-06-01/paginators-1.json +0 -11
  272. data/apis/inspector/2016-02-16/api-2.json +0 -1964
  273. data/apis/inspector/2016-02-16/examples-1.json +0 -5
  274. data/apis/iot-data/2015-05-28/api-2.json +0 -263
  275. data/apis/iot/2015-05-28/api-2.json +0 -3800
  276. data/apis/iot/2015-05-28/examples-1.json +0 -5
  277. data/apis/kinesis/2013-12-02/api-2.json +0 -822
  278. data/apis/kinesis/2013-12-02/examples-1.json +0 -5
  279. data/apis/kinesis/2013-12-02/paginators-1.json +0 -18
  280. data/apis/kinesis/2013-12-02/waiters-2.json +0 -18
  281. data/apis/kms/2014-11-01/api-2.json +0 -1209
  282. data/apis/kms/2014-11-01/examples-1.json +0 -5
  283. data/apis/kms/2014-11-01/paginators-1.json +0 -32
  284. data/apis/lambda/2014-11-11/api-2.json +0 -667
  285. data/apis/lambda/2014-11-11/paginators-1.json +0 -16
  286. data/apis/lambda/2015-03-31/api-2.json +0 -1342
  287. data/apis/lambda/2015-03-31/examples-1.json +0 -5
  288. data/apis/lambda/2015-03-31/paginators-1.json +0 -16
  289. data/apis/logs/2014-03-28/api-2.json +0 -1138
  290. data/apis/logs/2014-03-28/examples-1.json +0 -5
  291. data/apis/logs/2014-03-28/paginators-1.json +0 -49
  292. data/apis/machinelearning/2014-12-12/api-2.json +0 -1947
  293. data/apis/machinelearning/2014-12-12/paginators-1.json +0 -28
  294. data/apis/machinelearning/2014-12-12/waiters-2.json +0 -81
  295. data/apis/marketplacecommerceanalytics/2015-07-01/api-2.json +0 -120
  296. data/apis/marketplacecommerceanalytics/2015-07-01/examples-1.json +0 -5
  297. data/apis/meteringmarketplace/2016-01-14/api-2.json +0 -127
  298. data/apis/meteringmarketplace/2016-01-14/examples-1.json +0 -5
  299. data/apis/monitoring/2010-08-01/api-2.json +0 -790
  300. data/apis/monitoring/2010-08-01/examples-1.json +0 -5
  301. data/apis/monitoring/2010-08-01/paginators-1.json +0 -24
  302. data/apis/monitoring/2010-08-01/resources-1.json +0 -346
  303. data/apis/monitoring/2010-08-01/waiters-2.json +0 -18
  304. data/apis/opsworks/2013-02-18/api-2.json +0 -2606
  305. data/apis/opsworks/2013-02-18/examples-1.json +0 -5
  306. data/apis/opsworks/2013-02-18/paginators-1.json +0 -55
  307. data/apis/opsworks/2013-02-18/resources-1.json +0 -173
  308. data/apis/opsworks/2013-02-18/waiters-2.json +0 -295
  309. data/apis/rds/2014-10-31/api-2.json +0 -4757
  310. data/apis/rds/2014-10-31/examples-1.json +0 -5
  311. data/apis/rds/2014-10-31/paginators-1.json +0 -110
  312. data/apis/rds/2014-10-31/resources-1.json +0 -3272
  313. data/apis/rds/2014-10-31/waiters-2.json +0 -102
  314. data/apis/redshift/2012-12-01/api-2.json +0 -3768
  315. data/apis/redshift/2012-12-01/examples-1.json +0 -5
  316. data/apis/redshift/2012-12-01/paginators-1.json +0 -94
  317. data/apis/redshift/2012-12-01/waiters-2.json +0 -97
  318. data/apis/route53/2013-04-01/api-2.json +0 -3245
  319. data/apis/route53/2013-04-01/examples-1.json +0 -5
  320. data/apis/route53/2013-04-01/paginators-1.json +0 -33
  321. data/apis/route53/2013-04-01/waiters-2.json +0 -18
  322. data/apis/route53domains/2014-05-15/api-2.json +0 -1197
  323. data/apis/route53domains/2014-05-15/paginators-1.json +0 -17
  324. data/apis/s3/2006-03-01/api-2.json +0 -4517
  325. data/apis/s3/2006-03-01/examples-1.json +0 -5
  326. data/apis/s3/2006-03-01/paginators-1.json +0 -66
  327. data/apis/s3/2006-03-01/resources-1.json +0 -1176
  328. data/apis/s3/2006-03-01/waiters-2.json +0 -73
  329. data/apis/sdb/2009-04-15/api-2.json +0 -954
  330. data/apis/sdb/2009-04-15/paginators-1.json +0 -15
  331. data/apis/servicecatalog/2015-12-10/api-2.json +0 -749
  332. data/apis/servicecatalog/2015-12-10/examples-1.json +0 -5
  333. data/apis/sns/2010-03-31/api-2.json +0 -1139
  334. data/apis/sns/2010-03-31/paginators-1.json +0 -29
  335. data/apis/sns/2010-03-31/resources-1.json +0 -327
  336. data/apis/sqs/2012-11-05/api-2.json +0 -950
  337. data/apis/sqs/2012-11-05/examples-1.json +0 -44
  338. data/apis/sqs/2012-11-05/paginators-1.json +0 -7
  339. data/apis/ssm/2014-11-06/api-2.json +0 -1742
  340. data/apis/ssm/2014-11-06/examples-1.json +0 -5
  341. data/apis/ssm/2014-11-06/paginators-1.json +0 -34
  342. data/apis/storagegateway/2013-06-30/api-2.json +0 -2275
  343. data/apis/storagegateway/2013-06-30/examples-1.json +0 -5
  344. data/apis/storagegateway/2013-06-30/paginators-1.json +0 -52
  345. data/apis/streams.dynamodb/2012-08-10/api-2.json +0 -397
  346. data/apis/streams.dynamodb/2012-08-10/examples-1.json +0 -5
  347. data/apis/sts/2011-06-15/api-2.json +0 -521
  348. data/apis/sts/2011-06-15/examples-1.json +0 -5
  349. data/apis/support/2013-04-15/api-2.json +0 -869
  350. data/apis/support/2013-04-15/paginators-1.json +0 -25
  351. data/apis/swf/2012-01-25/api-2.json +0 -2838
  352. data/apis/swf/2012-01-25/paginators-1.json +0 -46
  353. data/apis/waf/2015-08-24/api-2.json +0 -1959
  354. data/apis/waf/2015-08-24/examples-1.json +0 -5
  355. data/apis/workspaces/2015-04-08/api-2.json +0 -632
  356. data/apis/workspaces/2015-04-08/examples-1.json +0 -5
  357. data/apis/workspaces/2015-04-08/paginators-1.json +0 -20
  358. data/bin/aws.rb +0 -180
  359. data/endpoints.json +0 -1460
  360. data/lib/aws-sdk-core/acm.rb +0 -6
  361. data/lib/aws-sdk-core/api/builder.rb +0 -106
  362. data/lib/aws-sdk-core/api/customizations.rb +0 -217
  363. data/lib/aws-sdk-core/api/docs/builder.rb +0 -220
  364. data/lib/aws-sdk-core/api/docs/client_type_documenter.rb +0 -109
  365. data/lib/aws-sdk-core/api/docs/docstring_provider.rb +0 -75
  366. data/lib/aws-sdk-core/api/docs/operation_documenter.rb +0 -138
  367. data/lib/aws-sdk-core/api/docs/param_formatter.rb +0 -163
  368. data/lib/aws-sdk-core/api/docs/request_syntax_example.rb +0 -22
  369. data/lib/aws-sdk-core/api/docs/response_structure_example.rb +0 -91
  370. data/lib/aws-sdk-core/api/docs/shared_example.rb +0 -100
  371. data/lib/aws-sdk-core/api/docs/utils.rb +0 -133
  372. data/lib/aws-sdk-core/api/shape_map.rb +0 -142
  373. data/lib/aws-sdk-core/apigateway.rb +0 -6
  374. data/lib/aws-sdk-core/applicationautoscaling.rb +0 -6
  375. data/lib/aws-sdk-core/applicationdiscoveryservice.rb +0 -5
  376. data/lib/aws-sdk-core/autoscaling.rb +0 -8
  377. data/lib/aws-sdk-core/checksums.rb +0 -51
  378. data/lib/aws-sdk-core/client.rb +0 -67
  379. data/lib/aws-sdk-core/client_waiters.rb +0 -120
  380. data/lib/aws-sdk-core/cloudformation.rb +0 -8
  381. data/lib/aws-sdk-core/cloudfront.rb +0 -15
  382. data/lib/aws-sdk-core/cloudfront/url_signer.rb +0 -167
  383. data/lib/aws-sdk-core/cloudhsm.rb +0 -5
  384. data/lib/aws-sdk-core/cloudsearch.rb +0 -5
  385. data/lib/aws-sdk-core/cloudsearchdomain.rb +0 -5
  386. data/lib/aws-sdk-core/cloudtrail.rb +0 -6
  387. data/lib/aws-sdk-core/cloudwatch.rb +0 -8
  388. data/lib/aws-sdk-core/cloudwatchevents.rb +0 -5
  389. data/lib/aws-sdk-core/cloudwatchlogs.rb +0 -6
  390. data/lib/aws-sdk-core/codecommit.rb +0 -6
  391. data/lib/aws-sdk-core/codedeploy.rb +0 -6
  392. data/lib/aws-sdk-core/codepipeline.rb +0 -5
  393. data/lib/aws-sdk-core/cognitoidentity.rb +0 -5
  394. data/lib/aws-sdk-core/cognitoidentityprovider.rb +0 -5
  395. data/lib/aws-sdk-core/cognitosync.rb +0 -4
  396. data/lib/aws-sdk-core/configservice.rb +0 -6
  397. data/lib/aws-sdk-core/databasemigrationservice.rb +0 -5
  398. data/lib/aws-sdk-core/datapipeline.rb +0 -5
  399. data/lib/aws-sdk-core/devicefarm.rb +0 -6
  400. data/lib/aws-sdk-core/directconnect.rb +0 -6
  401. data/lib/aws-sdk-core/directoryservice.rb +0 -5
  402. data/lib/aws-sdk-core/dynamodb.rb +0 -40
  403. data/lib/aws-sdk-core/dynamodb/attribute_value.rb +0 -108
  404. data/lib/aws-sdk-core/dynamodbstreams.rb +0 -5
  405. data/lib/aws-sdk-core/ec2.rb +0 -8
  406. data/lib/aws-sdk-core/ecr.rb +0 -5
  407. data/lib/aws-sdk-core/ecs.rb +0 -7
  408. data/lib/aws-sdk-core/efs.rb +0 -5
  409. data/lib/aws-sdk-core/elasticache.rb +0 -7
  410. data/lib/aws-sdk-core/elasticbeanstalk.rb +0 -6
  411. data/lib/aws-sdk-core/elasticloadbalancing.rb +0 -6
  412. data/lib/aws-sdk-core/elasticsearchservice.rb +0 -4
  413. data/lib/aws-sdk-core/elastictranscoder.rb +0 -6
  414. data/lib/aws-sdk-core/empty_structure.rb +0 -3
  415. data/lib/aws-sdk-core/emr.rb +0 -7
  416. data/lib/aws-sdk-core/endpoint_provider.rb +0 -95
  417. data/lib/aws-sdk-core/firehose.rb +0 -4
  418. data/lib/aws-sdk-core/gamelift.rb +0 -5
  419. data/lib/aws-sdk-core/glacier.rb +0 -7
  420. data/lib/aws-sdk-core/iam.rb +0 -8
  421. data/lib/aws-sdk-core/importexport.rb +0 -5
  422. data/lib/aws-sdk-core/inspector.rb +0 -5
  423. data/lib/aws-sdk-core/iot.rb +0 -5
  424. data/lib/aws-sdk-core/iotdataplane.rb +0 -4
  425. data/lib/aws-sdk-core/kinesis.rb +0 -7
  426. data/lib/aws-sdk-core/kms.rb +0 -6
  427. data/lib/aws-sdk-core/lambda.rb +0 -6
  428. data/lib/aws-sdk-core/lambdapreview.rb +0 -5
  429. data/lib/aws-sdk-core/machinelearning.rb +0 -6
  430. data/lib/aws-sdk-core/marketplacecommerceanalytics.rb +0 -5
  431. data/lib/aws-sdk-core/marketplacemetering.rb +0 -5
  432. data/lib/aws-sdk-core/opsworks.rb +0 -8
  433. data/lib/aws-sdk-core/partitions.rb +0 -174
  434. data/lib/aws-sdk-core/partitions/partition.rb +0 -95
  435. data/lib/aws-sdk-core/partitions/partition_list.rb +0 -60
  436. data/lib/aws-sdk-core/partitions/region.rb +0 -78
  437. data/lib/aws-sdk-core/partitions/service.rb +0 -84
  438. data/lib/aws-sdk-core/plugins/api_gateway_header.rb +0 -19
  439. data/lib/aws-sdk-core/plugins/csd_conditional_signing.rb +0 -30
  440. data/lib/aws-sdk-core/plugins/dynamodb_crc32_validation.rb +0 -52
  441. data/lib/aws-sdk-core/plugins/dynamodb_extended_retries.rb +0 -22
  442. data/lib/aws-sdk-core/plugins/dynamodb_simple_attributes.rb +0 -209
  443. data/lib/aws-sdk-core/plugins/ec2_copy_encrypted_snapshot.rb +0 -87
  444. data/lib/aws-sdk-core/plugins/ec2_region_validation.rb +0 -17
  445. data/lib/aws-sdk-core/plugins/glacier_account_id.rb +0 -19
  446. data/lib/aws-sdk-core/plugins/glacier_api_version.rb +0 -19
  447. data/lib/aws-sdk-core/plugins/glacier_checksums.rb +0 -87
  448. data/lib/aws-sdk-core/plugins/machine_learning_predict_endpoint.rb +0 -20
  449. data/lib/aws-sdk-core/plugins/request_signer.rb +0 -138
  450. data/lib/aws-sdk-core/plugins/route_53_id_fix.rb +0 -55
  451. data/lib/aws-sdk-core/plugins/s3_accelerate.rb +0 -73
  452. data/lib/aws-sdk-core/plugins/s3_bucket_dns.rb +0 -86
  453. data/lib/aws-sdk-core/plugins/s3_bucket_name_restrictions.rb +0 -21
  454. data/lib/aws-sdk-core/plugins/s3_expect_100_continue.rb +0 -27
  455. data/lib/aws-sdk-core/plugins/s3_get_bucket_location_fix.rb +0 -21
  456. data/lib/aws-sdk-core/plugins/s3_http_200_errors.rb +0 -45
  457. data/lib/aws-sdk-core/plugins/s3_location_constraint.rb +0 -31
  458. data/lib/aws-sdk-core/plugins/s3_md5s.rb +0 -50
  459. data/lib/aws-sdk-core/plugins/s3_redirects.rb +0 -37
  460. data/lib/aws-sdk-core/plugins/s3_request_signer.rb +0 -166
  461. data/lib/aws-sdk-core/plugins/s3_sse_cpk.rb +0 -64
  462. data/lib/aws-sdk-core/plugins/s3_url_encoded_keys.rb +0 -92
  463. data/lib/aws-sdk-core/plugins/sqs_md5s.rb +0 -162
  464. data/lib/aws-sdk-core/plugins/sqs_queue_urls.rb +0 -34
  465. data/lib/aws-sdk-core/plugins/swf_read_timeouts.rb +0 -23
  466. data/lib/aws-sdk-core/rds.rb +0 -8
  467. data/lib/aws-sdk-core/redshift.rb +0 -7
  468. data/lib/aws-sdk-core/route53.rb +0 -7
  469. data/lib/aws-sdk-core/route53domains.rb +0 -5
  470. data/lib/aws-sdk-core/s3.rb +0 -26
  471. data/lib/aws-sdk-core/s3/bucket_region_cache.rb +0 -75
  472. data/lib/aws-sdk-core/s3/presigner.rb +0 -113
  473. data/lib/aws-sdk-core/service.rb +0 -4
  474. data/lib/aws-sdk-core/servicecatalog.rb +0 -5
  475. data/lib/aws-sdk-core/ses.rb +0 -7
  476. data/lib/aws-sdk-core/signers/base.rb +0 -31
  477. data/lib/aws-sdk-core/signers/s3.rb +0 -184
  478. data/lib/aws-sdk-core/signers/v2.rb +0 -51
  479. data/lib/aws-sdk-core/signers/v3.rb +0 -34
  480. data/lib/aws-sdk-core/signers/v4.rb +0 -233
  481. data/lib/aws-sdk-core/simpledb.rb +0 -5
  482. data/lib/aws-sdk-core/sns.rb +0 -6
  483. data/lib/aws-sdk-core/sqs.rb +0 -6
  484. data/lib/aws-sdk-core/ssm.rb +0 -6
  485. data/lib/aws-sdk-core/storagegateway.rb +0 -6
  486. data/lib/aws-sdk-core/sts.rb +0 -5
  487. data/lib/aws-sdk-core/support.rb +0 -5
  488. data/lib/aws-sdk-core/swf.rb +0 -5
  489. data/lib/aws-sdk-core/tree_hash.rb +0 -69
  490. data/lib/aws-sdk-core/version.rb +0 -3
  491. data/lib/aws-sdk-core/waf.rb +0 -5
  492. data/lib/aws-sdk-core/waiters/null_provider.rb +0 -12
  493. data/lib/aws-sdk-core/waiters/provider.rb +0 -35
  494. data/lib/aws-sdk-core/workspaces.rb +0 -6
  495. data/lib/seahorse/client/plugins/restful_bindings.rb +0 -127
  496. data/service-models.json +0 -285
@@ -1,10 +1,8 @@
1
- require 'thread'
2
-
3
1
  module Aws
4
-
5
- # Each Service module has its own Errors module, e.g. {S3::Errors}.
6
2
  module Errors
7
3
 
4
+ class NonSupportedRubyVersionError < RuntimeError; end
5
+
8
6
  # The base class for all errors returned by an Amazon Web Service.
9
7
  # All ~400 level client errors and ~500 level server errors are raised
10
8
  # as service errors. This indicates it was an error returned from the
@@ -13,9 +11,12 @@ module Aws
13
11
 
14
12
  # @param [Seahorse::Client::RequestContext] context
15
13
  # @param [String] message
16
- def initialize(context, message)
14
+ # @param [Aws::Structure] data
15
+ def initialize(context, message, data = Aws::EmptyStructure.new)
17
16
  @code = self.class.code
17
+ @message = message if message && !message.empty?
18
18
  @context = context
19
+ @data = data
19
20
  super(message)
20
21
  end
21
22
 
@@ -26,6 +27,9 @@ module Aws
26
27
  # that triggered the remote service to return this error.
27
28
  attr_reader :context
28
29
 
30
+ # @return [Aws::Structure]
31
+ attr_reader :data
32
+
29
33
  class << self
30
34
 
31
35
  # @return [String]
@@ -34,20 +38,222 @@ module Aws
34
38
  end
35
39
  end
36
40
 
41
+ # Raised when InstanceProfileCredentialsProvider or
42
+ # EcsCredentialsProvider fails to parse the metadata response after retries
43
+ class MetadataParserError < RuntimeError
44
+ def initialize(*args)
45
+ msg = "Failed to parse metadata service response."
46
+ super(msg)
47
+ end
48
+ end
49
+
50
+ # Raised when a `streaming` operation has `requiresLength` trait
51
+ # enabled but request payload size/length cannot be calculated
52
+ class MissingContentLength < RuntimeError
53
+ def initialize(*args)
54
+ msg = 'Required `Content-Length` value missing for the request.'
55
+ super(msg)
56
+ end
57
+ end
58
+
59
+ # Rasied when endpoint discovery failed for operations
60
+ # that requires endpoints from endpoint discovery
61
+ class EndpointDiscoveryError < RuntimeError
62
+ def initialize(*args)
63
+ msg = 'Endpoint discovery failed for the operation or discovered endpoint is not working, '\
64
+ 'request will keep failing until endpoint discovery succeeds or :endpoint option is provided.'
65
+ super(msg)
66
+ end
67
+ end
68
+
69
+ # raised when hostLabel member is not provided
70
+ # at operation input when endpoint trait is available
71
+ # with 'hostPrefix' requirement
72
+ class MissingEndpointHostLabelValue < RuntimeError
73
+
74
+ def initialize(name)
75
+ msg = "Missing required parameter #{name} to construct"\
76
+ " endpoint host prefix. You can disable host prefix by"\
77
+ " setting :disable_host_prefix_injection to `true`."
78
+ super(msg)
79
+ end
80
+
81
+ end
82
+
83
+ # Raised when attempting to #signal an event before
84
+ # making an async request
85
+ class SignalEventError < RuntimeError; end
86
+
87
+ # Raised when EventStream Parser failed to parse
88
+ # a raw event message
89
+ class EventStreamParserError < RuntimeError; end
90
+
91
+ # Raise when EventStream Builder failed to build
92
+ # an event message with parameters provided
93
+ class EventStreamBuilderError < RuntimeError; end
94
+
95
+ # Error event in an event stream which has event_type :error
96
+ # error code and error message can be retrieved when available.
97
+ #
98
+ # example usage:
99
+ #
100
+ # client.stream_foo(name: 'bar') do |event|
101
+ # stream.on_error_event do |event|
102
+ # puts "Error #{event.error_code}: #{event.error_message}"
103
+ # raise event
104
+ # end
105
+ # end
106
+ #
107
+ class EventError < RuntimeError
108
+
109
+ def initialize(event_type, code, message)
110
+ @event_type = event_type
111
+ @error_code = code
112
+ @error_message = message
113
+ end
114
+
115
+ # @return [Symbol]
116
+ attr_reader :event_type
117
+
118
+ # @return [String]
119
+ attr_reader :error_code
120
+
121
+ # @return [String]
122
+ attr_reader :error_message
123
+
124
+ end
125
+
126
+ # Raised when ARN string input doesn't follow the standard:
127
+ # https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-arns
128
+ class InvalidARNError < RuntimeError; end
129
+
130
+ # Raised when the region from the ARN string is different from the :region
131
+ # configured on the service client.
132
+ class InvalidARNRegionError < RuntimeError
133
+ def initialize(*args)
134
+ msg = 'ARN region is different from the configured client region.'
135
+ super(msg)
136
+ end
137
+ end
138
+
139
+ # Raised when the partition of the ARN region is different than the
140
+ # partition of the :region configured on the service client.
141
+ class InvalidARNPartitionError < RuntimeError
142
+ def initialize(*args)
143
+ msg = 'ARN region partition is different from the configured '\
144
+ 'client region partition.'
145
+ super(msg)
146
+ end
147
+ end
148
+
37
149
  # Various plugins perform client-side checksums of responses.
38
150
  # This error indicates a checksum failed.
39
151
  class ChecksumError < RuntimeError; end
40
152
 
41
- # Raised when a {Service} is constructed and the specified shared
153
+ # Raised when a client is constructed and the specified shared
42
154
  # credentials profile does not exist.
43
155
  class NoSuchProfileError < RuntimeError; end
44
156
 
45
- # Raised when a {Service} is constructed and credentials are not
157
+ # Raised when a client is constructed, where Assume Role credentials are
158
+ # expected, and there is no source profile specified.
159
+ class NoSourceProfileError < RuntimeError; end
160
+
161
+ # Raised when a client is constructed with Assume Role credentials using
162
+ # a credential_source, and that source type is unsupported.
163
+ class InvalidCredentialSourceError < RuntimeError; end
164
+
165
+ # Raised when a client is constructed with Assume Role credentials, but
166
+ # the profile has both source_profile and credential_source.
167
+ class CredentialSourceConflictError < RuntimeError; end
168
+
169
+ # Raised when a client is constructed with Assume Role credentials using
170
+ # a credential_source, and that source doesn't provide credentials.
171
+ class NoSourceCredentialsError < RuntimeError; end
172
+
173
+ # Raised when a client is constructed and credentials are not
46
174
  # set, or the set credentials are empty.
47
- class MissingCredentialsError < RuntimeError; end
175
+ class MissingCredentialsError < RuntimeError
176
+ def initialize(*args)
177
+ msg = 'unable to sign request without credentials set'
178
+ super(msg)
179
+ end
180
+ end
181
+
182
+ # Raised when :web_identity_token_file parameter is not
183
+ # provided or the file doesn't exist when initializing
184
+ # AssumeRoleWebIdentityCredentials credential provider
185
+ class MissingWebIdentityTokenFile < RuntimeError
186
+ def initialize(*args)
187
+ msg = 'Missing :web_identity_token_file parameter or'\
188
+ ' invalid file path provided for'\
189
+ ' Aws::AssumeRoleWebIdentityCredentials provider'
190
+ super(msg)
191
+ end
192
+ end
193
+
194
+ # Raised when a credentials provider process returns a JSON
195
+ # payload with either invalid version number or malformed contents
196
+ class InvalidProcessCredentialsPayload < RuntimeError; end
197
+
198
+ # Raised when a client is constructed and region is not specified.
199
+ class MissingRegionError < ArgumentError
200
+ def initialize(*args)
201
+ msg = "missing region; use :region option or "
202
+ msg << "export region name to ENV['AWS_REGION']"
203
+ super(msg)
204
+ end
205
+ end
206
+
207
+ # Raised when attempting to connect to an endpoint and a `SocketError`
208
+ # is received from the HTTP client. This error is typically the result
209
+ # of configuring an invalid `:region`.
210
+ class NoSuchEndpointError < RuntimeError
211
+
212
+ def initialize(options = {})
213
+ @context = options[:context]
214
+ @endpoint = @context.http_request.endpoint
215
+ @original_error = options[:original_error]
216
+ super(<<-MSG)
217
+ Encountered a `SocketError` while attempting to connect to:
48
218
 
49
- # Raised when a {Service} is constructed and region is not specified.
50
- class MissingRegionError < ArgumentError; end
219
+ #{endpoint.to_s}
220
+
221
+ This is typically the result of an invalid `:region` option or a
222
+ poorly formatted `:endpoint` option.
223
+
224
+ * Avoid configuring the `:endpoint` option directly. Endpoints are constructed
225
+ from the `:region`. The `:endpoint` option is reserved for connecting to
226
+ non-standard test endpoints.
227
+
228
+ * Not every service is available in every region.
229
+
230
+ * Never suffix region names with availability zones.
231
+ Use "us-east-1", not "us-east-1a"
232
+
233
+ Known AWS regions include (not specific to this service):
234
+
235
+ #{possible_regions}
236
+ MSG
237
+ end
238
+
239
+ attr_reader :context
240
+
241
+ attr_reader :endpoint
242
+
243
+ attr_reader :original_error
244
+
245
+ private
246
+
247
+ def possible_regions
248
+ Aws.partitions.inject([]) do |region_names, partition|
249
+ partition.regions.each do |region|
250
+ region_names << region.name
251
+ end
252
+ region_names
253
+ end.join("\n")
254
+ end
255
+
256
+ end
51
257
 
52
258
  # This module is mixed into another module, providing dynamic
53
259
  # error classes. Error classes all inherit from {ServiceError}.
@@ -82,7 +288,11 @@ module Aws
82
288
  def error_class(error_code)
83
289
  constant = error_class_constant(error_code)
84
290
  if error_const_set?(constant)
85
- const_get(constant)
291
+ # modeled error class exist
292
+ # set code attribute
293
+ err_class = const_get(constant)
294
+ err_class.code = constant.to_s
295
+ err_class
86
296
  else
87
297
  set_error_constant(constant)
88
298
  end
@@ -0,0 +1,62 @@
1
+ module Aws
2
+ class EventEmitter
3
+
4
+ def initialize
5
+ @listeners = {}
6
+ @validate_event = true
7
+ @status = :sleep
8
+ @signal_queue = Queue.new
9
+ end
10
+
11
+ attr_accessor :stream
12
+
13
+ attr_accessor :encoder
14
+
15
+ attr_accessor :validate_event
16
+
17
+ attr_accessor :signal_queue
18
+
19
+ def on(type, callback)
20
+ (@listeners[type] ||= []) << callback
21
+ end
22
+
23
+ def signal(type, event)
24
+ return unless @listeners[type]
25
+ @listeners[type].each do |listener|
26
+ listener.call(event) if event.event_type == type
27
+ end
28
+ end
29
+
30
+ def emit(type, params)
31
+ unless @stream
32
+ raise Aws::Errors::SignalEventError.new(
33
+ "Singaling events before making async request"\
34
+ " is not allowed."
35
+ )
36
+ end
37
+ if @validate_event && type != :end_stream
38
+ Aws::ParamValidator.validate!(
39
+ @encoder.rules.shape.member(type), params)
40
+ end
41
+ _ready_for_events?
42
+ @stream.data(
43
+ @encoder.encode(type, params),
44
+ end_stream: type == :end_stream
45
+ )
46
+ end
47
+
48
+ private
49
+
50
+ def _ready_for_events?
51
+ return true if @status == :ready
52
+
53
+ # blocked until once initial 200 response is received
54
+ # signal will be available in @signal_queue
55
+ # and this check will no longer be blocked
56
+ @signal_queue.pop
57
+ @status = :ready
58
+ true
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,41 @@
1
+ module Aws
2
+ # @api private
3
+ class IniParser
4
+ class << self
5
+
6
+ def ini_parse(raw)
7
+ current_profile = nil
8
+ current_prefix = nil
9
+ raw.lines.inject({}) do |acc, line|
10
+ line = line.split(/^|\s;/).first # remove comments
11
+ profile = line.match(/^\[([^\[\]]+)\]\s*(#.+)?$/) unless line.nil?
12
+ if profile
13
+ current_profile = profile[1]
14
+ named_profile = current_profile.match(/^profile\s+(.+?)$/)
15
+ current_profile = named_profile[1] if named_profile
16
+ elsif current_profile
17
+ unless line.nil?
18
+ item = line.match(/^(.+?)\s*=\s*(.+?)\s*$/)
19
+ prefix = line.match(/^(.+?)\s*=\s*$/)
20
+ end
21
+ if item && item[1].match(/^\s+/)
22
+ # Need to add lines to a nested configuration.
23
+ inner_item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/)
24
+ acc[current_profile] ||= {}
25
+ acc[current_profile][current_prefix] ||= {}
26
+ acc[current_profile][current_prefix][inner_item[1]] = inner_item[2]
27
+ elsif item
28
+ current_prefix = nil
29
+ acc[current_profile] ||= {}
30
+ acc[current_profile][item[1]] = item[2]
31
+ elsif prefix
32
+ current_prefix = prefix[1]
33
+ end
34
+ end
35
+ acc
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -11,6 +11,12 @@ module Aws
11
11
  # @api private
12
12
  class Non200Response < RuntimeError; end
13
13
 
14
+ # @api private
15
+ class TokenRetrivalError < RuntimeError; end
16
+
17
+ # @api private
18
+ class TokenExpiredError < RuntimeError; end
19
+
14
20
  # These are the errors we trap when attempting to talk to the
15
21
  # instance metadata service. Any of these imply the service
16
22
  # is not present, no responding or some other non-recoverable
@@ -23,16 +29,24 @@ module Aws
23
29
  Errno::ENETUNREACH,
24
30
  SocketError,
25
31
  Timeout::Error,
26
- Non200Response,
27
- ]
32
+ Non200Response
33
+ ].freeze
34
+
35
+ # Path base for GET request for profile and credentials
36
+ # @api private
37
+ METADATA_PATH_BASE = '/latest/meta-data/iam/security-credentials/'.freeze
38
+
39
+ # Path for PUT request for token
40
+ # @api private
41
+ METADATA_TOKEN_PATH = '/latest/api/token'.freeze
28
42
 
29
43
  # @param [Hash] options
30
- # @option options [Integer] :retries (5) Number of times to retry
44
+ # @option options [Integer] :retries (1) Number of times to retry
31
45
  # when retrieving credentials.
32
46
  # @option options [String] :ip_address ('169.254.169.254')
33
47
  # @option options [Integer] :port (80)
34
- # @option options [Float] :http_open_timeout (5)
35
- # @option options [Float] :http_read_timeout (5)
48
+ # @option options [Float] :http_open_timeout (1)
49
+ # @option options [Float] :http_read_timeout (1)
36
50
  # @option options [Numeric, Proc] :delay By default, failures are retried
37
51
  # with exponential back-off, i.e. `sleep(1.2 ** num_failures)`. You can
38
52
  # pass a number of seconds to sleep between failed attempts, or
@@ -40,19 +54,25 @@ module Aws
40
54
  # @option options [IO] :http_debug_output (nil) HTTP wire
41
55
  # traces are sent to this object. You can specify something
42
56
  # like $stdout.
43
- def initialize options = {}
44
- @retries = options[:retries] || 5
57
+ # @option options [Integer] :token_ttl Time-to-Live in seconds for EC2
58
+ # Metadata Token used for fetching Metadata Profile Credentials, defaults
59
+ # to 21600 seconds
60
+ def initialize(options = {})
61
+ @retries = options[:retries] || 1
45
62
  @ip_address = options[:ip_address] || '169.254.169.254'
46
63
  @port = options[:port] || 80
47
- @http_open_timeout = options[:http_open_timeout] || 5
48
- @http_read_timeout = options[:http_read_timeout] || 5
64
+ @http_open_timeout = options[:http_open_timeout] || 1
65
+ @http_read_timeout = options[:http_read_timeout] || 1
49
66
  @http_debug_output = options[:http_debug_output]
50
67
  @backoff = backoff(options[:backoff])
68
+ @token_ttl = options[:token_ttl] || 21_600
69
+ @token = nil
51
70
  super
52
71
  end
53
72
 
54
- # @return [Integer] The number of times to retry failed atttempts to
55
- # fetch credentials from the instance metadata service. Defaults to 0.
73
+ # @return [Integer] Number of times to retry when retrieving credentials
74
+ # from the instance metadata service. Defaults to 0 when resolving from
75
+ # the default credential chain ({Aws::CredentialProviderChain}).
56
76
  attr_reader :retries
57
77
 
58
78
  private
@@ -60,8 +80,8 @@ module Aws
60
80
  def backoff(backoff)
61
81
  case backoff
62
82
  when Proc then backoff
63
- when Numeric then lambda { |_| sleep(backoff) }
64
- else lambda { |num_failures| Kernel.sleep(1.2 ** num_failures) }
83
+ when Numeric then ->(_) { sleep(backoff) }
84
+ else ->(num_failures) { Kernel.sleep(1.2**num_failures) }
65
85
  end
66
86
  end
67
87
 
@@ -69,33 +89,67 @@ module Aws
69
89
  # Retry loading credentials up to 3 times is the instance metadata
70
90
  # service is responding but is returning invalid JSON documents
71
91
  # in response to the GET profile credentials call.
72
- retry_errors([JSON::ParserError, StandardError], max_retries: 3) do
73
- c = JSON.parse(get_credentials.to_s)
74
- @credentials = Credentials.new(
75
- c['AccessKeyId'],
76
- c['SecretAccessKey'],
77
- c['Token']
78
- )
79
- @expiration = c['Expiration'] ? Time.parse(c['Expiration']) : nil
92
+ begin
93
+ retry_errors([JSON::ParserError, StandardError], max_retries: 3) do
94
+ c = JSON.parse(get_credentials.to_s)
95
+ @credentials = Credentials.new(
96
+ c['AccessKeyId'],
97
+ c['SecretAccessKey'],
98
+ c['Token']
99
+ )
100
+ @expiration = c['Expiration'] ? Time.iso8601(c['Expiration']) : nil
101
+ end
102
+ rescue JSON::ParserError
103
+ raise Aws::Errors::MetadataParserError
80
104
  end
81
105
  end
82
106
 
83
107
  def get_credentials
84
108
  # Retry loading credentials a configurable number of times if
85
109
  # the instance metadata service is not responding.
86
- begin
87
- retry_errors(NETWORK_ERRORS, max_retries: @retries) do
88
- open_connection do |conn|
89
- path = '/latest/meta-data/iam/security-credentials/'
90
- profile_name = http_get(conn, path).lines.first.strip
91
- http_get(conn, path + profile_name)
110
+ if _metadata_disabled?
111
+ '{}'
112
+ else
113
+ begin
114
+ retry_errors(NETWORK_ERRORS, max_retries: @retries) do
115
+ open_connection do |conn|
116
+ # attempt to fetch token to start secure flow first
117
+ # and rescue to failover
118
+ begin
119
+ retry_errors(NETWORK_ERRORS, max_retries: @retries) do
120
+ unless token_set?
121
+ token_value, ttl = http_put(
122
+ conn, METADATA_TOKEN_PATH, @token_ttl
123
+ )
124
+ @token = Token.new(token_value, ttl) if token_value && ttl
125
+ end
126
+ end
127
+ rescue *NETWORK_ERRORS
128
+ # token attempt failed, reset token
129
+ # fallback to non-token mode
130
+ @token = nil
131
+ end
132
+
133
+ token = @token.value if token_set?
134
+ metadata = http_get(conn, METADATA_PATH_BASE, token)
135
+ profile_name = metadata.lines.first.strip
136
+ http_get(conn, METADATA_PATH_BASE + profile_name, token)
137
+ end
92
138
  end
139
+ rescue
140
+ '{}'
93
141
  end
94
- rescue
95
- '{}'
96
142
  end
97
143
  end
98
144
 
145
+ def token_set?
146
+ @token && !@token.expired?
147
+ end
148
+
149
+ def _metadata_disabled?
150
+ ENV.fetch('AWS_EC2_METADATA_DISABLED', 'false').downcase == 'true'
151
+ end
152
+
99
153
  def open_connection
100
154
  http = Net::HTTP.new(@ip_address, @port, nil)
101
155
  http.open_timeout = @http_open_timeout
@@ -105,30 +159,67 @@ module Aws
105
159
  yield(http).tap { http.finish }
106
160
  end
107
161
 
108
- def http_get(connection, path)
109
- response = connection.request(Net::HTTP::Get.new(path))
110
- if response.code.to_i == 200
111
- response.body
162
+ # GET request fetch profile and credentials
163
+ def http_get(connection, path, token = nil)
164
+ headers = { 'User-Agent' => "aws-sdk-ruby3/#{CORE_GEM_VERSION}" }
165
+ headers['x-aws-ec2-metadata-token'] = token if token
166
+ response = connection.request(Net::HTTP::Get.new(path, headers))
167
+ raise Non200Response unless response.code.to_i == 200
168
+
169
+ response.body
170
+ end
171
+
172
+ # PUT request fetch token with ttl
173
+ def http_put(connection, path, ttl)
174
+ headers = {
175
+ 'User-Agent' => "aws-sdk-ruby3/#{CORE_GEM_VERSION}",
176
+ 'x-aws-ec2-metadata-token-ttl-seconds' => ttl.to_s
177
+ }
178
+ response = connection.request(Net::HTTP::Put.new(path, headers))
179
+ case response.code.to_i
180
+ when 200
181
+ [
182
+ response.body,
183
+ response.header['x-aws-ec2-metadata-token-ttl-seconds'].to_i
184
+ ]
185
+ when 400
186
+ raise TokenRetrivalError
187
+ when 401
188
+ raise TokenExpiredError
112
189
  else
113
190
  raise Non200Response
114
191
  end
115
192
  end
116
193
 
117
- def retry_errors(error_classes, options = {}, &block)
194
+ def retry_errors(error_classes, options = {}, &_block)
118
195
  max_retries = options[:max_retries]
119
196
  retries = 0
120
197
  begin
121
198
  yield
122
- rescue *error_classes => error
123
- if retries < max_retries
124
- @backoff.call(retries)
125
- retries += 1
126
- retry
127
- else
128
- raise
129
- end
199
+ rescue *error_classes
200
+ raise unless retries < max_retries
201
+
202
+ @backoff.call(retries)
203
+ retries += 1
204
+ retry
130
205
  end
131
206
  end
132
207
 
208
+ # @api private
209
+ # Token used to fetch IMDS profile and credentials
210
+ class Token
211
+ def initialize(value, ttl)
212
+ @ttl = ttl
213
+ @value = value
214
+ @created_time = Time.now
215
+ end
216
+
217
+ # [String] token value
218
+ attr_reader :value
219
+
220
+ def expired?
221
+ Time.now - @created_time > @ttl
222
+ end
223
+ end
133
224
  end
134
225
  end