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,113 +0,0 @@
1
- module Aws
2
- module S3
3
-
4
- # Allows you to create presigned URLs for S3 operations.
5
- #
6
- # Example Use:
7
- #
8
- # signer = Aws::S3::Presigner.new
9
- # url = signer.presigned_url(:get_object, bucket: "bucket", key: "key")
10
- #
11
- class Presigner
12
-
13
- # @api private
14
- ONE_WEEK = 60 * 60 * 24 * 7
15
-
16
- # @api private
17
- FIFTEEN_MINUTES = 60 * 15
18
-
19
- # @option options [Client] :client Optionally provide an existing
20
- # S3 client
21
- def initialize(options = {})
22
- @client = options[:client] || Aws::S3::Client.new
23
- end
24
-
25
- # @param [Symbol] method Symbolized method name of the operation you want
26
- # to presign.
27
- #
28
- # @option params [Integer] :expires_in (900) The number of seconds
29
- # before the presigned URL expires. Defaults to 15 minutes.
30
- #
31
- # @option params [Boolean] :secure (true) When `false`, a HTTP URL
32
- # is returned instead of the default HTTPS URL.
33
- #
34
- # @option params [Boolean] :virtual_host (false) When `true`, the
35
- # bucket name will be used as the hostname. This will cause
36
- # the returned URL to be 'http' and not 'https'.
37
- #
38
- # @raise [ArgumentError] Raises an ArgumentError if `:expires_in`
39
- # exceeds one week.
40
- #
41
- def presigned_url(method, params = {})
42
- if params[:key].nil? or params[:key] == ''
43
- raise ArgumentError, ":key must not be blank"
44
- end
45
- virtual_host = !!params.delete(:virtual_host)
46
- scheme = http_scheme(params, virtual_host)
47
-
48
- req = @client.build_request(method, params)
49
- use_bucket_as_hostname(req) if virtual_host
50
- sign_but_dont_send(req, expires_in(params), scheme)
51
- req.send_request.data
52
- end
53
-
54
- private
55
-
56
- def http_scheme(params, virtual_host)
57
- if params.delete(:secure) == false || virtual_host
58
- 'http'
59
- else
60
- @client.config.endpoint.scheme
61
- end
62
- end
63
-
64
- def expires_in(params)
65
- if expires_in = params.delete(:expires_in)
66
- if expires_in > ONE_WEEK
67
- msg = "expires_in value of #{expires_in} exceeds one-week maximum"
68
- raise ArgumentError, msg
69
- end
70
- expires_in
71
- else
72
- FIFTEEN_MINUTES
73
- end
74
- end
75
-
76
- def use_bucket_as_hostname(req)
77
- req.handlers.remove(Plugins::S3BucketDns::Handler)
78
- req.handle do |context|
79
- uri = context.http_request.endpoint
80
- uri.host = context.params[:bucket]
81
- uri.path.sub!("/#{context.params[:bucket]}", '')
82
- uri.scheme = 'http'
83
- uri.port = 80
84
- @handler.call(context)
85
- end
86
- end
87
-
88
- def sign_but_dont_send(req, expires_in, scheme)
89
- req.handlers.remove(Plugins::S3RequestSigner::SigningHandler)
90
- req.handlers.remove(Seahorse::Client::Plugins::ContentLength::Handler)
91
- req.handle(step: :send) do |context|
92
- if scheme != context.http_request.endpoint.scheme
93
- endpoint = context.http_request.endpoint.dup
94
- endpoint.scheme = scheme
95
- endpoint.port = (scheme == 'http' ? 80 : 443)
96
- context.http_request.endpoint = URI.parse(endpoint.to_s)
97
- end
98
- signer = Signers::V4.new(
99
- context.config.credentials, 's3',
100
- context.config.region
101
- )
102
- url = signer.presigned_url(
103
- context.http_request,
104
- expires_in: expires_in,
105
- body_digest: "UNSIGNED-PAYLOAD"
106
- )
107
- Seahorse::Client::Response.new(context: context, data: url)
108
- end
109
- end
110
-
111
- end
112
- end
113
- end
@@ -1,4 +0,0 @@
1
- module Aws
2
- module Service
3
- end
4
- end
@@ -1,5 +0,0 @@
1
- Aws.add_service(:ServiceCatalog, {
2
- api: "#{Aws::API_DIR}/servicecatalog/2015-12-10/api-2.json",
3
- docs: "#{Aws::API_DIR}/servicecatalog/2015-12-10/docs-2.json",
4
- examples: "#{Aws::API_DIR}/servicecatalog/2015-12-10/examples-1.json",
5
- })
@@ -1,7 +0,0 @@
1
- Aws.add_service(:SES, {
2
- api: "#{Aws::API_DIR}/email/2010-12-01/api-2.json",
3
- docs: "#{Aws::API_DIR}/email/2010-12-01/docs-2.json",
4
- examples: "#{Aws::API_DIR}/email/2010-12-01/examples-1.json",
5
- paginators: "#{Aws::API_DIR}/email/2010-12-01/paginators-1.json",
6
- waiters: "#{Aws::API_DIR}/email/2010-12-01/waiters-2.json",
7
- })
@@ -1,31 +0,0 @@
1
- require 'openssl'
2
-
3
- module Aws
4
- module Signers
5
- class Base
6
-
7
- # @param [Credentials] credentials
8
- def initialize(credentials)
9
- @credentials = credentials.credentials
10
- end
11
-
12
- private
13
-
14
- def sha256_hmac(value)
15
- Base64.encode64(
16
- OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'),
17
- @credentials.secret_access_key, value)
18
- ).strip
19
- end
20
-
21
- class << self
22
-
23
- # @param [Seahorse::Client::RequestContext] context
24
- def sign(context)
25
- new(context.config.credentials).sign(context.http_request)
26
- end
27
-
28
- end
29
- end
30
- end
31
- end
@@ -1,184 +0,0 @@
1
- require 'set'
2
- require 'time'
3
- require 'openssl'
4
- require 'webrick/httputils'
5
-
6
- module Aws
7
- module Signers
8
- class S3
9
-
10
- SIGNED_QUERYSTRING_PARAMS = Set.new(%w(
11
-
12
- acl delete cors lifecycle location logging notification partNumber
13
- policy requestPayment restore tagging torrent uploadId uploads
14
- versionId versioning versions website replication requestPayment
15
- accelerate
16
-
17
- response-content-type response-content-language
18
- response-expires response-cache-control
19
- response-content-disposition response-content-encoding
20
-
21
- ))
22
-
23
- def self.sign(context)
24
- new(
25
- context.config.credentials,
26
- context.params,
27
- context.config.force_path_style
28
- ).sign(context.http_request)
29
- end
30
-
31
- # @param [CredentialProvider] credentials
32
- def initialize(credentials, params, force_path_style)
33
- @credentials = credentials.credentials
34
- @params = Query::ParamList.new
35
- params.each_pair do |param_name, param_value|
36
- @params.set(param_name, param_value)
37
- end
38
- @force_path_style = force_path_style
39
- end
40
-
41
- attr_reader :credentials, :params
42
-
43
- def sign(request)
44
- if token = credentials.session_token
45
- request.headers["X-Amz-Security-Token"] = token
46
- end
47
- request.headers['Authorization'] = authorization(request)
48
- end
49
-
50
- def authorization(request)
51
- "AWS #{credentials.access_key_id}:#{signature(request)}"
52
- end
53
-
54
- def signature(request)
55
- string_to_sign = string_to_sign(request)
56
- signature = digest(credentials.secret_access_key, string_to_sign)
57
- uri_escape(signature)
58
- end
59
-
60
- def digest(secret, string_to_sign)
61
- Base64.encode64(hmac(secret, string_to_sign)).strip
62
- end
63
-
64
- def hmac(key, value)
65
- OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), key, value)
66
- end
67
-
68
- # From the S3 developer guide:
69
- #
70
- # StringToSign =
71
- # HTTP-Verb ` "\n" `
72
- # content-md5 ` "\n" `
73
- # content-type ` "\n" `
74
- # date ` "\n" `
75
- # CanonicalizedAmzHeaders + CanonicalizedResource;
76
- #
77
- def string_to_sign(request)
78
- [
79
- request.http_method,
80
- request.headers.values_at('Content-Md5', 'Content-Type').join("\n"),
81
- signing_string_date(request),
82
- canonicalized_headers(request),
83
- canonicalized_resource(request.endpoint),
84
- ].flatten.compact.join("\n")
85
- end
86
-
87
- def signing_string_date(request)
88
- # if a date is provided via x-amz-date then we should omit the
89
- # Date header from the signing string (should appear as a blank line)
90
- if request.headers.detect{|k,v| k.to_s =~ /^x-amz-date$/i }
91
- ''
92
- else
93
- request.headers['Date'] = Time.now.httpdate
94
- end
95
- end
96
-
97
- # CanonicalizedAmzHeaders
98
- #
99
- # See the developer guide for more information on how this element
100
- # is generated.
101
- #
102
- def canonicalized_headers(request)
103
- x_amz = request.headers.select{|k, v| k =~ /^x-amz-/i }
104
- x_amz = x_amz.collect{|k, v| [k.downcase, v] }
105
- x_amz = x_amz.sort_by{|k, v| k }
106
- x_amz = x_amz.collect{|k, v| "#{k}:#{v.to_s.strip}" }.join("\n")
107
- x_amz == '' ? nil : x_amz
108
- end
109
-
110
- # From the S3 developer guide
111
- #
112
- # CanonicalizedResource =
113
- # [ "/" ` Bucket ] `
114
- # <HTTP-Request-URI, protocol name up to the querystring> +
115
- # [ sub-resource, if present. e.g. "?acl", "?location",
116
- # "?logging", or "?torrent"];
117
- #
118
- # @api private
119
- def canonicalized_resource(endpoint)
120
-
121
- parts = []
122
-
123
- # virtual hosted-style requests require the hostname to appear
124
- # in the canonicalized resource prefixed by a forward slash.
125
- if bucket = params[:bucket]
126
- bucket = bucket.value
127
- ssl = endpoint.scheme == 'https'
128
- if Plugins::S3BucketDns.dns_compatible?(bucket, ssl) && !@force_path_style
129
- parts << "/#{bucket}"
130
- end
131
- end
132
-
133
- # append the path name (no querystring)
134
- parts << endpoint.path
135
-
136
- # lastly any sub resource querystring params need to be appened
137
- # in lexigraphical ordered joined by '&' and prefixed by '?'
138
- params = signed_querystring_params(endpoint)
139
-
140
- unless params.empty?
141
- parts << '?'
142
- parts << params.sort.collect{|p| p.to_s }.join('&')
143
- end
144
-
145
- parts.join
146
- end
147
-
148
- def signed_querystring_params(endpoint)
149
- endpoint.query.to_s.split('&').select do |p|
150
- SIGNED_QUERYSTRING_PARAMS.include?(p.split('=')[0])
151
- end.map { |p| CGI.unescape(p) }
152
- end
153
-
154
- def uri_escape(s)
155
-
156
- #URI.escape(s)
157
-
158
- # URI.escape is deprecated, replacing it with escape from webrick
159
- # to squelch the massive number of warnings generated from Ruby.
160
- # The following script was used to determine the differences
161
- # between the various escape methods available. The webrick
162
- # escape only had two differences and it is available in the
163
- # standard lib.
164
- #
165
- # (0..255).each {|c|
166
- # s = [c].pack("C")
167
- # e = [
168
- # CGI.escape(s),
169
- # ERB::Util.url_encode(s),
170
- # URI.encode_www_form_component(s),
171
- # WEBrick::HTTPUtils.escape_form(s),
172
- # WEBrick::HTTPUtils.escape(s),
173
- # URI.escape(s),
174
- # ]
175
- # next if e.uniq.length == 1
176
- # puts("%5s %5s %5s %5s %5s %5s %5s" % ([s.inspect] + e))
177
- # }
178
- #
179
- WEBrick::HTTPUtils.escape(s).gsub('%5B', '[').gsub('%5D', ']')
180
- end
181
-
182
- end
183
- end
184
- end
@@ -1,51 +0,0 @@
1
- module Aws
2
- module Signers
3
- class V2 < Base
4
-
5
- # @param [Http::Request] http_request
6
- def sign(http_request)
7
- params = http_request.body.param_list
8
- params.set('AWSAccessKeyId', @credentials.access_key_id)
9
- params.set('SecurityToken', @credentials.session_token) if
10
- @credentials.session_token
11
- params.set('Timestamp', Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ'))
12
- params.set('SignatureVersion', '2')
13
- params.set('SignatureMethod', 'HmacSHA256')
14
- params.delete('Signature')
15
- params.set('Signature', signature(http_request, params))
16
- http_request.body = params.to_io
17
- end
18
-
19
- private
20
-
21
- def signature(http_request, params)
22
- sha256_hmac(string_to_sign(http_request, params))
23
- end
24
-
25
- def string_to_sign(http_request, params)
26
- [
27
- http_request.http_method,
28
- host(http_request.endpoint),
29
- path(http_request.endpoint),
30
- params.to_s,
31
- ].join("\n")
32
- end
33
-
34
- def host(endpoint)
35
- host = endpoint.host.downcase
36
- if
37
- (endpoint.scheme == 'http' && endpoint.port != 80) ||
38
- (endpoint.scheme == 'https' && endpoint.port != 443)
39
- then
40
- host += ":#{endpoint.port}"
41
- end
42
- host
43
- end
44
-
45
- def path(endpoint)
46
- endpoint.path == '' ? '/' : endpoint.path
47
- end
48
-
49
- end
50
- end
51
- end
@@ -1,34 +0,0 @@
1
- require 'time'
2
- require 'base64'
3
- require 'openssl'
4
-
5
- module Aws
6
- # @api private
7
- module Signers
8
- class V3 < Base
9
-
10
- def sign(http_req)
11
-
12
- date = Time.now.httpdate
13
- http_req.headers['Date'] = date
14
-
15
- if @credentials.session_token
16
- http_req.headers['X-Amz-Security-Token'] = @credentials.session_token
17
- end
18
-
19
- parts = []
20
- parts << "AWS3-HTTPS AWSAccessKeyId=#{@credentials.access_key_id}"
21
- parts << "Algorithm=HmacSHA256"
22
- parts << "Signature=#{signature(date)}"
23
- http_req.headers['X-Amzn-Authorization'] = parts.join(',')
24
- end
25
-
26
- private
27
-
28
- def signature(date)
29
- sha256_hmac(date)
30
- end
31
-
32
- end
33
- end
34
- end
@@ -1,233 +0,0 @@
1
- require 'time'
2
- require 'openssl'
3
-
4
- module Aws
5
- module Signers
6
- class V4
7
-
8
- BLACKLIST_HEADERS = [
9
- 'cache-control',
10
- 'content-length',
11
- 'expect',
12
- 'max-forwards',
13
- 'pragma',
14
- 'te',
15
- 'if-match',
16
- 'if-none-match',
17
- 'if-modified-since',
18
- 'if-unmodified-since',
19
- 'if-range',
20
- 'accept',
21
- 'authorization',
22
- 'proxy-authorization',
23
- 'from',
24
- 'referer',
25
- 'user-agent'
26
- ]
27
-
28
- def self.sign(context)
29
- new(
30
- context.config.credentials,
31
- context.config.sigv4_name,
32
- context.config.sigv4_region
33
- ).sign(context.http_request)
34
- end
35
-
36
- # @param [Credentials] credentials
37
- # @param [String] service_name The name used by the service in
38
- # signing signature version 4 requests. This is generally
39
- # the endpoint prefix.
40
- # @param [String] region The region (e.g. 'us-west-1') the request
41
- # will be made to.
42
- def initialize(credentials, service_name, region)
43
- @service_name = service_name
44
- @credentials = credentials.credentials
45
- @region = EndpointProvider.signing_region(region, service_name)
46
- end
47
-
48
- # @param [Seahorse::Client::Http::Request] req
49
- # @return [Seahorse::Client::Http::Request] the signed request.
50
- def sign(req)
51
- datetime = Time.now.utc.strftime("%Y%m%dT%H%M%SZ")
52
- body_digest = req.headers['X-Amz-Content-Sha256'] || hexdigest(req.body)
53
- req.headers['X-Amz-Date'] = datetime
54
- req.headers['Host'] = host(req.endpoint)
55
- req.headers['X-Amz-Security-Token'] = @credentials.session_token if
56
- @credentials.session_token
57
- req.headers['X-Amz-Content-Sha256'] ||= body_digest
58
- req.headers['Authorization'] = authorization(req, datetime, body_digest)
59
- req
60
- end
61
-
62
- # Generates an returns a presigned URL.
63
- # @param [Seahorse::Client::Http::Request] request
64
- # @option options [required, Integer<Seconds>] :expires_in
65
- # @option options [optional, String] :body_digest The SHA256 hexdigest of
66
- # the payload to sign. For S3, this should be the string literal
67
- # `UNSIGNED-PAYLOAD`.
68
- # @return [String]
69
- # @api private
70
- def presigned_url(request, options = {})
71
- now = Time.now.utc.strftime("%Y%m%dT%H%M%SZ")
72
- body_digest = options[:body_digest] || hexdigest(request.body)
73
-
74
- request.headers['Host'] = host(request.endpoint)
75
- request.headers.delete('User-Agent')
76
-
77
- params = Aws::Query::ParamList.new
78
-
79
- request.headers.keys.each do |key|
80
- if key.match(/^x-amz/i)
81
- params.set(key, request.headers.delete(key))
82
- end
83
- end
84
-
85
- params.set("X-Amz-Algorithm", "AWS4-HMAC-SHA256")
86
- params.set("X-Amz-Credential", credential(now))
87
- params.set("X-Amz-Date", now)
88
- params.set("X-Amz-Expires", options[:expires_in].to_s)
89
- params.set("X-Amz-SignedHeaders", signed_headers(request))
90
- params.set('X-Amz-Security-Token', @credentials.session_token) if
91
- @credentials.session_token
92
-
93
- endpoint = request.endpoint
94
- if endpoint.query
95
- endpoint.query += '&' + params.to_s
96
- else
97
- endpoint.query = params.to_s
98
- end
99
- endpoint.to_s + '&X-Amz-Signature=' + signature(request, now, body_digest)
100
- end
101
-
102
- def authorization(request, datetime, body_digest)
103
- parts = []
104
- parts << "AWS4-HMAC-SHA256 Credential=#{credential(datetime)}"
105
- parts << "SignedHeaders=#{signed_headers(request)}"
106
- parts << "Signature=#{signature(request, datetime, body_digest)}"
107
- parts.join(', ')
108
- end
109
-
110
- def credential(datetime)
111
- "#{@credentials.access_key_id}/#{credential_scope(datetime)}"
112
- end
113
-
114
- def signature(request, datetime, body_digest)
115
- k_secret = @credentials.secret_access_key
116
- k_date = hmac("AWS4" + k_secret, datetime[0,8])
117
- k_region = hmac(k_date, @region)
118
- k_service = hmac(k_region, @service_name)
119
- k_credentials = hmac(k_service, 'aws4_request')
120
- hexhmac(k_credentials, string_to_sign(request, datetime, body_digest))
121
- end
122
-
123
- def string_to_sign(request, datetime, body_digest)
124
- parts = []
125
- parts << 'AWS4-HMAC-SHA256'
126
- parts << datetime
127
- parts << credential_scope(datetime)
128
- parts << hexdigest(canonical_request(request, body_digest))
129
- parts.join("\n")
130
- end
131
-
132
- def credential_scope(datetime)
133
- parts = []
134
- parts << datetime[0,8]
135
- parts << @region
136
- parts << @service_name
137
- parts << 'aws4_request'
138
- parts.join("/")
139
- end
140
-
141
- def canonical_request(request, body_digest)
142
- [
143
- request.http_method,
144
- path(request.endpoint),
145
- normalized_querystring(request.endpoint.query || ''),
146
- canonical_headers(request) + "\n",
147
- signed_headers(request),
148
- body_digest
149
- ].join("\n")
150
- end
151
-
152
- def path(uri)
153
- path = uri.path == '' ? '/' : uri.path
154
- if @service_name == 's3'
155
- path
156
- else
157
- Seahorse::Util.uri_path_escape(path)
158
- end
159
- end
160
-
161
- def normalized_querystring(querystring)
162
- params = querystring.split('&')
163
- params = params.map { |p| p.match(/=/) ? p : p + '=' }
164
- # We have to sort by param name and preserve order of params that
165
- # have the same name. Default sort <=> in JRuby will swap members
166
- # occasionally when <=> is 0 (considered still sorted), but this
167
- # causes our normalized query string to not match the sent querystring.
168
- # When names match, we then sort by their original order
169
- params = params.each.with_index.sort do |a, b|
170
- a, a_offset = a
171
- a_name = a.split('=')[0]
172
- b, b_offset = b
173
- b_name = b.split('=')[0]
174
- if a_name == b_name
175
- a_offset <=> b_offset
176
- else
177
- a_name <=> b_name
178
- end
179
- end.map(&:first).join('&')
180
- end
181
-
182
- def signed_headers(request)
183
- request.headers.keys.inject([]) do |signed_headers, header_key|
184
- header_key = header_key.downcase
185
- unless BLACKLIST_HEADERS.include?(header_key)
186
- signed_headers << header_key
187
- end
188
- signed_headers
189
- end.sort.join(';')
190
- end
191
-
192
- def canonical_headers(request)
193
- headers = []
194
- request.headers.each_pair do |k,v|
195
- k = k.downcase
196
- headers << [k,v] unless BLACKLIST_HEADERS.include?(k)
197
- end
198
- headers = headers.sort_by(&:first)
199
- headers.map{|k,v| "#{k}:#{canonical_header_value(v.to_s)}" }.join("\n")
200
- end
201
-
202
- def canonical_header_value(value)
203
- value.match(/^".*"$/) ? value : value.gsub(/\s+/, ' ').strip
204
- end
205
-
206
- def host(uri)
207
- if standard_port?(uri)
208
- uri.host
209
- else
210
- "#{uri.host}:#{uri.port}"
211
- end
212
- end
213
-
214
- def standard_port?(uri)
215
- (uri.scheme == 'http' && uri.port == 80) ||
216
- (uri.scheme == 'https' && uri.port == 443)
217
- end
218
-
219
- def hexdigest(value)
220
- Aws::Checksums.sha256_hexdigest(value)
221
- end
222
-
223
- def hmac(key, value)
224
- OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), key, value)
225
- end
226
-
227
- def hexhmac(key, value)
228
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, value)
229
- end
230
-
231
- end
232
- end
233
- end