aws-sdk-core 2.4.0 → 3.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -0
  3. data/ca-bundle.crt +3615 -3541
  4. data/lib/aws-sdk-core.rb +96 -408
  5. data/lib/aws-sdk-core/async_client_stubs.rb +80 -0
  6. data/lib/aws-sdk-core/binary.rb +6 -0
  7. data/lib/aws-sdk-core/binary/decode_handler.rb +56 -0
  8. data/lib/aws-sdk-core/binary/encode_handler.rb +32 -0
  9. data/lib/aws-sdk-core/binary/event_builder.rb +122 -0
  10. data/lib/aws-sdk-core/binary/event_parser.rb +134 -0
  11. data/lib/aws-sdk-core/binary/event_stream_decoder.rb +62 -0
  12. data/lib/aws-sdk-core/binary/event_stream_encoder.rb +53 -0
  13. data/lib/aws-sdk-core/client_side_monitoring/publisher.rb +41 -0
  14. data/lib/aws-sdk-core/client_side_monitoring/request_metrics.rb +197 -0
  15. data/lib/aws-sdk-core/client_stubs.rb +73 -10
  16. data/lib/aws-sdk-core/credential_provider.rb +2 -0
  17. data/lib/aws-sdk-core/credential_provider_chain.rb +22 -5
  18. data/lib/aws-sdk-core/ecs_credentials.rb +3 -3
  19. data/lib/aws-sdk-core/endpoint_cache.rb +188 -0
  20. data/lib/aws-sdk-core/errors.rb +174 -10
  21. data/lib/aws-sdk-core/event_emitter.rb +62 -0
  22. data/lib/aws-sdk-core/ini_parser.rb +1 -0
  23. data/lib/aws-sdk-core/instance_profile_credentials.rb +21 -12
  24. data/lib/aws-sdk-core/json.rb +4 -5
  25. data/lib/aws-sdk-core/json/builder.rb +4 -2
  26. data/lib/aws-sdk-core/json/error_handler.rb +19 -2
  27. data/lib/aws-sdk-core/json/handler.rb +22 -3
  28. data/lib/aws-sdk-core/json/parser.rb +1 -1
  29. data/lib/aws-sdk-core/log/param_filter.rb +4 -3
  30. data/lib/aws-sdk-core/pageable_response.rb +1 -0
  31. data/lib/aws-sdk-core/pager.rb +30 -25
  32. data/lib/aws-sdk-core/param_converter.rb +3 -3
  33. data/lib/aws-sdk-core/param_validator.rb +56 -21
  34. data/lib/aws-sdk-core/plugins/api_key.rb +52 -0
  35. data/lib/aws-sdk-core/plugins/apig_authorizer_token.rb +30 -0
  36. data/lib/aws-sdk-core/plugins/apig_credentials_configuration.rb +34 -0
  37. data/lib/aws-sdk-core/plugins/apig_user_agent.rb +37 -0
  38. data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +256 -0
  39. data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +84 -0
  40. data/lib/aws-sdk-core/plugins/credentials_configuration.rb +62 -0
  41. data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +160 -0
  42. data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +63 -0
  43. data/lib/aws-sdk-core/plugins/event_stream_configuration.rb +30 -0
  44. data/lib/aws-sdk-core/plugins/global_configuration.rb +19 -10
  45. data/lib/aws-sdk-core/plugins/helpful_socket_errors.rb +41 -0
  46. data/lib/aws-sdk-core/plugins/idempotency_token.rb +36 -0
  47. data/lib/aws-sdk-core/plugins/invocation_id.rb +33 -0
  48. data/lib/aws-sdk-core/plugins/jsonvalue_converter.rb +29 -0
  49. data/lib/aws-sdk-core/plugins/logging.rb +18 -18
  50. data/lib/aws-sdk-core/plugins/param_converter.rb +9 -5
  51. data/lib/aws-sdk-core/plugins/param_validator.rb +8 -5
  52. data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +10 -0
  53. data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -1
  54. data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +13 -12
  55. data/lib/aws-sdk-core/plugins/protocols/query.rb +2 -2
  56. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +28 -16
  57. data/lib/aws-sdk-core/plugins/response_paging.rb +5 -18
  58. data/lib/aws-sdk-core/plugins/retry_errors.rb +97 -23
  59. data/lib/aws-sdk-core/plugins/signature_v2.rb +51 -0
  60. data/lib/aws-sdk-core/plugins/signature_v4.rb +141 -0
  61. data/lib/aws-sdk-core/plugins/stub_responses.rb +35 -18
  62. data/lib/aws-sdk-core/plugins/transfer_encoding.rb +53 -0
  63. data/lib/aws-sdk-core/plugins/user_agent.rb +23 -6
  64. data/lib/aws-sdk-core/process_credentials.rb +76 -0
  65. data/lib/aws-sdk-core/query.rb +5 -0
  66. data/lib/aws-sdk-core/query/ec2_param_builder.rb +9 -3
  67. data/lib/aws-sdk-core/query/handler.rb +20 -16
  68. data/lib/aws-sdk-core/query/param_builder.rb +10 -4
  69. data/lib/aws-sdk-core/refreshing_credentials.rb +1 -1
  70. data/lib/aws-sdk-core/resources/collection.rb +121 -0
  71. data/lib/aws-sdk-core/rest.rb +10 -0
  72. data/lib/aws-sdk-core/rest/handler.rb +1 -0
  73. data/lib/aws-sdk-core/rest/request/builder.rb +2 -1
  74. data/lib/aws-sdk-core/rest/request/endpoint.rb +11 -66
  75. data/lib/aws-sdk-core/rest/request/headers.rb +20 -1
  76. data/lib/aws-sdk-core/rest/request/querystring_builder.rb +103 -0
  77. data/lib/aws-sdk-core/rest/response/body.rb +14 -1
  78. data/lib/aws-sdk-core/rest/response/headers.rb +9 -0
  79. data/lib/aws-sdk-core/rest/response/parser.rb +18 -14
  80. data/lib/aws-sdk-core/shared_config.rb +132 -18
  81. data/lib/aws-sdk-core/shared_credentials.rb +2 -0
  82. data/lib/aws-sdk-core/structure.rb +21 -11
  83. data/lib/aws-sdk-core/stubbing/data_applicator.rb +1 -1
  84. data/lib/aws-sdk-core/stubbing/empty_stub.rb +10 -3
  85. data/lib/aws-sdk-core/stubbing/protocols/api_gateway.rb +8 -0
  86. data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +1 -1
  87. data/lib/aws-sdk-core/stubbing/protocols/rest.rb +99 -1
  88. data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +5 -1
  89. data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +9 -5
  90. data/lib/aws-sdk-core/stubbing/stub_data.rb +16 -3
  91. data/lib/aws-sdk-core/util.rb +66 -0
  92. data/lib/aws-sdk-core/waiters.rb +3 -0
  93. data/lib/aws-sdk-core/waiters/poller.rb +5 -7
  94. data/lib/aws-sdk-core/waiters/waiter.rb +1 -0
  95. data/lib/aws-sdk-core/xml.rb +9 -0
  96. data/lib/aws-sdk-core/xml/builder.rb +11 -5
  97. data/lib/aws-sdk-core/xml/error_handler.rb +27 -5
  98. data/lib/aws-sdk-core/xml/parser.rb +1 -11
  99. data/lib/aws-sdk-core/xml/parser/engines/ox.rb +5 -1
  100. data/lib/aws-sdk-core/xml/parser/frame.rb +6 -6
  101. data/lib/aws-sdk-sts.rb +45 -0
  102. data/lib/aws-sdk-sts/client.rb +1761 -0
  103. data/lib/aws-sdk-sts/client_api.rb +304 -0
  104. data/lib/aws-sdk-sts/customizations.rb +0 -0
  105. data/lib/aws-sdk-sts/errors.rb +142 -0
  106. data/lib/aws-sdk-sts/resource.rb +23 -0
  107. data/lib/aws-sdk-sts/types.rb +1279 -0
  108. data/lib/seahorse.rb +60 -60
  109. data/lib/seahorse/client/async_base.rb +50 -0
  110. data/lib/seahorse/client/async_response.rb +62 -0
  111. data/lib/seahorse/client/base.rb +2 -8
  112. data/lib/seahorse/client/configuration.rb +9 -1
  113. data/lib/seahorse/client/h2/connection.rb +244 -0
  114. data/lib/seahorse/client/h2/handler.rb +151 -0
  115. data/lib/seahorse/client/http/async_response.rb +42 -0
  116. data/lib/seahorse/client/http/response.rb +10 -5
  117. data/lib/seahorse/client/logging/formatter.rb +5 -1
  118. data/lib/seahorse/client/logging/handler.rb +2 -0
  119. data/lib/seahorse/client/net_http/connection_pool.rb +27 -11
  120. data/lib/seahorse/client/net_http/handler.rb +10 -2
  121. data/lib/seahorse/client/net_http/patches.rb +9 -1
  122. data/lib/seahorse/client/networking_error.rb +28 -0
  123. data/lib/seahorse/client/plugin.rb +66 -6
  124. data/lib/seahorse/client/plugin_list.rb +3 -1
  125. data/lib/seahorse/client/plugins/content_length.rb +7 -2
  126. data/lib/seahorse/client/plugins/endpoint.rb +14 -10
  127. data/lib/seahorse/client/plugins/h2.rb +64 -0
  128. data/lib/seahorse/client/plugins/logging.rb +17 -19
  129. data/lib/seahorse/client/plugins/net_http.rb +23 -15
  130. data/lib/seahorse/client/plugins/raise_response_errors.rb +4 -4
  131. data/lib/seahorse/client/plugins/response_target.rb +10 -1
  132. data/lib/seahorse/client/request_context.rb +5 -0
  133. data/lib/seahorse/client/response.rb +9 -20
  134. data/lib/seahorse/model/api.rb +37 -0
  135. data/lib/seahorse/model/authorizer.rb +21 -0
  136. data/lib/seahorse/model/operation.rb +20 -0
  137. data/lib/seahorse/model/shapes.rb +44 -2
  138. data/lib/seahorse/util.rb +1 -21
  139. metadata +112 -359
  140. data/apis/acm/2015-12-08/api-2.json +0 -495
  141. data/apis/acm/2015-12-08/examples-1.json +0 -5
  142. data/apis/acm/2015-12-08/paginators-1.json +0 -10
  143. data/apis/apigateway/2015-07-09/api-2.json +0 -3347
  144. data/apis/apigateway/2015-07-09/examples-1.json +0 -5
  145. data/apis/apigateway/2015-07-09/paginators-1.json +0 -52
  146. data/apis/application-autoscaling/2016-02-06/api-2.json +0 -502
  147. data/apis/application-autoscaling/2016-02-06/examples-1.json +0 -5
  148. data/apis/application-autoscaling/2016-02-06/paginators-1.json +0 -22
  149. data/apis/autoscaling/2011-01-01/api-2.json +0 -2038
  150. data/apis/autoscaling/2011-01-01/examples-1.json +0 -5
  151. data/apis/autoscaling/2011-01-01/paginators-1.json +0 -52
  152. data/apis/autoscaling/2011-01-01/resources-1.json +0 -1613
  153. data/apis/autoscaling/2011-01-01/waiters-2.json +0 -62
  154. data/apis/cloudformation/2010-05-15/api-2.json +0 -1299
  155. data/apis/cloudformation/2010-05-15/examples-1.json +0 -5
  156. data/apis/cloudformation/2010-05-15/paginators-1.json +0 -27
  157. data/apis/cloudformation/2010-05-15/resources-1.json +0 -202
  158. data/apis/cloudformation/2010-05-15/waiters-2.json +0 -235
  159. data/apis/cloudfront/2016-01-28/api-2.json +0 -2218
  160. data/apis/cloudfront/2016-01-28/examples-1.json +0 -5
  161. data/apis/cloudfront/2016-01-28/paginators-1.json +0 -32
  162. data/apis/cloudfront/2016-01-28/waiters-2.json +0 -47
  163. data/apis/cloudhsm/2014-05-30/api-2.json +0 -877
  164. data/apis/cloudhsm/2014-05-30/examples-1.json +0 -5
  165. data/apis/cloudsearch/2013-01-01/api-2.json +0 -2001
  166. data/apis/cloudsearch/2013-01-01/paginators-1.json +0 -20
  167. data/apis/cloudsearchdomain/2013-01-01/api-2.json +0 -373
  168. data/apis/cloudsearchdomain/2013-01-01/examples-1.json +0 -5
  169. data/apis/cloudtrail/2013-11-01/api-2.json +0 -801
  170. data/apis/cloudtrail/2013-11-01/examples-1.json +0 -5
  171. data/apis/cloudtrail/2013-11-01/paginators-1.json +0 -7
  172. data/apis/codecommit/2015-04-13/api-2.json +0 -916
  173. data/apis/codecommit/2015-04-13/examples-1.json +0 -5
  174. data/apis/codecommit/2015-04-13/paginators-1.json +0 -14
  175. data/apis/codedeploy/2014-10-06/api-2.json +0 -1954
  176. data/apis/codedeploy/2014-10-06/examples-1.json +0 -5
  177. data/apis/codedeploy/2014-10-06/paginators-1.json +0 -34
  178. data/apis/codepipeline/2015-07-09/api-2.json +0 -1633
  179. data/apis/codepipeline/2015-07-09/examples-1.json +0 -902
  180. data/apis/cognito-identity/2014-06-30/api-2.json +0 -859
  181. data/apis/cognito-identity/2014-06-30/examples-1.json +0 -5
  182. data/apis/cognito-idp/2016-04-18/api-2.json +0 -1657
  183. data/apis/cognito-idp/2016-04-18/examples-1.json +0 -5
  184. data/apis/cognito-sync/2014-06-30/api-2.json +0 -1874
  185. data/apis/config/2014-11-12/api-2.json +0 -1303
  186. data/apis/config/2014-11-12/examples-1.json +0 -5
  187. data/apis/config/2014-11-12/paginators-1.json +0 -10
  188. data/apis/datapipeline/2012-10-29/api-2.json +0 -1167
  189. data/apis/datapipeline/2012-10-29/paginators-1.json +0 -26
  190. data/apis/devicefarm/2015-06-23/api-2.json +0 -2030
  191. data/apis/devicefarm/2015-06-23/examples-1.json +0 -5
  192. data/apis/devicefarm/2015-06-23/paginators-1.json +0 -74
  193. data/apis/directconnect/2012-10-25/api-2.json +0 -793
  194. data/apis/directconnect/2012-10-25/examples-1.json +0 -5
  195. data/apis/directconnect/2012-10-25/paginators-1.json +0 -22
  196. data/apis/discovery/2015-11-01/api-2.json +0 -556
  197. data/apis/discovery/2015-11-01/examples-1.json +0 -5
  198. data/apis/dms/2016-01-01/api-2.json +0 -1469
  199. data/apis/dms/2016-01-01/examples-1.json +0 -5
  200. data/apis/ds/2015-04-16/api-2.json +0 -1674
  201. data/apis/ds/2015-04-16/examples-1.json +0 -5
  202. data/apis/dynamodb/2012-08-10/api-2.json +0 -1200
  203. data/apis/dynamodb/2012-08-10/examples-1.json +0 -5
  204. data/apis/dynamodb/2012-08-10/paginators-1.json +0 -26
  205. data/apis/dynamodb/2012-08-10/resources-1.json +0 -136
  206. data/apis/dynamodb/2012-08-10/waiters-2.json +0 -35
  207. data/apis/ec2/2015-10-01/api-2.json +0 -13759
  208. data/apis/ec2/2015-10-01/examples-1.json +0 -5
  209. data/apis/ec2/2015-10-01/paginators-1.json +0 -138
  210. data/apis/ec2/2015-10-01/resources-1.json +0 -2582
  211. data/apis/ec2/2015-10-01/waiters-2.json +0 -593
  212. data/apis/ec2/2016-04-01/api-2.json +0 -13842
  213. data/apis/ec2/2016-04-01/examples-1.json +0 -5
  214. data/apis/ec2/2016-04-01/paginators-1.json +0 -138
  215. data/apis/ec2/2016-04-01/resources-1.json +0 -2582
  216. data/apis/ec2/2016-04-01/waiters-2.json +0 -593
  217. data/apis/ecr/2015-09-21/api-2.json +0 -849
  218. data/apis/ecr/2015-09-21/examples-1.json +0 -5
  219. data/apis/ecs/2014-11-13/api-2.json +0 -1396
  220. data/apis/ecs/2014-11-13/examples-1.json +0 -5
  221. data/apis/ecs/2014-11-13/paginators-1.json +0 -40
  222. data/apis/ecs/2014-11-13/waiters-2.json +0 -93
  223. data/apis/elasticache/2015-02-02/api-2.json +0 -2426
  224. data/apis/elasticache/2015-02-02/examples-1.json +0 -5
  225. data/apis/elasticache/2015-02-02/paginators-1.json +0 -76
  226. data/apis/elasticache/2015-02-02/waiters-2.json +0 -143
  227. data/apis/elasticbeanstalk/2010-12-01/api-2.json +0 -1894
  228. data/apis/elasticbeanstalk/2010-12-01/examples-1.json +0 -1109
  229. data/apis/elasticbeanstalk/2010-12-01/paginators-1.json +0 -25
  230. data/apis/elasticfilesystem/2015-02-01/api-2.json +0 -713
  231. data/apis/elasticfilesystem/2015-02-01/examples-1.json +0 -5
  232. data/apis/elasticloadbalancing/2012-06-01/api-2.json +0 -2145
  233. data/apis/elasticloadbalancing/2012-06-01/paginators-1.json +0 -18
  234. data/apis/elasticloadbalancing/2012-06-01/waiters-2.json +0 -49
  235. data/apis/elasticmapreduce/2009-03-31/api-2.json +0 -1341
  236. data/apis/elasticmapreduce/2009-03-31/examples-1.json +0 -5
  237. data/apis/elasticmapreduce/2009-03-31/paginators-1.json +0 -32
  238. data/apis/elasticmapreduce/2009-03-31/waiters-2.json +0 -67
  239. data/apis/elastictranscoder/2012-09-25/api-2.json +0 -1807
  240. data/apis/elastictranscoder/2012-09-25/paginators-1.json +0 -24
  241. data/apis/elastictranscoder/2012-09-25/waiters-2.json +0 -30
  242. data/apis/email/2010-12-01/api-2.json +0 -1791
  243. data/apis/email/2010-12-01/examples-1.json +0 -5
  244. data/apis/email/2010-12-01/paginators-1.json +0 -13
  245. data/apis/email/2010-12-01/waiters-2.json +0 -18
  246. data/apis/es/2015-01-01/api-2.json +0 -764
  247. data/apis/events/2015-10-07/api-2.json +0 -643
  248. data/apis/events/2015-10-07/examples-1.json +0 -5
  249. data/apis/firehose/2015-08-04/api-2.json +0 -719
  250. data/apis/gamelift/2015-10-01/api-2.json +0 -2307
  251. data/apis/gamelift/2015-10-01/examples-1.json +0 -5
  252. data/apis/glacier/2012-06-01/api-2.json +0 -2144
  253. data/apis/glacier/2012-06-01/paginators-1.json +0 -28
  254. data/apis/glacier/2012-06-01/resources-1.json +0 -563
  255. data/apis/glacier/2012-06-01/waiters-2.json +0 -39
  256. data/apis/iam/2010-05-08/api-2.json +0 -4514
  257. data/apis/iam/2010-05-08/examples-1.json +0 -5
  258. data/apis/iam/2010-05-08/paginators-1.json +0 -198
  259. data/apis/iam/2010-05-08/resources-1.json +0 -1740
  260. data/apis/iam/2010-05-08/waiters-2.json +0 -39
  261. data/apis/importexport/2010-06-01/api-2.json +0 -666
  262. data/apis/importexport/2010-06-01/paginators-1.json +0 -11
  263. data/apis/inspector/2016-02-16/api-2.json +0 -1964
  264. data/apis/inspector/2016-02-16/examples-1.json +0 -5
  265. data/apis/iot-data/2015-05-28/api-2.json +0 -263
  266. data/apis/iot/2015-05-28/api-2.json +0 -3800
  267. data/apis/iot/2015-05-28/examples-1.json +0 -5
  268. data/apis/kinesis/2013-12-02/api-2.json +0 -822
  269. data/apis/kinesis/2013-12-02/examples-1.json +0 -5
  270. data/apis/kinesis/2013-12-02/paginators-1.json +0 -18
  271. data/apis/kinesis/2013-12-02/waiters-2.json +0 -18
  272. data/apis/kms/2014-11-01/api-2.json +0 -1209
  273. data/apis/kms/2014-11-01/examples-1.json +0 -5
  274. data/apis/kms/2014-11-01/paginators-1.json +0 -32
  275. data/apis/lambda/2014-11-11/api-2.json +0 -667
  276. data/apis/lambda/2014-11-11/paginators-1.json +0 -16
  277. data/apis/lambda/2015-03-31/api-2.json +0 -1342
  278. data/apis/lambda/2015-03-31/examples-1.json +0 -5
  279. data/apis/lambda/2015-03-31/paginators-1.json +0 -16
  280. data/apis/logs/2014-03-28/api-2.json +0 -1138
  281. data/apis/logs/2014-03-28/examples-1.json +0 -5
  282. data/apis/logs/2014-03-28/paginators-1.json +0 -49
  283. data/apis/machinelearning/2014-12-12/api-2.json +0 -1947
  284. data/apis/machinelearning/2014-12-12/paginators-1.json +0 -28
  285. data/apis/machinelearning/2014-12-12/waiters-2.json +0 -81
  286. data/apis/marketplacecommerceanalytics/2015-07-01/api-2.json +0 -120
  287. data/apis/marketplacecommerceanalytics/2015-07-01/examples-1.json +0 -5
  288. data/apis/meteringmarketplace/2016-01-14/api-2.json +0 -127
  289. data/apis/meteringmarketplace/2016-01-14/examples-1.json +0 -5
  290. data/apis/monitoring/2010-08-01/api-2.json +0 -790
  291. data/apis/monitoring/2010-08-01/examples-1.json +0 -5
  292. data/apis/monitoring/2010-08-01/paginators-1.json +0 -24
  293. data/apis/monitoring/2010-08-01/resources-1.json +0 -346
  294. data/apis/monitoring/2010-08-01/waiters-2.json +0 -18
  295. data/apis/opsworks/2013-02-18/api-2.json +0 -2606
  296. data/apis/opsworks/2013-02-18/examples-1.json +0 -5
  297. data/apis/opsworks/2013-02-18/paginators-1.json +0 -55
  298. data/apis/opsworks/2013-02-18/resources-1.json +0 -173
  299. data/apis/opsworks/2013-02-18/waiters-2.json +0 -295
  300. data/apis/rds/2014-10-31/api-2.json +0 -4757
  301. data/apis/rds/2014-10-31/examples-1.json +0 -5
  302. data/apis/rds/2014-10-31/paginators-1.json +0 -110
  303. data/apis/rds/2014-10-31/resources-1.json +0 -3272
  304. data/apis/rds/2014-10-31/waiters-2.json +0 -102
  305. data/apis/redshift/2012-12-01/api-2.json +0 -3768
  306. data/apis/redshift/2012-12-01/examples-1.json +0 -5
  307. data/apis/redshift/2012-12-01/paginators-1.json +0 -94
  308. data/apis/redshift/2012-12-01/waiters-2.json +0 -97
  309. data/apis/route53/2013-04-01/api-2.json +0 -3245
  310. data/apis/route53/2013-04-01/examples-1.json +0 -5
  311. data/apis/route53/2013-04-01/paginators-1.json +0 -33
  312. data/apis/route53/2013-04-01/waiters-2.json +0 -18
  313. data/apis/route53domains/2014-05-15/api-2.json +0 -1197
  314. data/apis/route53domains/2014-05-15/paginators-1.json +0 -17
  315. data/apis/s3/2006-03-01/api-2.json +0 -4517
  316. data/apis/s3/2006-03-01/examples-1.json +0 -5
  317. data/apis/s3/2006-03-01/paginators-1.json +0 -66
  318. data/apis/s3/2006-03-01/resources-1.json +0 -1176
  319. data/apis/s3/2006-03-01/waiters-2.json +0 -73
  320. data/apis/sdb/2009-04-15/api-2.json +0 -954
  321. data/apis/sdb/2009-04-15/paginators-1.json +0 -15
  322. data/apis/servicecatalog/2015-12-10/api-2.json +0 -749
  323. data/apis/servicecatalog/2015-12-10/examples-1.json +0 -5
  324. data/apis/sns/2010-03-31/api-2.json +0 -1139
  325. data/apis/sns/2010-03-31/paginators-1.json +0 -29
  326. data/apis/sns/2010-03-31/resources-1.json +0 -327
  327. data/apis/sqs/2012-11-05/api-2.json +0 -950
  328. data/apis/sqs/2012-11-05/examples-1.json +0 -44
  329. data/apis/sqs/2012-11-05/paginators-1.json +0 -7
  330. data/apis/ssm/2014-11-06/api-2.json +0 -1796
  331. data/apis/ssm/2014-11-06/examples-1.json +0 -5
  332. data/apis/ssm/2014-11-06/paginators-1.json +0 -34
  333. data/apis/storagegateway/2013-06-30/api-2.json +0 -2275
  334. data/apis/storagegateway/2013-06-30/examples-1.json +0 -5
  335. data/apis/storagegateway/2013-06-30/paginators-1.json +0 -52
  336. data/apis/streams.dynamodb/2012-08-10/api-2.json +0 -397
  337. data/apis/streams.dynamodb/2012-08-10/examples-1.json +0 -5
  338. data/apis/sts/2011-06-15/api-2.json +0 -521
  339. data/apis/sts/2011-06-15/examples-1.json +0 -5
  340. data/apis/support/2013-04-15/api-2.json +0 -869
  341. data/apis/support/2013-04-15/paginators-1.json +0 -25
  342. data/apis/swf/2012-01-25/api-2.json +0 -2838
  343. data/apis/swf/2012-01-25/paginators-1.json +0 -46
  344. data/apis/waf/2015-08-24/api-2.json +0 -1959
  345. data/apis/waf/2015-08-24/examples-1.json +0 -5
  346. data/apis/workspaces/2015-04-08/api-2.json +0 -632
  347. data/apis/workspaces/2015-04-08/examples-1.json +0 -5
  348. data/apis/workspaces/2015-04-08/paginators-1.json +0 -20
  349. data/bin/aws.rb +0 -180
  350. data/endpoints.json +0 -1460
  351. data/lib/aws-sdk-core/acm.rb +0 -6
  352. data/lib/aws-sdk-core/api/builder.rb +0 -106
  353. data/lib/aws-sdk-core/api/customizations.rb +0 -217
  354. data/lib/aws-sdk-core/api/docs/builder.rb +0 -220
  355. data/lib/aws-sdk-core/api/docs/client_type_documenter.rb +0 -109
  356. data/lib/aws-sdk-core/api/docs/docstring_provider.rb +0 -75
  357. data/lib/aws-sdk-core/api/docs/operation_documenter.rb +0 -138
  358. data/lib/aws-sdk-core/api/docs/param_formatter.rb +0 -163
  359. data/lib/aws-sdk-core/api/docs/request_syntax_example.rb +0 -22
  360. data/lib/aws-sdk-core/api/docs/response_structure_example.rb +0 -91
  361. data/lib/aws-sdk-core/api/docs/shared_example.rb +0 -100
  362. data/lib/aws-sdk-core/api/docs/utils.rb +0 -133
  363. data/lib/aws-sdk-core/api/shape_map.rb +0 -142
  364. data/lib/aws-sdk-core/apigateway.rb +0 -6
  365. data/lib/aws-sdk-core/applicationautoscaling.rb +0 -6
  366. data/lib/aws-sdk-core/applicationdiscoveryservice.rb +0 -5
  367. data/lib/aws-sdk-core/autoscaling.rb +0 -8
  368. data/lib/aws-sdk-core/checksums.rb +0 -51
  369. data/lib/aws-sdk-core/client.rb +0 -57
  370. data/lib/aws-sdk-core/client_waiters.rb +0 -120
  371. data/lib/aws-sdk-core/cloudformation.rb +0 -8
  372. data/lib/aws-sdk-core/cloudfront.rb +0 -15
  373. data/lib/aws-sdk-core/cloudfront/url_signer.rb +0 -167
  374. data/lib/aws-sdk-core/cloudhsm.rb +0 -5
  375. data/lib/aws-sdk-core/cloudsearch.rb +0 -5
  376. data/lib/aws-sdk-core/cloudsearchdomain.rb +0 -5
  377. data/lib/aws-sdk-core/cloudtrail.rb +0 -6
  378. data/lib/aws-sdk-core/cloudwatch.rb +0 -8
  379. data/lib/aws-sdk-core/cloudwatchevents.rb +0 -5
  380. data/lib/aws-sdk-core/cloudwatchlogs.rb +0 -6
  381. data/lib/aws-sdk-core/codecommit.rb +0 -6
  382. data/lib/aws-sdk-core/codedeploy.rb +0 -6
  383. data/lib/aws-sdk-core/codepipeline.rb +0 -5
  384. data/lib/aws-sdk-core/cognitoidentity.rb +0 -5
  385. data/lib/aws-sdk-core/cognitoidentityprovider.rb +0 -5
  386. data/lib/aws-sdk-core/cognitosync.rb +0 -4
  387. data/lib/aws-sdk-core/configservice.rb +0 -6
  388. data/lib/aws-sdk-core/databasemigrationservice.rb +0 -5
  389. data/lib/aws-sdk-core/datapipeline.rb +0 -5
  390. data/lib/aws-sdk-core/devicefarm.rb +0 -6
  391. data/lib/aws-sdk-core/directconnect.rb +0 -6
  392. data/lib/aws-sdk-core/directoryservice.rb +0 -5
  393. data/lib/aws-sdk-core/dynamodb.rb +0 -40
  394. data/lib/aws-sdk-core/dynamodb/attribute_value.rb +0 -108
  395. data/lib/aws-sdk-core/dynamodbstreams.rb +0 -5
  396. data/lib/aws-sdk-core/ec2.rb +0 -8
  397. data/lib/aws-sdk-core/ecr.rb +0 -5
  398. data/lib/aws-sdk-core/ecs.rb +0 -7
  399. data/lib/aws-sdk-core/efs.rb +0 -5
  400. data/lib/aws-sdk-core/elasticache.rb +0 -7
  401. data/lib/aws-sdk-core/elasticbeanstalk.rb +0 -6
  402. data/lib/aws-sdk-core/elasticloadbalancing.rb +0 -6
  403. data/lib/aws-sdk-core/elasticsearchservice.rb +0 -4
  404. data/lib/aws-sdk-core/elastictranscoder.rb +0 -6
  405. data/lib/aws-sdk-core/empty_structure.rb +0 -3
  406. data/lib/aws-sdk-core/emr.rb +0 -7
  407. data/lib/aws-sdk-core/endpoint_provider.rb +0 -95
  408. data/lib/aws-sdk-core/firehose.rb +0 -4
  409. data/lib/aws-sdk-core/gamelift.rb +0 -5
  410. data/lib/aws-sdk-core/glacier.rb +0 -7
  411. data/lib/aws-sdk-core/iam.rb +0 -8
  412. data/lib/aws-sdk-core/importexport.rb +0 -5
  413. data/lib/aws-sdk-core/inspector.rb +0 -5
  414. data/lib/aws-sdk-core/iot.rb +0 -5
  415. data/lib/aws-sdk-core/iotdataplane.rb +0 -4
  416. data/lib/aws-sdk-core/kinesis.rb +0 -7
  417. data/lib/aws-sdk-core/kms.rb +0 -6
  418. data/lib/aws-sdk-core/lambda.rb +0 -6
  419. data/lib/aws-sdk-core/lambdapreview.rb +0 -5
  420. data/lib/aws-sdk-core/machinelearning.rb +0 -6
  421. data/lib/aws-sdk-core/marketplacecommerceanalytics.rb +0 -5
  422. data/lib/aws-sdk-core/marketplacemetering.rb +0 -5
  423. data/lib/aws-sdk-core/opsworks.rb +0 -8
  424. data/lib/aws-sdk-core/partitions.rb +0 -174
  425. data/lib/aws-sdk-core/partitions/partition.rb +0 -95
  426. data/lib/aws-sdk-core/partitions/partition_list.rb +0 -60
  427. data/lib/aws-sdk-core/partitions/region.rb +0 -78
  428. data/lib/aws-sdk-core/partitions/service.rb +0 -84
  429. data/lib/aws-sdk-core/plugins/api_gateway_header.rb +0 -19
  430. data/lib/aws-sdk-core/plugins/csd_conditional_signing.rb +0 -30
  431. data/lib/aws-sdk-core/plugins/dynamodb_crc32_validation.rb +0 -52
  432. data/lib/aws-sdk-core/plugins/dynamodb_extended_retries.rb +0 -22
  433. data/lib/aws-sdk-core/plugins/dynamodb_simple_attributes.rb +0 -209
  434. data/lib/aws-sdk-core/plugins/ec2_copy_encrypted_snapshot.rb +0 -87
  435. data/lib/aws-sdk-core/plugins/ec2_region_validation.rb +0 -17
  436. data/lib/aws-sdk-core/plugins/glacier_account_id.rb +0 -19
  437. data/lib/aws-sdk-core/plugins/glacier_api_version.rb +0 -19
  438. data/lib/aws-sdk-core/plugins/glacier_checksums.rb +0 -87
  439. data/lib/aws-sdk-core/plugins/machine_learning_predict_endpoint.rb +0 -20
  440. data/lib/aws-sdk-core/plugins/request_signer.rb +0 -138
  441. data/lib/aws-sdk-core/plugins/route_53_id_fix.rb +0 -55
  442. data/lib/aws-sdk-core/plugins/s3_accelerate.rb +0 -73
  443. data/lib/aws-sdk-core/plugins/s3_bucket_dns.rb +0 -86
  444. data/lib/aws-sdk-core/plugins/s3_bucket_name_restrictions.rb +0 -21
  445. data/lib/aws-sdk-core/plugins/s3_expect_100_continue.rb +0 -27
  446. data/lib/aws-sdk-core/plugins/s3_get_bucket_location_fix.rb +0 -21
  447. data/lib/aws-sdk-core/plugins/s3_http_200_errors.rb +0 -45
  448. data/lib/aws-sdk-core/plugins/s3_location_constraint.rb +0 -31
  449. data/lib/aws-sdk-core/plugins/s3_md5s.rb +0 -50
  450. data/lib/aws-sdk-core/plugins/s3_redirects.rb +0 -37
  451. data/lib/aws-sdk-core/plugins/s3_request_signer.rb +0 -166
  452. data/lib/aws-sdk-core/plugins/s3_sse_cpk.rb +0 -64
  453. data/lib/aws-sdk-core/plugins/s3_url_encoded_keys.rb +0 -92
  454. data/lib/aws-sdk-core/plugins/sqs_md5s.rb +0 -162
  455. data/lib/aws-sdk-core/plugins/sqs_queue_urls.rb +0 -34
  456. data/lib/aws-sdk-core/plugins/swf_read_timeouts.rb +0 -23
  457. data/lib/aws-sdk-core/rds.rb +0 -8
  458. data/lib/aws-sdk-core/redshift.rb +0 -7
  459. data/lib/aws-sdk-core/route53.rb +0 -7
  460. data/lib/aws-sdk-core/route53domains.rb +0 -5
  461. data/lib/aws-sdk-core/s3.rb +0 -26
  462. data/lib/aws-sdk-core/s3/bucket_region_cache.rb +0 -75
  463. data/lib/aws-sdk-core/s3/presigner.rb +0 -113
  464. data/lib/aws-sdk-core/service.rb +0 -4
  465. data/lib/aws-sdk-core/servicecatalog.rb +0 -5
  466. data/lib/aws-sdk-core/ses.rb +0 -7
  467. data/lib/aws-sdk-core/signers/base.rb +0 -31
  468. data/lib/aws-sdk-core/signers/s3.rb +0 -184
  469. data/lib/aws-sdk-core/signers/v2.rb +0 -51
  470. data/lib/aws-sdk-core/signers/v3.rb +0 -34
  471. data/lib/aws-sdk-core/signers/v4.rb +0 -233
  472. data/lib/aws-sdk-core/simpledb.rb +0 -5
  473. data/lib/aws-sdk-core/sns.rb +0 -6
  474. data/lib/aws-sdk-core/sqs.rb +0 -6
  475. data/lib/aws-sdk-core/ssm.rb +0 -6
  476. data/lib/aws-sdk-core/storagegateway.rb +0 -6
  477. data/lib/aws-sdk-core/sts.rb +0 -5
  478. data/lib/aws-sdk-core/support.rb +0 -5
  479. data/lib/aws-sdk-core/swf.rb +0 -5
  480. data/lib/aws-sdk-core/tree_hash.rb +0 -69
  481. data/lib/aws-sdk-core/version.rb +0 -3
  482. data/lib/aws-sdk-core/waf.rb +0 -5
  483. data/lib/aws-sdk-core/waiters/null_provider.rb +0 -12
  484. data/lib/aws-sdk-core/waiters/provider.rb +0 -35
  485. data/lib/aws-sdk-core/workspaces.rb +0 -6
  486. data/lib/seahorse/client/plugins/restful_bindings.rb +0 -127
  487. data/service-models.json +0 -285
@@ -15,7 +15,9 @@ module Aws
15
15
  # @param [IO] body
16
16
  # @param [Hash, Struct] data
17
17
  def apply(body, data)
18
- if streaming?
18
+ if event_stream?
19
+ data[@rules[:payload]] = parse_eventstream(body)
20
+ elsif streaming?
19
21
  data[@rules[:payload]] = body
20
22
  elsif @rules[:payload]
21
23
  data[@rules[:payload]] = parse(body.read, @rules[:payload_member])
@@ -26,6 +28,10 @@ module Aws
26
28
 
27
29
  private
28
30
 
31
+ def event_stream?
32
+ @rules[:payload] && @rules[:payload_member].eventstream
33
+ end
34
+
29
35
  def streaming?
30
36
  @rules[:payload] && (
31
37
  BlobShape === @rules[:payload_member].shape ||
@@ -37,6 +43,13 @@ module Aws
37
43
  @parser_class.new(rules).parse(body, target) if body.size > 0
38
44
  end
39
45
 
46
+ def parse_eventstream(body)
47
+ # body contains an array of parsed event when they arrive
48
+ @rules[:payload_member].shape.struct_class.new do |payload|
49
+ body.each { |event| payload << event }
50
+ end
51
+ end
52
+
40
53
  end
41
54
  end
42
55
  end
@@ -1,4 +1,6 @@
1
1
  require 'time'
2
+ require 'base64'
3
+ require 'json'
2
4
 
3
5
  module Aws
4
6
  module Rest
@@ -31,6 +33,7 @@ module Aws
31
33
  end
32
34
 
33
35
  def cast_value(ref, value)
36
+ value = extract_json_trait(value) if ref['jsonvalue']
34
37
  case ref.shape
35
38
  when StringShape then value
36
39
  when IntegerShape then value.to_i
@@ -39,6 +42,8 @@ module Aws
39
42
  when TimestampShape
40
43
  if value =~ /\d+(\.\d*)/
41
44
  Time.at(value.to_f)
45
+ elsif value =~ /^\d+$/
46
+ Time.at(value.to_i)
42
47
  else
43
48
  begin
44
49
  Time.parse(value)
@@ -60,6 +65,10 @@ module Aws
60
65
  end
61
66
  end
62
67
 
68
+ def extract_json_trait(value)
69
+ JSON.parse(Base64.decode64(value))
70
+ end
71
+
63
72
  end
64
73
  end
65
74
  end
@@ -5,31 +5,34 @@ module Aws
5
5
 
6
6
  def apply(response)
7
7
  # TODO : remove this unless check once response stubbing is fixed
8
- unless response.data
9
- response.data = response.context.operation.output[:struct_class].new
8
+ if rules = response.context.operation.output
9
+ response.data = rules.shape.struct_class.new
10
+ extract_status_code(rules, response)
11
+ extract_headers(rules, response)
12
+ extract_body(rules, response)
13
+ else
14
+ response.data = EmptyStructure.new
10
15
  end
11
- extract_status_code(response)
12
- extract_headers(response)
13
- extract_body(response)
14
16
  end
15
17
 
16
18
  private
17
19
 
18
- def extract_status_code(response)
19
- status_code = StatusCode.new(response.context.operation.output)
20
+ def extract_status_code(rules, response)
21
+ status_code = StatusCode.new(rules)
20
22
  status_code.apply(response.context.http_response, response.data)
21
23
  end
22
24
 
23
- def extract_headers(response)
24
- headers = Headers.new(response.context.operation.output)
25
+ def extract_headers(rules, response)
26
+ headers = Headers.new(rules)
25
27
  headers.apply(response.context.http_response, response.data)
26
28
  end
27
29
 
28
- def extract_body(response)
29
- Body.new(
30
- parser_class(response),
31
- response.context.operation.output,
32
- ).apply(response.context.http_response.body, response.data)
30
+ def extract_body(rules, response)
31
+ Body.new(parser_class(response), rules).
32
+ apply(
33
+ response.context.http_response.body,
34
+ response.data
35
+ )
33
36
  end
34
37
 
35
38
  def parser_class(response)
@@ -37,6 +40,7 @@ module Aws
37
40
  case protocol
38
41
  when 'rest-xml' then Xml::Parser
39
42
  when 'rest-json' then Json::Parser
43
+ when 'api-gateway' then Json::Parser
40
44
  else raise "unsupported protocol #{protocol}"
41
45
  end
42
46
  end
@@ -16,10 +16,15 @@ module Aws
16
16
  # credentials file, and optionally the shared configuration file, as ini
17
17
  # files which support profiles.
18
18
  #
19
- # By default, only the shared credential file (the default path for which is
20
- # `~/.aws/credentials`) is loaded. However, if you set the
21
- # `ENV['AWS_SDK_LOAD_CONFIG']` environment variable, the shared config file
22
- # will also be loaded (the default path for which is `~/.aws/config`).
19
+ # By default, the shared credential file (the default path for which is
20
+ # `~/.aws/credentials`) and the shared config file (the default path for
21
+ # which is `~/.aws/config`) are loaded. However, if you set the
22
+ # `ENV['AWS_SDK_CONFIG_OPT_OUT']` environment variable, only the shared
23
+ # credential file will be loaded. You can specify the shared credential
24
+ # file path with the `ENV['AWS_SHARED_CREDENTIALS_FILE']` environment
25
+ # variable or with the `:credentials_path` option. Similarly, you can
26
+ # specify the shared config file path with the `ENV['AWS_CONFIG_FILE']`
27
+ # environment variable or with the `:config_path` option.
23
28
  #
24
29
  # The default profile name is 'default'. You can specify the profile name
25
30
  # with the `ENV['AWS_PROFILE']` environment variable or with the
@@ -27,21 +32,24 @@ module Aws
27
32
  #
28
33
  # @param [Hash] options
29
34
  # @option options [String] :credentials_path Path to the shared credentials
30
- # file. Defaults to "#{Dir.home}/.aws/credentials".
35
+ # file. If not specified, will check `ENV['AWS_SHARED_CREDENTIALS_FILE']`
36
+ # before using the default value of "#{Dir.home}/.aws/credentials".
31
37
  # @option options [String] :config_path Path to the shared config file.
32
- # Defaults to "#{Dir.home}/.aws/config".
38
+ # If not specified, will check `ENV['AWS_CONFIG_FILE']` before using the
39
+ # default value of "#{Dir.home}/.aws/config".
33
40
  # @option options [String] :profile_name The credential/config profile name
34
41
  # to use. If not specified, will check `ENV['AWS_PROFILE']` before using
35
42
  # the fixed default value of 'default'.
36
43
  # @option options [Boolean] :config_enabled If true, loads the shared config
37
44
  # file and enables new config values outside of the old shared credential
38
- # spec. Generally sourced from `ENV['AWS_SDK_LOAD_CONFIG']`.
45
+ # spec.
39
46
  def initialize(options = {})
47
+ @parsed_config = nil
40
48
  @profile_name = determine_profile(options)
41
49
  @config_enabled = options[:config_enabled]
42
50
  @credentials_path = options[:credentials_path] ||
43
51
  determine_credentials_path
44
- @parsed_credenetials = {}
52
+ @parsed_credentials = {}
45
53
  load_credentials_file if loadable?(@credentials_path)
46
54
  if @config_enabled
47
55
  @config_path = options[:config_path] || determine_config_path
@@ -76,22 +84,21 @@ module Aws
76
84
  end
77
85
 
78
86
  # @return [Boolean] returns `true` if use of the shared config file is
79
- # enabled. Generally true if and only if the `AWS_SDK_LOAD_CONFIG` env
80
- # variable is set.
87
+ # enabled.
81
88
  def config_enabled?
82
89
  @config_enabled ? true : false
83
90
  end
84
91
 
85
92
  # Sources static credentials from shared credential/config files.
86
93
  #
87
- # @param [Hash] options
94
+ # @param [Hash] opts
88
95
  # @option options [String] :profile the name of the configuration file from
89
96
  # which credentials are being sourced.
90
97
  # @return [Aws::Credentials] credentials sourced from configuration values,
91
98
  # or `nil` if no valid credentials were found.
92
99
  def credentials(opts = {})
93
100
  p = opts[:profile] || @profile_name
94
- validate_profile_exists(p) if @parsed_credentials || @parsed_config
101
+ validate_profile_exists(p) if credentials_present?
95
102
  if credentials = credentials_from_shared(p, opts)
96
103
  credentials
97
104
  elsif credentials = credentials_from_config(p, opts)
@@ -106,9 +113,10 @@ module Aws
106
113
  # file, if present.
107
114
  def assume_role_credentials_from_config(opts = {})
108
115
  p = opts.delete(:profile) || @profile_name
109
- credentials = assume_role_from_profile(@parsed_credentials, p, opts)
116
+ chain_config = opts.delete(:chain_config)
117
+ credentials = assume_role_from_profile(@parsed_credentials, p, opts, chain_config)
110
118
  if @parsed_config
111
- credentials ||= assume_role_from_profile(@parsed_config, p, opts)
119
+ credentials ||= assume_role_from_profile(@parsed_config, p, opts, chain_config)
112
120
  end
113
121
  credentials
114
122
  end
@@ -128,11 +136,81 @@ module Aws
128
136
  end
129
137
  end
130
138
 
139
+ def endpoint_discovery(opts = {})
140
+ p = opts[:profile] || @profile_name
141
+ if @config_enabled && @parsed_config
142
+ @parsed_config.fetch(p, {})["endpoint_discovery_enabled"]
143
+ end
144
+ end
145
+
146
+ def credentials_process(profile)
147
+ validate_profile_exists(profile)
148
+ @parsed_config[profile]['credential_process']
149
+ end
150
+
151
+ def csm_enabled(opts = {})
152
+ p = opts[:profile] || @profile_name
153
+ if @config_enabled
154
+ if @parsed_credentials
155
+ value = @parsed_credentials.fetch(p, {})["csm_enabled"]
156
+ end
157
+ if @parsed_config
158
+ value ||= @parsed_config.fetch(p, {})["csm_enabled"]
159
+ end
160
+ value
161
+ else
162
+ nil
163
+ end
164
+ end
165
+
166
+ def csm_client_id(opts = {})
167
+ p = opts[:profile] || @profile_name
168
+ if @config_enabled
169
+ if @parsed_credentials
170
+ value = @parsed_credentials.fetch(p, {})["csm_client_id"]
171
+ end
172
+ if @parsed_config
173
+ value ||= @parsed_config.fetch(p, {})["csm_client_id"]
174
+ end
175
+ value
176
+ else
177
+ nil
178
+ end
179
+ end
180
+
181
+ def csm_port(opts = {})
182
+ p = opts[:profile] || @profile_name
183
+ if @config_enabled
184
+ if @parsed_credentials
185
+ value = @parsed_credentials.fetch(p, {})["csm_port"]
186
+ end
187
+ if @parsed_config
188
+ value ||= @parsed_config.fetch(p, {})["csm_port"]
189
+ end
190
+ value
191
+ else
192
+ nil
193
+ end
194
+ end
195
+
131
196
  private
132
- def assume_role_from_profile(cfg, profile, opts)
197
+ def credentials_present?
198
+ (@parsed_credentials && !@parsed_credentials.empty?) ||
199
+ (@parsed_config && !@parsed_config.empty?)
200
+ end
201
+
202
+ def assume_role_from_profile(cfg, profile, opts, chain_config)
133
203
  if cfg && prof_cfg = cfg[profile]
134
204
  opts[:source_profile] ||= prof_cfg["source_profile"]
135
- if opts[:source_profile]
205
+ credential_source = opts.delete(:credential_source)
206
+ credential_source ||= prof_cfg["credential_source"]
207
+ if opts[:source_profile] && credential_source
208
+ raise Errors::CredentialSourceConflictError.new(
209
+ "Profile #{profile} has a source_profile, and "\
210
+ "a credential_source. For assume role credentials, must "\
211
+ "provide only source_profile or credential_source, not both."
212
+ )
213
+ elsif opts[:source_profile]
136
214
  opts[:credentials] = credentials(profile: opts[:source_profile])
137
215
  if opts[:credentials]
138
216
  opts[:role_session_name] ||= prof_cfg["role_session_name"]
@@ -148,6 +226,25 @@ module Aws
148
226
  " source_profile does not have credentials."
149
227
  )
150
228
  end
229
+ elsif credential_source
230
+ opts[:credentials] = credentials_from_source(
231
+ credential_source,
232
+ chain_config
233
+ )
234
+ if opts[:credentials]
235
+ opts[:role_session_name] ||= prof_cfg["role_session_name"]
236
+ opts[:role_session_name] ||= "default_session"
237
+ opts[:role_arn] ||= prof_cfg["role_arn"]
238
+ opts[:external_id] ||= prof_cfg["external_id"]
239
+ opts[:serial_number] ||= prof_cfg["mfa_serial"]
240
+ opts.delete(:source_profile) # Cleanup
241
+ AssumeRoleCredentials.new(opts)
242
+ else
243
+ raise Errors::NoSourceCredentials.new(
244
+ "Profile #{profile} could not get source credentials from"\
245
+ " provider #{credential_source}"
246
+ )
247
+ end
151
248
  elsif prof_cfg["role_arn"]
152
249
  raise Errors::NoSourceProfileError.new(
153
250
  "Profile #{profile} has a role_arn, but no source_profile."
@@ -160,6 +257,23 @@ module Aws
160
257
  end
161
258
  end
162
259
 
260
+ def credentials_from_source(credential_source, config)
261
+ case credential_source
262
+ when "Ec2InstanceMetadata"
263
+ InstanceProfileCredentials.new(
264
+ retries: config ? config.instance_profile_credentials_retries : 0,
265
+ http_open_timeout: config ? config.instance_profile_credentials_timeout : 1,
266
+ http_read_timeout: config ? config.instance_profile_credentials_timeout : 1
267
+ )
268
+ when "EcsContainer"
269
+ ECSCredentials.new
270
+ else
271
+ raise Errors::InvalidCredentialSourceError.new(
272
+ "Unsupported credential_source: #{credential_source}"
273
+ )
274
+ end
275
+ end
276
+
163
277
  def credentials_from_shared(profile, opts)
164
278
  if @parsed_credentials && prof_config = @parsed_credentials[profile]
165
279
  credentials_from_profile(prof_config)
@@ -204,11 +318,11 @@ module Aws
204
318
  end
205
319
 
206
320
  def determine_credentials_path
207
- default = default_shared_config_path('credentials')
321
+ ENV['AWS_SHARED_CREDENTIALS_FILE'] || default_shared_config_path('credentials')
208
322
  end
209
323
 
210
324
  def determine_config_path
211
- default = default_shared_config_path('config')
325
+ ENV['AWS_CONFIG_FILE'] || default_shared_config_path('config')
212
326
  end
213
327
 
214
328
  def default_shared_config_path(file)
@@ -1,3 +1,5 @@
1
+ require_relative 'ini_parser'
2
+
1
3
  module Aws
2
4
  class SharedCredentials
3
5
 
@@ -1,10 +1,6 @@
1
1
  module Aws
2
2
  # @api private
3
- class Structure < Struct
4
-
5
- if Struct.instance_methods.include?(:to_h)
6
- alias orig_to_h to_h
7
- end
3
+ module Structure
8
4
 
9
5
  def initialize(values = {})
10
6
  values.each do |k, v|
@@ -49,21 +45,35 @@ module Aws
49
45
  end
50
46
  alias to_hash to_h
51
47
 
52
- undef_method :each
48
+ # Wraps the default #to_s logic with filtering of sensitive parameters.
49
+ def to_s(obj = self)
50
+ Aws::Log::ParamFilter.new.filter(obj).to_s
51
+ end
53
52
 
54
53
  class << self
55
54
 
56
55
  # @api private
57
56
  def new(*args)
58
- if args == ['AwsEmptyStructure']
59
- super
60
- elsif args.empty? || args.first == []
61
- EmptyStructure
57
+ if args.empty?
58
+ Aws::EmptyStructure
62
59
  else
63
- super(*args)
60
+ struct = Struct.new(*args)
61
+ struct.send(:include, Aws::Structure)
62
+ struct
64
63
  end
65
64
  end
66
65
 
66
+ # @api private
67
+ def self.included(base_class)
68
+ base_class.send(:undef_method, :each)
69
+ end
70
+
67
71
  end
68
72
  end
73
+
74
+ # @api private
75
+ class EmptyStructure < Struct.new('AwsEmptyStructure')
76
+ include(Aws::Structure)
77
+ end
78
+
69
79
  end
@@ -27,7 +27,7 @@ module Aws
27
27
  def member_value(ref, value)
28
28
  case ref.shape
29
29
  when StructureShape
30
- apply_data_to_struct(ref, value, ref[:struct_class].new)
30
+ apply_data_to_struct(ref, value, ref.shape.struct_class.new)
31
31
  when ListShape
32
32
  value.inject([]) do |list, v|
33
33
  list << member_value(ref.shape.member, v)
@@ -11,7 +11,11 @@ module Aws
11
11
 
12
12
  # @return [Structure]
13
13
  def stub
14
- stub_ref(@rules)
14
+ if @rules
15
+ stub_ref(@rules)
16
+ else
17
+ EmptyStructure.new
18
+ end
15
19
  end
16
20
 
17
21
  private
@@ -31,8 +35,11 @@ module Aws
31
35
  end
32
36
 
33
37
  def stub_structure(ref, visited)
34
- ref.shape.members.inject(ref[:struct_class].new) do |struct, (mname, mref)|
35
- struct[mname] = stub_ref(mref, visited)
38
+ ref.shape.members.inject(ref.shape.struct_class.new) do |struct, (mname, mref)|
39
+ # For eventstream shape, it returns an Enumerator
40
+ unless mref.eventstream
41
+ struct[mname] = stub_ref(mref, visited)
42
+ end
36
43
  struct
37
44
  end
38
45
  end