awscli 1.40.17__py3-none-any.whl → 1.44.26__py3-none-any.whl

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 (401) hide show
  1. awscli/__init__.py +1 -1
  2. awscli/alias.py +3 -3
  3. awscli/argprocess.py +7 -2
  4. awscli/arguments.py +1 -1
  5. awscli/bcdoc/docevents.py +3 -0
  6. awscli/clidocs.py +19 -2
  7. awscli/clidriver.py +57 -10
  8. awscli/compat.py +11 -0
  9. awscli/customizations/argrename.py +1 -3
  10. awscli/customizations/cliinputjson.py +4 -0
  11. awscli/customizations/cloudformation/deploy.py +23 -6
  12. awscli/customizations/cloudformation/deployer.py +2 -2
  13. awscli/customizations/cloudformation/package.py +3 -2
  14. awscli/customizations/cloudfront.py +3 -1
  15. awscli/customizations/cloudtrail/subscribe.py +5 -5
  16. awscli/customizations/cloudtrail/validation.py +32 -11
  17. awscli/customizations/codecommit.py +2 -3
  18. awscli/customizations/codedeploy/deregister.py +5 -2
  19. awscli/customizations/codedeploy/push.py +7 -6
  20. awscli/customizations/codedeploy/register.py +5 -2
  21. awscli/customizations/codedeploy/systems.py +3 -1
  22. awscli/customizations/commands.py +2 -1
  23. awscli/customizations/configservice/getstatus.py +3 -3
  24. awscli/customizations/datapipeline/__init__.py +7 -4
  25. awscli/customizations/datapipeline/createdefaultroles.py +4 -2
  26. awscli/customizations/dlm/createdefaultrole.py +4 -2
  27. awscli/customizations/ec2/bundleinstance.py +2 -1
  28. awscli/customizations/eks/get_token.py +6 -4
  29. awscli/customizations/eks/update_kubeconfig.py +15 -3
  30. awscli/customizations/emr/argumentschema.py +355 -344
  31. awscli/customizations/emr/createcluster.py +520 -282
  32. awscli/customizations/emr/emrutils.py +83 -50
  33. awscli/customizations/emr/helptext.py +132 -74
  34. awscli/customizations/emr/steputils.py +92 -52
  35. awscli/customizations/gamelift/getlog.py +3 -2
  36. awscli/customizations/gamelift/uploadbuild.py +30 -15
  37. awscli/customizations/globalargs.py +169 -0
  38. awscli/customizations/logs/startlivetail.py +3 -3
  39. awscli/customizations/paginate.py +66 -1
  40. awscli/customizations/rds.py +3 -1
  41. awscli/customizations/removals.py +4 -0
  42. awscli/customizations/s3/filegenerator.py +7 -1
  43. awscli/customizations/s3/fileinfo.py +5 -1
  44. awscli/customizations/s3/fileinfobuilder.py +7 -0
  45. awscli/customizations/s3/s3handler.py +11 -0
  46. awscli/customizations/s3/subcommands.py +147 -6
  47. awscli/customizations/s3/syncstrategy/base.py +9 -0
  48. awscli/customizations/s3/syncstrategy/caseconflict.py +96 -0
  49. awscli/customizations/s3/utils.py +25 -0
  50. awscli/customizations/s3uploader.py +18 -8
  51. awscli/customizations/scalarparse.py +48 -9
  52. awscli/customizations/utils.py +2 -1
  53. awscli/customizations/waiters.py +3 -2
  54. awscli/data/cli.json +5 -0
  55. awscli/examples/apigateway/update-vpc-link.rst +47 -0
  56. awscli/examples/apigatewayv2/create-routing-rule.rst +52 -0
  57. awscli/examples/apigatewayv2/delete-routing-rule.rst +11 -0
  58. awscli/examples/apigatewayv2/get-routing-rule.rst +35 -0
  59. awscli/examples/apigatewayv2/list-routing-rules.rst +38 -0
  60. awscli/examples/apigatewayv2/put-routing-rule.rst +52 -0
  61. awscli/examples/application-signals/batch-get-service-level-objective-budget-report.rst +99 -0
  62. awscli/examples/application-signals/create-service-level-objective.rst +88 -0
  63. awscli/examples/application-signals/delete-service-level-objective.rst +10 -0
  64. awscli/examples/application-signals/get-service-level-objective.rst +53 -0
  65. awscli/examples/application-signals/get-service.rst +72 -0
  66. awscli/examples/application-signals/list-service-dependencies.rst +96 -0
  67. awscli/examples/application-signals/list-service-dependents.rst +36 -0
  68. awscli/examples/application-signals/list-service-level-objectives.rst +17 -0
  69. awscli/examples/application-signals/list-service-operations.rst +63 -0
  70. awscli/examples/application-signals/list-services.rst +61 -0
  71. awscli/examples/application-signals/list-tags-for-resource.rst +17 -0
  72. awscli/examples/application-signals/start-discovery.rst +9 -0
  73. awscli/examples/application-signals/tag-resource.rst +11 -0
  74. awscli/examples/application-signals/untag-resource.rst +11 -0
  75. awscli/examples/application-signals/update-service-level-objective.rst +69 -0
  76. awscli/examples/cloudformation/_package_description.rst +4 -4
  77. awscli/examples/cloudformation/create-generated-template.rst +50 -0
  78. awscli/examples/cloudformation/create-stack-refactor.rst +16 -0
  79. awscli/examples/cloudformation/delete-generated-template.rst +10 -0
  80. awscli/examples/cloudformation/describe-generated-template.rst +62 -0
  81. awscli/examples/cloudformation/describe-resource-scan.rst +38 -0
  82. awscli/examples/cloudformation/describe-stack-refactor.rst +20 -0
  83. awscli/examples/cloudformation/execute-stack-refactor.rst +10 -0
  84. awscli/examples/cloudformation/list-generated-templates.rst +41 -0
  85. awscli/examples/cloudformation/list-resource-scan-related-resources.rst +47 -0
  86. awscli/examples/cloudformation/list-resource-scan-resources.rst +30 -0
  87. awscli/examples/cloudformation/list-stack-refactor-actions.rst +71 -0
  88. awscli/examples/cloudformation/start-resource-scan.rst +14 -0
  89. awscli/examples/cloudfront/associate-distribution-tenant-web-acl.rst +18 -0
  90. awscli/examples/cloudfront/associate-distribution-web-acl.rst +18 -0
  91. awscli/examples/cloudfront/create-connection-group.rst +39 -0
  92. awscli/examples/cloudfront/create-distribution-tenant.rst +275 -0
  93. awscli/examples/cloudfront/create-distribution.rst +625 -235
  94. awscli/examples/cloudfront/create-invalidation-for-distribution-tenant.rst +29 -0
  95. awscli/examples/cloudfront/delete-connection-group.rst +11 -0
  96. awscli/examples/cloudfront/delete-distribution-tenant.rst +11 -0
  97. awscli/examples/cloudfront/disassociate-distribution-tenant-web-acl.rst +16 -0
  98. awscli/examples/cloudfront/disassociate-distribution-web-acl.rst +16 -0
  99. awscli/examples/cloudfront/get-connection-group-by-routing-endpoint.rst +26 -0
  100. awscli/examples/cloudfront/get-connection-group.rst +26 -0
  101. awscli/examples/cloudfront/get-distribution-tenant-by-domain.rst +37 -0
  102. awscli/examples/cloudfront/get-distribution-tenant.rst +31 -0
  103. awscli/examples/cloudfront/get-invalidation-for-distribution-tenant.rst +29 -0
  104. awscli/examples/cloudfront/get-managed-certificate-details.rst +25 -0
  105. awscli/examples/cloudfront/list-connection-groups.rst +38 -0
  106. awscli/examples/cloudfront/list-distribution-tenants-by-customization.rst +45 -0
  107. awscli/examples/cloudfront/list-distribution-tenants.rst +90 -0
  108. awscli/examples/cloudfront/list-distributions-by-connection-mode.rst +115 -0
  109. awscli/examples/cloudfront/list-domain-conflicts.rst +22 -0
  110. awscli/examples/cloudfront/list-invalidations-for-distribution-tenant.rst +22 -0
  111. awscli/examples/cloudfront/update-connection-group.rst +29 -0
  112. awscli/examples/cloudfront/update-distribution-tenant.rst +76 -0
  113. awscli/examples/cloudfront/update-domain-association.rst +18 -0
  114. awscli/examples/cloudfront/verify-dns-configuration.rst +20 -0
  115. awscli/examples/ec2/associate-ipam-resource-discovery.rst +1 -1
  116. awscli/examples/ec2/authorize-security-group-ingress.rst +1 -1
  117. awscli/examples/ec2/create-ipam-resource-discovery.rst +1 -1
  118. awscli/examples/ec2/delete-ipam-pool.rst +1 -1
  119. awscli/examples/ec2/describe-addresses-attribute.rst +1 -1
  120. awscli/examples/ec2/get-ipam-discovered-public-addresses.rst +1 -1
  121. awscli/examples/ec2/modify-ipam-resource-discovery.rst +1 -1
  122. awscli/examples/ec2/modify-ipam-scope.rst +1 -1
  123. awscli/examples/ec2/release-ipam-pool-allocation.rst +3 -3
  124. awscli/examples/eks/associate-access-policy.rst +29 -0
  125. awscli/examples/eks/create-access-entry.rst +54 -0
  126. awscli/examples/eks/create-pod-identity-association.rst +59 -0
  127. awscli/examples/eks/delete-access-entry.rst +11 -0
  128. awscli/examples/eks/delete-pod-identity-association.rst +28 -0
  129. awscli/examples/eks/describe-access-entry.rst +25 -0
  130. awscli/examples/eks/describe-insight.rst +36 -0
  131. awscli/examples/eks/describe-pod-identity-association.rst +28 -0
  132. awscli/examples/eks/disassociate-access-policy.rst +12 -0
  133. awscli/examples/eks/list-access-entries.rst +19 -0
  134. awscli/examples/eks/list-access-policies.rst +90 -0
  135. awscli/examples/eks/list-associated-access-policies.rst +27 -0
  136. awscli/examples/eks/list-insights.rst +67 -0
  137. awscli/examples/eks/list-pod-identity-associations.rst +61 -0
  138. awscli/examples/eks/update-access-entry.rst +28 -0
  139. awscli/examples/eks/update-pod-identity-association.rst +29 -0
  140. awscli/examples/elbv2/modify-listener.rst +95 -86
  141. awscli/examples/emr/create-cluster-synopsis.txt +1 -0
  142. awscli/examples/global_options.rst +4 -0
  143. awscli/examples/global_synopsis.rst +1 -0
  144. awscli/examples/guardduty/update-detector.rst +23 -0
  145. awscli/examples/ivs-realtime/create-stage.rst +6 -3
  146. awscli/examples/ivs-realtime/get-composition.rst +7 -4
  147. awscli/examples/ivs-realtime/get-participant.rst +99 -31
  148. awscli/examples/ivs-realtime/get-stage.rst +3 -2
  149. awscli/examples/ivs-realtime/list-participant-events.rst +54 -2
  150. awscli/examples/ivs-realtime/list-participant-replicas.rst +24 -0
  151. awscli/examples/ivs-realtime/list-participants.rst +61 -3
  152. awscli/examples/ivs-realtime/start-composition.rst +88 -3
  153. awscli/examples/ivs-realtime/start-participant-replication.rst +24 -0
  154. awscli/examples/ivs-realtime/stop-participant-replication.rst +24 -0
  155. awscli/examples/ivs-realtime/update-stage.rst +51 -3
  156. awscli/examples/kms/create-key.rst +42 -7
  157. awscli/examples/kms/delete-imported-key-material.rst +8 -2
  158. awscli/examples/kms/describe-key.rst +2 -0
  159. awscli/examples/kms/disable-key.rst +1 -1
  160. awscli/examples/kms/generate-data-key-pair-without-plaintext.rst +1 -0
  161. awscli/examples/kms/generate-data-key-pair.rst +1 -0
  162. awscli/examples/kms/generate-data-key-without-plaintext.rst +2 -1
  163. awscli/examples/kms/generate-data-key.rst +5 -4
  164. awscli/examples/kms/generate-mac.rst +45 -0
  165. awscli/examples/kms/generate-random.rst +1 -1
  166. awscli/examples/kms/get-public-key.rst +2 -3
  167. awscli/examples/kms/import-key-material.rst +6 -1
  168. awscli/examples/kms/re-encrypt.rst +3 -3
  169. awscli/examples/kms/sign.rst +1 -1
  170. awscli/examples/kms/verify-mac.rst +27 -0
  171. awscli/examples/kms/verify.rst +5 -1
  172. awscli/examples/lambda/create-function.rst +4 -4
  173. awscli/examples/lambda/get-function.rst +3 -3
  174. awscli/examples/lambda/list-functions.rst +6 -6
  175. awscli/examples/medical-imaging/create-datastore.rst +19 -2
  176. awscli/examples/medical-imaging/get-datastore.rst +24 -1
  177. awscli/examples/networkmanager/get-vpc-attachment.rst +1 -1
  178. awscli/examples/omics/cancel-run.rst +1 -1
  179. awscli/examples/omics/create-run-group.rst +4 -2
  180. awscli/examples/omics/create-workflow.rst +1 -1
  181. awscli/examples/omics/delete-run-group.rst +1 -1
  182. awscli/examples/omics/delete-run.rst +1 -1
  183. awscli/examples/omics/delete-workflow.rst +1 -1
  184. awscli/examples/omics/get-run-group.rst +1 -1
  185. awscli/examples/omics/get-run-task.rst +1 -1
  186. awscli/examples/omics/get-run.rst +1 -1
  187. awscli/examples/omics/get-workflow.rst +1 -1
  188. awscli/examples/omics/list-run-groups.rst +1 -1
  189. awscli/examples/omics/list-run-tasks.rst +1 -1
  190. awscli/examples/omics/list-runs.rst +1 -1
  191. awscli/examples/omics/list-workflows.rst +1 -1
  192. awscli/examples/omics/start-run.rst +1 -2
  193. awscli/examples/omics/update-workflow.rst +1 -1
  194. awscli/examples/pi/create-performance-analysis-report.rst +17 -0
  195. awscli/examples/pi/delete-performance-analysis-report.rst +12 -0
  196. awscli/examples/pi/describe-dimension-keys.rst +33 -1
  197. awscli/examples/pi/get-dimension-key-details.rst +25 -0
  198. awscli/examples/pi/get-performance-analysis-report.rst +27 -0
  199. awscli/examples/pi/get-resource-metadata.rst +20 -0
  200. awscli/examples/pi/list-available-resource-dimensions.rst +48 -0
  201. awscli/examples/pi/list-available-resource-metrics.rst +29 -0
  202. awscli/examples/pi/list-performance-analysis-reports.rst +44 -0
  203. awscli/examples/pi/list-tags-for-resource.rst +20 -0
  204. awscli/examples/pi/tag-resource.rst +12 -0
  205. awscli/examples/pi/untag-resource.rst +12 -0
  206. awscli/examples/route53domains/get-domain-detail.rst +3 -3
  207. awscli/examples/securityhub/describe-hub.rst +6 -4
  208. awscli/examples/servicediscovery/create-service.rst +50 -10
  209. awscli/examples/servicediscovery/delete-namespace.rst +18 -4
  210. awscli/examples/servicediscovery/delete-service-attributes.rst +15 -3
  211. awscli/examples/servicediscovery/delete-service.rst +13 -3
  212. awscli/examples/servicediscovery/deregister-instance.rst +18 -2
  213. awscli/examples/servicediscovery/discover-instances-revision.rst +18 -1
  214. awscli/examples/servicediscovery/discover-instances.rst +32 -2
  215. awscli/examples/servicediscovery/get-instance.rst +30 -4
  216. awscli/examples/servicediscovery/get-instances-health-status.rst +19 -1
  217. awscli/examples/servicediscovery/get-namespace.rst +40 -9
  218. awscli/examples/servicediscovery/get-operation.rst +32 -6
  219. awscli/examples/servicediscovery/get-service-attributes.rst +25 -3
  220. awscli/examples/servicediscovery/get-service.rst +35 -7
  221. awscli/examples/servicediscovery/list-instances.rst +38 -3
  222. awscli/examples/servicediscovery/list-namespaces.rst +45 -22
  223. awscli/examples/servicediscovery/list-services.rst +30 -2
  224. awscli/examples/servicediscovery/register-instance.rst +18 -2
  225. awscli/examples/servicediscovery/update-http-namespace.rst +22 -5
  226. awscli/examples/servicediscovery/update-instance-custom-health-status.rst +14 -1
  227. awscli/examples/servicediscovery/update-private-dns-namespace.rst +22 -5
  228. awscli/examples/servicediscovery/update-public-dns-namespace.rst +22 -5
  229. awscli/examples/servicediscovery/update-service-attributes.rst +14 -2
  230. awscli/examples/servicediscovery/update-service.rst +20 -4
  231. awscli/examples/ssm/put-parameter.rst +6 -6
  232. awscli/examples/verifiedpermissions/update-policy.rst +10 -78
  233. awscli/examples/workspaces/describe-workspace-directories.rst +1 -2
  234. awscli/examples/workspaces/register-workspace-directory.rst +2 -3
  235. awscli/handlers.py +0 -4
  236. awscli/paramfile.py +21 -4
  237. awscli/testutils.py +22 -4
  238. awscli/topics/config-vars.rst +1 -1
  239. awscli/topics/s3-case-insensitivity.rst +105 -0
  240. awscli/topics/topic-tags.json +16 -0
  241. awscli/utils.py +33 -2
  242. {awscli-1.40.17.dist-info → awscli-1.44.26.dist-info}/METADATA +18 -3
  243. {awscli-1.40.17.dist-info → awscli-1.44.26.dist-info}/RECORD +251 -308
  244. awscli/customizations/opsworks.py +0 -543
  245. awscli/customizations/opsworkscm.py +0 -21
  246. awscli/examples/elastictranscoder/cancel-job.rst +0 -8
  247. awscli/examples/elastictranscoder/create-job.rst +0 -94
  248. awscli/examples/elastictranscoder/create-pipeline.rst +0 -94
  249. awscli/examples/elastictranscoder/create-preset.rst +0 -141
  250. awscli/examples/elastictranscoder/delete-pipeline.rst +0 -13
  251. awscli/examples/elastictranscoder/delete-preset.rst +0 -8
  252. awscli/examples/elastictranscoder/list-jobs-by-pipeline.rst +0 -13
  253. awscli/examples/elastictranscoder/list-jobs-by-status.rst +0 -14
  254. awscli/examples/elastictranscoder/list-pipelines.rst +0 -84
  255. awscli/examples/elastictranscoder/list-presets.rst +0 -95
  256. awscli/examples/elastictranscoder/read-job.rst +0 -65
  257. awscli/examples/elastictranscoder/read-pipeline.rst +0 -59
  258. awscli/examples/elastictranscoder/read-preset.rst +0 -100
  259. awscli/examples/elastictranscoder/update-pipeline-notifications.rst +0 -52
  260. awscli/examples/elastictranscoder/update-pipeline-status.rst +0 -53
  261. awscli/examples/elastictranscoder/update-pipeline.rst +0 -95
  262. awscli/examples/opsworks/assign-instance.rst +0 -14
  263. awscli/examples/opsworks/assign-volume.rst +0 -17
  264. awscli/examples/opsworks/associate-elastic-ip.rst +0 -14
  265. awscli/examples/opsworks/attach-elastic-load-balancer.rst +0 -14
  266. awscli/examples/opsworks/create-app.rst +0 -64
  267. awscli/examples/opsworks/create-deployment.rst +0 -66
  268. awscli/examples/opsworks/create-instance.rst +0 -25
  269. awscli/examples/opsworks/create-layer.rst +0 -17
  270. awscli/examples/opsworks/create-server.rst +0 -43
  271. awscli/examples/opsworks/create-stack.rst +0 -25
  272. awscli/examples/opsworks/create-user-profile.rst +0 -24
  273. awscli/examples/opsworks/delete-app.rst +0 -17
  274. awscli/examples/opsworks/delete-instance.rst +0 -15
  275. awscli/examples/opsworks/delete-layer.rst +0 -17
  276. awscli/examples/opsworks/delete-stack.rst +0 -18
  277. awscli/examples/opsworks/delete-user-profile.rst +0 -17
  278. awscli/examples/opsworks/deregister-elastic-ip.rst +0 -13
  279. awscli/examples/opsworks/deregister-instance.rst +0 -14
  280. awscli/examples/opsworks/deregister-rds-db-instance.rst +0 -20
  281. awscli/examples/opsworks/deregister-volume.rst +0 -15
  282. awscli/examples/opsworks/describe-apps.rst +0 -38
  283. awscli/examples/opsworks/describe-commands.rst +0 -43
  284. awscli/examples/opsworks/describe-deployments.rst +0 -52
  285. awscli/examples/opsworks/describe-elastic-ips.rst +0 -24
  286. awscli/examples/opsworks/describe-elastic-load-balancers.rst +0 -37
  287. awscli/examples/opsworks/describe-instances.rst +0 -95
  288. awscli/examples/opsworks/describe-layers.rst +0 -171
  289. awscli/examples/opsworks/describe-load-based-auto-scaling.rst +0 -37
  290. awscli/examples/opsworks/describe-my-user-profile.rst +0 -24
  291. awscli/examples/opsworks/describe-permissions.rst +0 -26
  292. awscli/examples/opsworks/describe-raid-arrays.rst +0 -31
  293. awscli/examples/opsworks/describe-rds-db-instances.rst +0 -29
  294. awscli/examples/opsworks/describe-stack-provisioning-parameters.rst +0 -32
  295. awscli/examples/opsworks/describe-stack-summary.rst +0 -27
  296. awscli/examples/opsworks/describe-stacks.rst +0 -65
  297. awscli/examples/opsworks/describe-timebased-auto-scaling.rst +0 -39
  298. awscli/examples/opsworks/describe-user-profiles.rst +0 -32
  299. awscli/examples/opsworks/describe-volumes.rst +0 -31
  300. awscli/examples/opsworks/detach-elastic-load-balancer.rst +0 -14
  301. awscli/examples/opsworks/disassociate-elastic-ip.rst +0 -14
  302. awscli/examples/opsworks/get-hostname-suggestion.rst +0 -21
  303. awscli/examples/opsworks/reboot-instance.rst +0 -14
  304. awscli/examples/opsworks/register-elastic-ip.rst +0 -19
  305. awscli/examples/opsworks/register-rds-db-instance.rst +0 -15
  306. awscli/examples/opsworks/register-volume.rst +0 -18
  307. awscli/examples/opsworks/register.rst +0 -105
  308. awscli/examples/opsworks/set-load-based-auto-scaling.rst +0 -38
  309. awscli/examples/opsworks/set-permission.rst +0 -23
  310. awscli/examples/opsworks/set-time-based-auto-scaling.rst +0 -33
  311. awscli/examples/opsworks/start-instance.rst +0 -20
  312. awscli/examples/opsworks/start-stack.rst +0 -15
  313. awscli/examples/opsworks/stop-instance.rst +0 -20
  314. awscli/examples/opsworks/stop-stack.rst +0 -15
  315. awscli/examples/opsworks/unassign-instance.rst +0 -14
  316. awscli/examples/opsworks/unassign-volume.rst +0 -16
  317. awscli/examples/opsworks/update-app.rst +0 -14
  318. awscli/examples/opsworks/update-elastic-ip.rst +0 -14
  319. awscli/examples/opsworks/update-instance.rst +0 -14
  320. awscli/examples/opsworks/update-layer.rst +0 -14
  321. awscli/examples/opsworks/update-my-user-profile.rst +0 -16
  322. awscli/examples/opsworks/update-rds-db-instance.rst +0 -18
  323. awscli/examples/opsworks/update-volume.rst +0 -16
  324. awscli/examples/opsworkscm/associate-node.rst +0 -22
  325. awscli/examples/opsworkscm/create-backup.rst +0 -46
  326. awscli/examples/opsworkscm/create-server.rst +0 -48
  327. awscli/examples/opsworkscm/delete-backup.rst +0 -17
  328. awscli/examples/opsworkscm/delete-server.rst +0 -16
  329. awscli/examples/opsworkscm/describe-account-attributes.rst +0 -26
  330. awscli/examples/opsworkscm/describe-backups.rst +0 -44
  331. awscli/examples/opsworkscm/describe-events.rst +0 -21
  332. awscli/examples/opsworkscm/describe-node-association-status.rst +0 -20
  333. awscli/examples/opsworkscm/describe-servers.rst +0 -48
  334. awscli/examples/opsworkscm/disassociate-node.rst +0 -19
  335. awscli/examples/opsworkscm/restore-server.rst +0 -20
  336. awscli/examples/opsworkscm/start-maintenance.rst +0 -39
  337. awscli/examples/opsworkscm/update-server-engine-attributes.rst +0 -43
  338. awscli/examples/opsworkscm/update-server.rst +0 -42
  339. awscli/examples/qldb/cancel-journal-kinesis-stream.rst +0 -15
  340. awscli/examples/qldb/create-ledger.rst +0 -43
  341. awscli/examples/qldb/delete-ledger.rst +0 -10
  342. awscli/examples/qldb/describe-journal-kinesis-stream.rst +0 -29
  343. awscli/examples/qldb/describe-journal-s3-export.rst +0 -30
  344. awscli/examples/qldb/describe-ledger.rst +0 -23
  345. awscli/examples/qldb/export-journal-to-s3.rst +0 -28
  346. awscli/examples/qldb/get-block.rst +0 -55
  347. awscli/examples/qldb/get-digest.rst +0 -17
  348. awscli/examples/qldb/get-revision.rst +0 -57
  349. awscli/examples/qldb/list-journal-kinesis-streams-for-ledger.rst +0 -30
  350. awscli/examples/qldb/list-journal-s3-exports-for-ledger.rst +0 -31
  351. awscli/examples/qldb/list-journal-s3-exports.rst +0 -46
  352. awscli/examples/qldb/list-ledgers.rst +0 -24
  353. awscli/examples/qldb/list-tags-for-resource.rst +0 -17
  354. awscli/examples/qldb/stream-journal-to-kinesis.rst +0 -46
  355. awscli/examples/qldb/tag-resource.rst +0 -11
  356. awscli/examples/qldb/untag-resource.rst +0 -11
  357. awscli/examples/qldb/update-ledger-permissions-mode.rst +0 -34
  358. awscli/examples/qldb/update-ledger.rst +0 -63
  359. awscli/examples/robomaker/batch-describe-simulation-job.rst +0 -150
  360. awscli/examples/robomaker/cancel-simulation-job.rst +0 -6
  361. awscli/examples/robomaker/create-deployment-job.rst +0 -37
  362. awscli/examples/robomaker/create-fleet.rst +0 -18
  363. awscli/examples/robomaker/create-robot-application-version.rst +0 -31
  364. awscli/examples/robomaker/create-robot-application.rst +0 -29
  365. awscli/examples/robomaker/create-robot.rst +0 -20
  366. awscli/examples/robomaker/create-simulation-application-version.rst +0 -39
  367. awscli/examples/robomaker/create-simulation-application.rst +0 -38
  368. awscli/examples/robomaker/create-simulation-job.rst +0 -43
  369. awscli/examples/robomaker/delete-fleet.rst +0 -7
  370. awscli/examples/robomaker/delete-robot-application.rst +0 -7
  371. awscli/examples/robomaker/delete-robot.rst +0 -7
  372. awscli/examples/robomaker/delete-simulation-application.rst +0 -7
  373. awscli/examples/robomaker/deregister-robot.rst +0 -14
  374. awscli/examples/robomaker/describe-deployment-job.rst +0 -38
  375. awscli/examples/robomaker/describe-fleet.rst +0 -28
  376. awscli/examples/robomaker/describe-robot-application.rst +0 -29
  377. awscli/examples/robomaker/describe-robot.rst +0 -21
  378. awscli/examples/robomaker/describe-simulation-application.rst +0 -37
  379. awscli/examples/robomaker/describe-simulation-job.rst +0 -45
  380. awscli/examples/robomaker/list-deployment-jobs.rst +0 -57
  381. awscli/examples/robomaker/list-fleets.rst +0 -22
  382. awscli/examples/robomaker/list-robot-applications.rst +0 -32
  383. awscli/examples/robomaker/list-robots.rst +0 -45
  384. awscli/examples/robomaker/list-simulation-applications.rst +0 -50
  385. awscli/examples/robomaker/list-simulation-jobs.rst +0 -80
  386. awscli/examples/robomaker/list-tags-for-resource.rst +0 -16
  387. awscli/examples/robomaker/register-robot.rst +0 -14
  388. awscli/examples/robomaker/restart-simulation-job.rst +0 -7
  389. awscli/examples/robomaker/sync-deployment-job.rst +0 -30
  390. awscli/examples/robomaker/tag-resource.rst +0 -7
  391. awscli/examples/robomaker/untag-resource.rst +0 -7
  392. awscli/examples/robomaker/update-robot-application.rst +0 -28
  393. awscli/examples/robomaker/update-simulation-application.rst +0 -36
  394. {awscli-1.40.17.data → awscli-1.44.26.data}/scripts/aws +0 -0
  395. {awscli-1.40.17.data → awscli-1.44.26.data}/scripts/aws.cmd +0 -0
  396. {awscli-1.40.17.data → awscli-1.44.26.data}/scripts/aws_bash_completer +0 -0
  397. {awscli-1.40.17.data → awscli-1.44.26.data}/scripts/aws_completer +0 -0
  398. {awscli-1.40.17.data → awscli-1.44.26.data}/scripts/aws_zsh_completer.sh +0 -0
  399. {awscli-1.40.17.dist-info → awscli-1.44.26.dist-info}/LICENSE.txt +0 -0
  400. {awscli-1.40.17.dist-info → awscli-1.44.26.dist-info}/WHEEL +0 -0
  401. {awscli-1.40.17.dist-info → awscli-1.44.26.dist-info}/top_level.txt +0 -0
@@ -11,9 +11,7 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- from awscli.customizations.emr import emrutils
15
- from awscli.customizations.emr import constants
16
- from awscli.customizations.emr import exceptions
14
+ from awscli.customizations.emr import constants, emrutils, exceptions
17
15
 
18
16
 
19
17
  def build_step_config_list(parsed_step_list, region, release_label):
@@ -29,23 +27,24 @@ def build_step_config_list(parsed_step_list, region, release_label):
29
27
  step_config = build_custom_jar_step(parsed_step=step)
30
28
  elif step_type == constants.STREAMING:
31
29
  step_config = build_streaming_step(
32
- parsed_step=step, release_label=release_label)
30
+ parsed_step=step, release_label=release_label
31
+ )
33
32
  elif step_type == constants.HIVE:
34
33
  step_config = build_hive_step(
35
- parsed_step=step, region=region,
36
- release_label=release_label)
34
+ parsed_step=step, region=region, release_label=release_label
35
+ )
37
36
  elif step_type == constants.PIG:
38
37
  step_config = build_pig_step(
39
- parsed_step=step, region=region,
40
- release_label=release_label)
38
+ parsed_step=step, region=region, release_label=release_label
39
+ )
41
40
  elif step_type == constants.IMPALA:
42
41
  step_config = build_impala_step(
43
- parsed_step=step, region=region,
44
- release_label=release_label)
42
+ parsed_step=step, region=region, release_label=release_label
43
+ )
45
44
  elif step_type == constants.SPARK:
46
45
  step_config = build_spark_step(
47
- parsed_step=step, region=region,
48
- release_label=release_label)
46
+ parsed_step=step, region=region, release_label=release_label
47
+ )
49
48
  else:
50
49
  raise exceptions.UnknownStepTypeError(step_type=step_type)
51
50
 
@@ -57,14 +56,17 @@ def build_step_config_list(parsed_step_list, region, release_label):
57
56
  def build_custom_jar_step(parsed_step):
58
57
  name = _apply_default_value(
59
58
  arg=parsed_step.get('Name'),
60
- value=constants.DEFAULT_CUSTOM_JAR_STEP_NAME)
59
+ value=constants.DEFAULT_CUSTOM_JAR_STEP_NAME,
60
+ )
61
61
  action_on_failure = _apply_default_value(
62
62
  arg=parsed_step.get('ActionOnFailure'),
63
- value=constants.DEFAULT_FAILURE_ACTION)
63
+ value=constants.DEFAULT_FAILURE_ACTION,
64
+ )
64
65
  emrutils.check_required_field(
65
66
  structure=constants.CUSTOM_JAR_STEP_CONFIG,
66
67
  name='Jar',
67
- value=parsed_step.get('Jar'))
68
+ value=parsed_step.get('Jar'),
69
+ )
68
70
  return emrutils.build_step(
69
71
  jar=parsed_step.get('Jar'),
70
72
  args=parsed_step.get('Args'),
@@ -72,22 +74,27 @@ def build_custom_jar_step(parsed_step):
72
74
  action_on_failure=action_on_failure,
73
75
  main_class=parsed_step.get('MainClass'),
74
76
  properties=emrutils.parse_key_value_string(
75
- parsed_step.get('Properties')))
77
+ parsed_step.get('Properties')
78
+ ),
79
+ log_uri=parsed_step.get('LogUri'),
80
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
81
+ )
76
82
 
77
83
 
78
84
  def build_streaming_step(parsed_step, release_label):
79
85
  name = _apply_default_value(
80
86
  arg=parsed_step.get('Name'),
81
- value=constants.DEFAULT_STREAMING_STEP_NAME)
87
+ value=constants.DEFAULT_STREAMING_STEP_NAME,
88
+ )
82
89
  action_on_failure = _apply_default_value(
83
90
  arg=parsed_step.get('ActionOnFailure'),
84
- value=constants.DEFAULT_FAILURE_ACTION)
91
+ value=constants.DEFAULT_FAILURE_ACTION,
92
+ )
85
93
 
86
94
  args = parsed_step.get('Args')
87
95
  emrutils.check_required_field(
88
- structure=constants.STREAMING_STEP_CONFIG,
89
- name='Args',
90
- value=args)
96
+ structure=constants.STREAMING_STEP_CONFIG, name='Args', value=args
97
+ )
91
98
  emrutils.check_empty_string_list(name='Args', value=args)
92
99
  args_list = []
93
100
 
@@ -103,27 +110,34 @@ def build_streaming_step(parsed_step, release_label):
103
110
  jar=jar,
104
111
  args=args_list,
105
112
  name=name,
106
- action_on_failure=action_on_failure)
113
+ action_on_failure=action_on_failure,
114
+ log_uri=parsed_step.get('LogUri'),
115
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
116
+ )
107
117
 
108
118
 
109
119
  def build_hive_step(parsed_step, release_label, region=None):
110
120
  args = parsed_step.get('Args')
111
121
  emrutils.check_required_field(
112
- structure=constants.HIVE_STEP_CONFIG, name='Args', value=args)
122
+ structure=constants.HIVE_STEP_CONFIG, name='Args', value=args
123
+ )
113
124
  emrutils.check_empty_string_list(name='Args', value=args)
114
125
  name = _apply_default_value(
115
- arg=parsed_step.get('Name'),
116
- value=constants.DEFAULT_HIVE_STEP_NAME)
117
- action_on_failure = \
118
- _apply_default_value(
119
- arg=parsed_step.get('ActionOnFailure'),
120
- value=constants.DEFAULT_FAILURE_ACTION)
126
+ arg=parsed_step.get('Name'), value=constants.DEFAULT_HIVE_STEP_NAME
127
+ )
128
+ action_on_failure = _apply_default_value(
129
+ arg=parsed_step.get('ActionOnFailure'),
130
+ value=constants.DEFAULT_FAILURE_ACTION,
131
+ )
121
132
 
122
133
  return emrutils.build_step(
123
134
  jar=_get_runner_jar(release_label, region),
124
135
  args=_build_hive_args(args, release_label, region),
125
136
  name=name,
126
- action_on_failure=action_on_failure)
137
+ action_on_failure=action_on_failure,
138
+ log_uri=parsed_step.get('LogUri'),
139
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
140
+ )
127
141
 
128
142
 
129
143
  def _build_hive_args(args, release_label, region):
@@ -131,8 +145,11 @@ def _build_hive_args(args, release_label, region):
131
145
  if release_label:
132
146
  args_list.append(constants.HIVE_SCRIPT_COMMAND)
133
147
  else:
134
- args_list.append(emrutils.build_s3_link(
135
- relative_path=constants.HIVE_SCRIPT_PATH, region=region))
148
+ args_list.append(
149
+ emrutils.build_s3_link(
150
+ relative_path=constants.HIVE_SCRIPT_PATH, region=region
151
+ )
152
+ )
136
153
 
137
154
  args_list.append(constants.RUN_HIVE_SCRIPT)
138
155
 
@@ -149,20 +166,25 @@ def _build_hive_args(args, release_label, region):
149
166
  def build_pig_step(parsed_step, release_label, region=None):
150
167
  args = parsed_step.get('Args')
151
168
  emrutils.check_required_field(
152
- structure=constants.PIG_STEP_CONFIG, name='Args', value=args)
169
+ structure=constants.PIG_STEP_CONFIG, name='Args', value=args
170
+ )
153
171
  emrutils.check_empty_string_list(name='Args', value=args)
154
172
  name = _apply_default_value(
155
- arg=parsed_step.get('Name'),
156
- value=constants.DEFAULT_PIG_STEP_NAME)
173
+ arg=parsed_step.get('Name'), value=constants.DEFAULT_PIG_STEP_NAME
174
+ )
157
175
  action_on_failure = _apply_default_value(
158
176
  arg=parsed_step.get('ActionOnFailure'),
159
- value=constants.DEFAULT_FAILURE_ACTION)
177
+ value=constants.DEFAULT_FAILURE_ACTION,
178
+ )
160
179
 
161
180
  return emrutils.build_step(
162
181
  jar=_get_runner_jar(release_label, region),
163
182
  args=_build_pig_args(args, release_label, region),
164
183
  name=name,
165
- action_on_failure=action_on_failure)
184
+ action_on_failure=action_on_failure,
185
+ log_uri=parsed_step.get('LogUri'),
186
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
187
+ )
166
188
 
167
189
 
168
190
  def _build_pig_args(args, release_label, region):
@@ -170,8 +192,11 @@ def _build_pig_args(args, release_label, region):
170
192
  if release_label:
171
193
  args_list.append(constants.PIG_SCRIPT_COMMAND)
172
194
  else:
173
- args_list.append(emrutils.build_s3_link(
174
- relative_path=constants.PIG_SCRIPT_PATH, region=region))
195
+ args_list.append(
196
+ emrutils.build_s3_link(
197
+ relative_path=constants.PIG_SCRIPT_PATH, region=region
198
+ )
199
+ )
175
200
 
176
201
  args_list.append(constants.RUN_PIG_SCRIPT)
177
202
 
@@ -189,43 +214,55 @@ def build_impala_step(parsed_step, release_label, region=None):
189
214
  if release_label:
190
215
  raise exceptions.UnknownStepTypeError(step_type=constants.IMPALA)
191
216
  name = _apply_default_value(
192
- arg=parsed_step.get('Name'),
193
- value=constants.DEFAULT_IMPALA_STEP_NAME)
217
+ arg=parsed_step.get('Name'), value=constants.DEFAULT_IMPALA_STEP_NAME
218
+ )
194
219
  action_on_failure = _apply_default_value(
195
220
  arg=parsed_step.get('ActionOnFailure'),
196
- value=constants.DEFAULT_FAILURE_ACTION)
221
+ value=constants.DEFAULT_FAILURE_ACTION,
222
+ )
197
223
  args_list = [
198
224
  emrutils.build_s3_link(
199
- relative_path=constants.IMPALA_INSTALL_PATH, region=region),
200
- constants.RUN_IMPALA_SCRIPT]
225
+ relative_path=constants.IMPALA_INSTALL_PATH, region=region
226
+ ),
227
+ constants.RUN_IMPALA_SCRIPT,
228
+ ]
201
229
  args = parsed_step.get('Args')
202
230
  emrutils.check_required_field(
203
- structure=constants.IMPALA_STEP_CONFIG, name='Args', value=args)
231
+ structure=constants.IMPALA_STEP_CONFIG, name='Args', value=args
232
+ )
204
233
  args_list += args
205
234
 
206
235
  return emrutils.build_step(
207
236
  jar=emrutils.get_script_runner(region),
208
237
  args=args_list,
209
238
  name=name,
210
- action_on_failure=action_on_failure)
239
+ action_on_failure=action_on_failure,
240
+ log_uri=parsed_step.get('LogUri'),
241
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
242
+ )
211
243
 
212
244
 
213
245
  def build_spark_step(parsed_step, release_label, region=None):
214
246
  name = _apply_default_value(
215
- arg=parsed_step.get('Name'),
216
- value=constants.DEFAULT_SPARK_STEP_NAME)
247
+ arg=parsed_step.get('Name'), value=constants.DEFAULT_SPARK_STEP_NAME
248
+ )
217
249
  action_on_failure = _apply_default_value(
218
250
  arg=parsed_step.get('ActionOnFailure'),
219
- value=constants.DEFAULT_FAILURE_ACTION)
251
+ value=constants.DEFAULT_FAILURE_ACTION,
252
+ )
220
253
  args = parsed_step.get('Args')
221
254
  emrutils.check_required_field(
222
- structure=constants.SPARK_STEP_CONFIG, name='Args', value=args)
255
+ structure=constants.SPARK_STEP_CONFIG, name='Args', value=args
256
+ )
223
257
 
224
258
  return emrutils.build_step(
225
259
  jar=_get_runner_jar(release_label, region),
226
260
  args=_build_spark_args(args, release_label, region),
227
261
  name=name,
228
- action_on_failure=action_on_failure)
262
+ action_on_failure=action_on_failure,
263
+ log_uri=parsed_step.get('LogUri'),
264
+ encryption_key_arn=parsed_step.get('EncryptionKeyArn'),
265
+ )
229
266
 
230
267
 
231
268
  def _build_spark_args(args, release_label, region):
@@ -247,5 +284,8 @@ def _apply_default_value(arg, value):
247
284
 
248
285
 
249
286
  def _get_runner_jar(release_label, region):
250
- return constants.COMMAND_RUNNER if release_label \
287
+ return (
288
+ constants.COMMAND_RUNNER
289
+ if release_label
251
290
  else emrutils.get_script_runner(region)
291
+ )
@@ -15,6 +15,7 @@ from functools import partial
15
15
 
16
16
  from awscli.compat import urlopen
17
17
  from awscli.customizations.commands import BasicCommand
18
+ from awscli.utils import create_nested_client
18
19
 
19
20
 
20
21
  class GetGameSessionLogCommand(BasicCommand):
@@ -28,8 +29,8 @@ class GetGameSessionLogCommand(BasicCommand):
28
29
  ]
29
30
 
30
31
  def _run_main(self, args, parsed_globals):
31
- client = self._session.create_client(
32
- 'gamelift', region_name=parsed_globals.region,
32
+ client = create_nested_client(
33
+ self._session, 'gamelift', region_name=parsed_globals.region,
33
34
  endpoint_url=parsed_globals.endpoint_url,
34
35
  verify=parsed_globals.verify_ssl
35
36
  )
@@ -21,6 +21,20 @@ from s3transfer import S3Transfer
21
21
 
22
22
  from awscli.customizations.commands import BasicCommand
23
23
  from awscli.customizations.s3.utils import human_readable_size
24
+ from awscli.utils import create_nested_client
25
+
26
+
27
+ def parse_tags(raw_tags_list):
28
+ """Parse tags from Key=Value format to GameLift API format."""
29
+ tags_list = []
30
+ if raw_tags_list:
31
+ for tag in raw_tags_list:
32
+ if '=' in tag:
33
+ key, value = tag.split('=', 1)
34
+ else:
35
+ key, value = tag, ''
36
+ tags_list.append({'Key': key, 'Value': value})
37
+ return tags_list
24
38
 
25
39
 
26
40
  class UploadBuildCommand(BasicCommand):
@@ -39,21 +53,22 @@ class UploadBuildCommand(BasicCommand):
39
53
  'The version of the GameLift server SDK used to '
40
54
  'create the game server'},
41
55
  {'name': 'operating-system', 'required': False,
42
- 'help_text': 'The operating system the build runs on'}
56
+ 'help_text': 'The operating system the build runs on'},
57
+ {'name': 'tags', 'required': False, 'nargs': '+',
58
+ 'help_text': 'Tags to assign to the build. Format: Key=Value'}
43
59
  ]
44
60
 
45
61
  def _run_main(self, args, parsed_globals):
46
- gamelift_client = self._session.create_client(
47
- 'gamelift', region_name=parsed_globals.region,
62
+ gamelift_client = create_nested_client(
63
+ self._session, 'gamelift', region_name=parsed_globals.region,
48
64
  endpoint_url=parsed_globals.endpoint_url,
49
65
  verify=parsed_globals.verify_ssl
50
66
  )
51
67
  # Validate a build directory
52
68
  if not validate_directory(args.build_root):
53
69
  sys.stderr.write(
54
- 'Fail to upload %s. '
70
+ f'Fail to upload {args.build_root}. '
55
71
  'The build root directory is empty or does not exist.\n'
56
- % (args.build_root)
57
72
  )
58
73
 
59
74
  return 255
@@ -66,6 +81,8 @@ class UploadBuildCommand(BasicCommand):
66
81
  create_build_kwargs['OperatingSystem'] = args.operating_system
67
82
  if args.server_sdk_version:
68
83
  create_build_kwargs['ServerSdkVersion'] = args.server_sdk_version
84
+ if args.tags:
85
+ create_build_kwargs['Tags'] = parse_tags(args.tags)
69
86
  response = gamelift_client.create_build(**create_build_kwargs)
70
87
  build_id = response['Build']['BuildId']
71
88
 
@@ -81,8 +98,9 @@ class UploadBuildCommand(BasicCommand):
81
98
  access_key = upload_credentials['AccessKeyId']
82
99
  secret_key = upload_credentials['SecretAccessKey']
83
100
  session_token = upload_credentials['SessionToken']
84
- s3_client = self._session.create_client(
85
- 's3', aws_access_key_id=access_key,
101
+ s3_client = create_nested_client(
102
+ self._session, 's3',
103
+ aws_access_key_id=access_key,
86
104
  aws_secret_access_key=secret_key,
87
105
  aws_session_token=session_token,
88
106
  region_name=parsed_globals.region,
@@ -92,7 +110,7 @@ class UploadBuildCommand(BasicCommand):
92
110
  s3_transfer_mgr = S3Transfer(s3_client)
93
111
 
94
112
  try:
95
- fd, temporary_zipfile = tempfile.mkstemp('%s.zip' % build_id)
113
+ fd, temporary_zipfile = tempfile.mkstemp(f'{build_id}.zip')
96
114
  zip_directory(temporary_zipfile, args.build_root)
97
115
  s3_transfer_mgr.upload_file(
98
116
  temporary_zipfile, bucket, key,
@@ -106,8 +124,8 @@ class UploadBuildCommand(BasicCommand):
106
124
  os.remove(temporary_zipfile)
107
125
 
108
126
  sys.stdout.write(
109
- 'Successfully uploaded %s to AWS GameLift\n'
110
- 'Build ID: %s\n' % (args.build_root, build_id))
127
+ f'Successfully uploaded {args.build_root} to AWS GameLift\n'
128
+ f'Build ID: {build_id}\n')
111
129
 
112
130
  return 0
113
131
 
@@ -140,7 +158,7 @@ def validate_directory(source_root):
140
158
 
141
159
  # TODO: Remove this class once available to CLI from s3transfer
142
160
  # docstring.
143
- class ProgressPercentage(object):
161
+ class ProgressPercentage:
144
162
  def __init__(self, filename, label=None):
145
163
  self._filename = filename
146
164
  self._label = label
@@ -156,9 +174,6 @@ class ProgressPercentage(object):
156
174
  if self._size > 0:
157
175
  percentage = (self._seen_so_far / self._size) * 100
158
176
  sys.stdout.write(
159
- "\r%s %s / %s (%.2f%%)" % (
160
- self._label, human_readable_size(self._seen_so_far),
161
- human_readable_size(self._size), percentage
162
- )
177
+ f"\r{self._label} {human_readable_size(self._seen_so_far)} / {human_readable_size(self._size)} ({percentage:.2f}%)"
163
178
  )
164
179
  sys.stdout.flush()
@@ -12,12 +12,18 @@
12
12
  # language governing permissions and limitations under the License.
13
13
  import sys
14
14
  import os
15
+
16
+ from awscli.customizations.argrename import HIDDEN_ALIASES
17
+ from awscli.customizations.utils import uni_print
15
18
  from botocore.client import Config
16
19
  from botocore import UNSIGNED
17
20
  from botocore.endpoint import DEFAULT_TIMEOUT
21
+ from botocore.useragent import register_feature_id
18
22
  import jmespath
19
23
 
20
24
  from awscli.compat import urlparse
25
+ from awscli.utils import resolve_v2_debug_mode
26
+
21
27
 
22
28
  def register_parse_global_args(cli):
23
29
  cli.register('top-level-args-parsed', resolve_types,
@@ -30,6 +36,8 @@ def register_parse_global_args(cli):
30
36
  unique_id='resolve-cli-read-timeout')
31
37
  cli.register('top-level-args-parsed', resolve_cli_connect_timeout,
32
38
  unique_id='resolve-cli-connect-timeout')
39
+ cli.register('top-level-args-parsed', detect_migration_breakage,
40
+ unique_id='detect-migration-breakage')
33
41
 
34
42
 
35
43
  def resolve_types(parsed_args, **kwargs):
@@ -90,6 +98,167 @@ def resolve_cli_connect_timeout(parsed_args, session, **kwargs):
90
98
  arg_name = 'connect_timeout'
91
99
  _resolve_timeout(session, parsed_args, arg_name)
92
100
 
101
+ def detect_migration_breakage(parsed_args, session, remaining_args, **kwargs):
102
+ if not resolve_v2_debug_mode(parsed_args):
103
+ return
104
+ region = parsed_args.region or session.get_config_variable('region')
105
+ s3_config = session.get_config_variable('s3')
106
+ if (
107
+ not session.get_scoped_config().get('cli_pager', None)
108
+ == '' and 'AWS_PAGER' not in os.environ
109
+ ):
110
+ uni_print(
111
+ '\nAWS CLI v2 UPGRADE WARNING: By default, the AWS CLI v2 returns '
112
+ 'all output through your operating system’s default pager '
113
+ 'program. This is different from v1 behavior, where the system '
114
+ 'pager is not used by default. To retain AWS CLI v1 behavior in '
115
+ 'AWS CLI v2, set the `cli_pager` configuration setting, or the '
116
+ '`AWS_PAGER` environment variable, to the empty string. See '
117
+ 'https://docs.aws.amazon.com/cli/latest/userguide/'
118
+ 'cliv2-migration-changes.html#cliv2-migration-output-pager.\n',
119
+ out_file=sys.stderr
120
+ )
121
+ if 'PYTHONUTF8' in os.environ or 'PYTHONIOENCODING' in os.environ:
122
+ if 'AWS_CLI_FILE_ENCODING' not in os.environ:
123
+ uni_print(
124
+ '\nThe AWS CLI v2 does not support The `PYTHONUTF8` and '
125
+ '`PYTHONIOENCODING` environment variables, and instead uses '
126
+ 'the `AWS_CLI_FILE_ENCODING` variable. This is different from '
127
+ 'v1 behavior, where the former two variables are used '
128
+ 'instead. To retain AWS CLI v1 behavior in AWS CLI v2, set '
129
+ 'the `AWS_CLI_FILE_ENCODING` environment variable instead. '
130
+ 'See https://docs.aws.amazon.com/cli/latest/userguide/'
131
+ 'cliv2-migration-changes.html'
132
+ '#cliv2-migration-encodingenvvar.\n',
133
+ out_file=sys.stderr
134
+ )
135
+ if (
136
+ (
137
+ s3_config is None
138
+ or s3_config.get('us_east_1_regional_endpoint', 'legacy')
139
+ == 'legacy'
140
+ )
141
+ and region in ('us-east-1', None)
142
+ ):
143
+ session.register(
144
+ 'request-created.s3.*',
145
+ warn_if_east_configured_global_endpoint
146
+ )
147
+ session.register(
148
+ 'request-created.s3api.*',
149
+ warn_if_east_configured_global_endpoint
150
+ )
151
+ if session.get_config_variable('api_versions'):
152
+ uni_print(
153
+ '\nAWS CLI v2 UPGRADE WARNING: AWS CLI v2 UPGRADE WARNING: '
154
+ 'The AWS CLI v2 does not support calling older versions of AWS '
155
+ 'service APIs via the `api_versions` configuration file setting. This '
156
+ 'is different from v1 behavior, where this configuration setting '
157
+ 'can be used to pin older API versions. To migrate to v2 '
158
+ 'behavior, remove the `api_versions` configuration setting, and '
159
+ 'test against the latest service API versions. See '
160
+ 'https://docs.aws.amazon.com/cli/latest/userguide/'
161
+ 'cliv2-migration-changes.html#cliv2-migration-api-versions.\n',
162
+ out_file = sys.stderr
163
+ )
164
+ if session.full_config.get('plugins', {}):
165
+ uni_print(
166
+ '\nAWS CLI v2 UPGRADE WARNING: In AWS CLI v2, plugins are '
167
+ 'disabled by default, and support for plugins is provisional. '
168
+ 'This is different from v1 behavior, where plugin support is URL '
169
+ 'below to update your configuration to enable plugins in AWS CLI '
170
+ 'v2. Also, be sure to lock into a particular version of the AWS '
171
+ 'CLI and test the functionality of your plugins every time AWS '
172
+ 'CLI v2 is upgraded. See https://docs.aws.amazon.com/cli/latest/'
173
+ 'userguide/cliv2-migration-changes.html'
174
+ '#cliv2-migration-profile-plugins.\n',
175
+ out_file=sys.stderr
176
+ )
177
+ if (
178
+ parsed_args.command == 'ecr' and
179
+ remaining_args is not None and
180
+ remaining_args[0] == 'get-login'
181
+ ):
182
+ uni_print(
183
+ '\nAWS CLI v2 UPGRADE WARNING: The `ecr get-login` command has '
184
+ 'been removed in AWS CLI v2. You must use `ecr get-login-password` '
185
+ 'instead. See https://docs.aws.amazon.com/cli/latest/userguide/'
186
+ 'cliv2-migration-changes.html#cliv2-migration-ecr-get-login.\n',
187
+ out_file=sys.stderr
188
+ )
189
+ for working, obsolete in HIDDEN_ALIASES.items():
190
+ working_split = working.split('.')
191
+ working_service = working_split[0]
192
+ working_cmd = working_split[1]
193
+ working_param = working_split[2]
194
+ if (
195
+ parsed_args.command == working_service
196
+ and remaining_args is not None
197
+ and remaining_args[0] == working_cmd
198
+ and f"--{working_param}" in remaining_args
199
+ ):
200
+ uni_print(
201
+ '\nAWS CLI v2 UPGRADE WARNING: You have entered command '
202
+ 'arguments that use at least 1 of 21 built-in ("hidden") '
203
+ 'aliases that were removed in AWS CLI v2. For this command '
204
+ 'to work in AWS CLI v2, you must replace usage of the alias '
205
+ 'with the corresponding parameter in AWS CLI v2. See '
206
+ 'https://docs.aws.amazon.com/cli/latest/userguide/'
207
+ 'cliv2-migration-changes.html#cliv2-migration-aliases.\n',
208
+ out_file=sys.stderr
209
+ )
210
+ # Register against the provide-client-params event to ensure that the
211
+ # feature ID is registered before any API requests are made. We
212
+ # cannot register the feature ID in this function because no
213
+ # botocore context is created at this point.
214
+ session.register(
215
+ 'provide-client-params.*.*',
216
+ _register_v2_debug_feature_id
217
+ )
218
+ session.register('choose-signer.s3.*', warn_if_sigv2)
219
+
220
+
221
+ def _register_v2_debug_feature_id(params, model, **kwargs):
222
+ register_feature_id('CLI_V1_TO_V2_MIGRATION_DEBUG_MODE')
223
+
224
+ def warn_if_east_configured_global_endpoint(request, operation_name, **kwargs):
225
+ # The regional us-east-1 endpoint is used in certain cases (e.g.
226
+ # FIPS/Dual-Stack is enabled). Rather than duplicating this logic
227
+ # from botocore, we check the endpoint URL directly.
228
+ parsed_url = urlparse.urlparse(request.url)
229
+ if parsed_url.hostname.endswith('s3.amazonaws.com'):
230
+ uni_print(
231
+ '\nAWS CLI v2 UPGRADE WARNING: When you configure AWS CLI v2 to '
232
+ 'use the `us-east-1` region, it uses the true regional endpoint '
233
+ 'rather than the global endpoint. This is different from v1 '
234
+ 'behavior, where the global endpoint would be used when the '
235
+ 'region is `us-east-1`. To retain AWS CLI v1 behavior in AWS '
236
+ 'CLI v2, configure the region setting to `aws-global`. See '
237
+ 'https://docs.aws.amazon.com/cli/latest/userguide/'
238
+ 'cliv2-migration-changes.html'
239
+ '#cliv2-migration-s3-regional-endpoint.\n',
240
+ out_file=sys.stderr
241
+ )
242
+
243
+ def warn_if_sigv2(
244
+ signing_name,
245
+ region_name,
246
+ signature_version,
247
+ context,
248
+ **kwargs
249
+ ):
250
+ if context.get('auth_type', None) == 'v2':
251
+ uni_print(
252
+ '\nAWS CLI v2 UPGRADE WARNING: The AWS CLI v2 only uses Signature '
253
+ 'v4 to authenticate Amazon S3 requests. This is different from '
254
+ 'v1 behavior, where the signature used for Amazon S3 requests may '
255
+ 'vary depending on configuration settings, region, and the '
256
+ 'bucket being used. To migrate to AWS CLI v2 behavior, configure '
257
+ 'the Signature Version S3 setting to version 4. See '
258
+ 'https://docs.aws.amazon.com/cli/latest/userguide/'
259
+ 'cliv2-migration-changes.html#cliv2-migration-sigv4.\n',
260
+ out_file=sys.stderr
261
+ )
93
262
 
94
263
  def resolve_cli_read_timeout(parsed_args, session, **kwargs):
95
264
  arg_name = 'read_timeout'
@@ -19,7 +19,7 @@ import time
19
19
 
20
20
  from awscli.compat import get_stdout_text_writer
21
21
  from awscli.customizations.commands import BasicCommand
22
- from awscli.utils import is_a_tty
22
+ from awscli.utils import is_a_tty, create_nested_client
23
23
 
24
24
 
25
25
  DESCRIPTION = (
@@ -240,8 +240,8 @@ class StartLiveTailCommand(BasicCommand):
240
240
  self._output = get_stdout_text_writer()
241
241
 
242
242
  def _get_client(self, parsed_globals):
243
- return self._session.create_client(
244
- "logs",
243
+ return create_nested_client(
244
+ self._session, "logs",
245
245
  region_name=parsed_globals.region,
246
246
  endpoint_url=parsed_globals.endpoint_url,
247
247
  verify=parsed_globals.verify_ssl,