awsebcli 3.26__tar.gz → 3.27.1__tar.gz

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 (208) hide show
  1. {awsebcli-3.26 → awsebcli-3.27.1}/CHANGES.rst +13 -0
  2. {awsebcli-3.26/awsebcli.egg-info → awsebcli-3.27.1}/PKG-INFO +14 -1
  3. {awsebcli-3.26 → awsebcli-3.27.1/awsebcli.egg-info}/PKG-INFO +14 -1
  4. {awsebcli-3.26 → awsebcli-3.27.1}/awsebcli.egg-info/requires.txt +7 -2
  5. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/__init__.py +1 -1
  6. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/create.py +11 -2
  7. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/logs.py +23 -0
  8. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/io.py +1 -0
  9. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/elasticbeanstalk.py +12 -0
  10. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/commonops.py +2 -0
  11. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/logsops.py +37 -4
  12. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/resources/statics.py +1 -0
  13. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/resources/strings.py +11 -0
  14. {awsebcli-3.26 → awsebcli-3.27.1}/requirements.txt +3 -2
  15. {awsebcli-3.26 → awsebcli-3.27.1}/LICENSE.txt +0 -0
  16. {awsebcli-3.26 → awsebcli-3.27.1}/MANIFEST.in +0 -0
  17. {awsebcli-3.26 → awsebcli-3.27.1}/README.rst +0 -0
  18. {awsebcli-3.26 → awsebcli-3.27.1}/awsebcli.egg-info/SOURCES.txt +0 -0
  19. {awsebcli-3.26 → awsebcli-3.27.1}/awsebcli.egg-info/dependency_links.txt +0 -0
  20. {awsebcli-3.26 → awsebcli-3.27.1}/awsebcli.egg-info/entry_points.txt +0 -0
  21. {awsebcli-3.26 → awsebcli-3.27.1}/awsebcli.egg-info/top_level.txt +0 -0
  22. {awsebcli-3.26 → awsebcli-3.27.1}/bin/__init__.py +0 -0
  23. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/__init__.py +0 -0
  24. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/__init__.py +0 -0
  25. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/event.py +0 -0
  26. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/exceptions.py +0 -0
  27. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/overrides.py +0 -0
  28. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/screen.py +0 -0
  29. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/bundled/asciimatics/utilities.py +0 -0
  30. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/__init__.py +0 -0
  31. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/abstractcontainer.py +0 -0
  32. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/commands.py +0 -0
  33. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/compat.py +0 -0
  34. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/compose.py +0 -0
  35. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/container_viewmodel.py +0 -0
  36. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/container_config.json +0 -0
  37. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/glassfish-runtime-4.0-jdk7 +0 -0
  38. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/glassfish-runtime-4.1-jdk8 +0 -0
  39. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/glassfish-runtime-5.0-al +0 -0
  40. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/golang-runtime-1.3 +0 -0
  41. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/golang-runtime-1.4 +0 -0
  42. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerfiles/python3-runtime +0 -0
  43. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/containerops.py +0 -0
  44. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/dockerrun.py +0 -0
  45. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/envvarcollector.py +0 -0
  46. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/factory.py +0 -0
  47. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/fshandler.py +0 -0
  48. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/generic_container.py +0 -0
  49. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/log.py +0 -0
  50. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/multicontainer.py +0 -0
  51. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/pathconfig.py +0 -0
  52. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/preconfigured_container.py +0 -0
  53. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/containers/utils.py +0 -0
  54. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/__init__.py +0 -0
  55. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/abort.py +0 -0
  56. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/appversion.py +0 -0
  57. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/clone.py +0 -0
  58. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/codesource.py +0 -0
  59. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/config.py +0 -0
  60. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/console.py +0 -0
  61. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/deploy.py +0 -0
  62. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/events.py +0 -0
  63. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/health.py +0 -0
  64. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/initialize.py +0 -0
  65. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/lifecycle.py +0 -0
  66. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/list.py +0 -0
  67. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/local.py +0 -0
  68. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate.py +0 -0
  69. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/add_virtual_dir_read_access.ps1 +0 -0
  70. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/arr_configuration_importer_script.ps1 +0 -0
  71. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/arr_msi_installer.ps1 +0 -0
  72. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/default_web_site_port_reassignment_template.ps1 +0 -0
  73. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/ebdeploy_utils.ps1 +0 -0
  74. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/modify_firewall_config.ps1 +0 -0
  75. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/noop.ps1 +0 -0
  76. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/reinstate_iisstart_htm_default_document.ps1 +0 -0
  77. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/site_installer_template.ps1 +0 -0
  78. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/site_removal_template.ps1 +0 -0
  79. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/site_restart_template.ps1 +0 -0
  80. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/migrate_scripts/windows_proxy_feature_enabler.ps1 +0 -0
  81. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/open.py +0 -0
  82. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/__init__.py +0 -0
  83. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/create.py +0 -0
  84. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/delete.py +0 -0
  85. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/events.py +0 -0
  86. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/initialize.py +0 -0
  87. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/list.py +0 -0
  88. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/logs.py +0 -0
  89. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/status.py +0 -0
  90. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/platform/use.py +0 -0
  91. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/printenv.py +0 -0
  92. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/restore.py +0 -0
  93. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/scale.py +0 -0
  94. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/setenv.py +0 -0
  95. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/ssh.py +0 -0
  96. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/status.py +0 -0
  97. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/swap.py +0 -0
  98. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/tags.py +0 -0
  99. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/terminate.py +0 -0
  100. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/upgrade.py +0 -0
  101. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/controllers/use.py +0 -0
  102. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/__init__.py +0 -0
  103. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/abstractcontroller.py +0 -0
  104. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/base.py +0 -0
  105. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/ebcore.py +0 -0
  106. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/ebglobals.py +0 -0
  107. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/ebpcore.py +0 -0
  108. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/ebrun.py +0 -0
  109. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/fileoperations.py +0 -0
  110. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/core/hooks.py +0 -0
  111. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/__init__.py +0 -0
  112. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/appversion.py +0 -0
  113. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/data_poller.py +0 -0
  114. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/environments.py +0 -0
  115. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/help.py +0 -0
  116. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/screen.py +0 -0
  117. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/specialtables.py +0 -0
  118. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/table.py +0 -0
  119. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/term.py +0 -0
  120. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/display/traditional.py +0 -0
  121. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/__init__.py +0 -0
  122. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/cleanupversions.py +0 -0
  123. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/cloudwatchfiles/cwl-activity-logs-v1.config +0 -0
  124. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/cloudwatchfiles/cwl-setup-v1.config +0 -0
  125. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/cloudwatchfiles/eb-logs-v1.config +0 -0
  126. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/cloudwatchsetup.py +0 -0
  127. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/controller.py +0 -0
  128. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/convertdockerrun.py +0 -0
  129. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/download.py +0 -0
  130. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/quicklink.py +0 -0
  131. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/labs/setupssl.py +0 -0
  132. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/__init__.py +0 -0
  133. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/aws.py +0 -0
  134. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/botocoredata/elasticbeanstalk/2010-12-01/paginators-1.json +0 -0
  135. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/botocoredata/elasticbeanstalk/2010-12-01/service-2.json +0 -0
  136. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/botopatch.py +0 -0
  137. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/cloudformation.py +0 -0
  138. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/cloudwatch.py +0 -0
  139. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/codebuild.py +0 -0
  140. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/codecommit.py +0 -0
  141. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/ec2.py +0 -0
  142. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/elb.py +0 -0
  143. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/elbv2.py +0 -0
  144. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/heuristics.py +0 -0
  145. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/iam.py +0 -0
  146. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/kms.py +0 -0
  147. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/s3.py +0 -0
  148. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/sns.py +0 -0
  149. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/lib/utils.py +0 -0
  150. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/__init__.py +0 -0
  151. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/api_filters.py +0 -0
  152. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/application.py +0 -0
  153. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/buildconfiguration.py +0 -0
  154. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/cfn_stack.py +0 -0
  155. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/conversionconfiguration.py +0 -0
  156. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/environment.py +0 -0
  157. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/environmentsettings.py +0 -0
  158. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/event.py +0 -0
  159. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/exceptions.py +0 -0
  160. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/lifecycleconfiguration.py +0 -0
  161. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/log_stream.py +0 -0
  162. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/platform.py +0 -0
  163. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/region.py +0 -0
  164. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/requests.py +0 -0
  165. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/solutionstack.py +0 -0
  166. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/sourcecontrol.py +0 -0
  167. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/objects/tier.py +0 -0
  168. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/__init__.py +0 -0
  169. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/abortops.py +0 -0
  170. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/appversionops.py +0 -0
  171. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/buildspecops.py +0 -0
  172. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/cloneops.py +0 -0
  173. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/composeops.py +0 -0
  174. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/configops.py +0 -0
  175. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/consoleops.py +0 -0
  176. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/createops.py +0 -0
  177. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/deployops.py +0 -0
  178. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/envvarops.py +0 -0
  179. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/eventsops.py +0 -0
  180. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/gitops.py +0 -0
  181. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/healthops.py +0 -0
  182. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/initializeops.py +0 -0
  183. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/lifecycleops.py +0 -0
  184. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/listops.py +0 -0
  185. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/localops.py +0 -0
  186. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/openops.py +0 -0
  187. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/platform_branch_ops.py +0 -0
  188. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/platform_version_ops.py +0 -0
  189. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/platformops.py +0 -0
  190. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/restoreops.py +0 -0
  191. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/saved_configs.py +0 -0
  192. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/scaleops.py +0 -0
  193. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/shared_lb_ops.py +0 -0
  194. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/solution_stack_ops.py +0 -0
  195. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/spotops.py +0 -0
  196. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/sshops.py +0 -0
  197. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/statusops.py +0 -0
  198. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/swapops.py +0 -0
  199. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/tagops/__init__.py +0 -0
  200. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/tagops/taglist.py +0 -0
  201. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/tagops/tagops.py +0 -0
  202. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/terminateops.py +0 -0
  203. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/upgradeops.py +0 -0
  204. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/operations/useops.py +0 -0
  205. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/resources/__init__.py +0 -0
  206. {awsebcli-3.26 → awsebcli-3.27.1}/ebcli/resources/regex.py +0 -0
  207. {awsebcli-3.26 → awsebcli-3.27.1}/setup.cfg +0 -0
  208. {awsebcli-3.26 → awsebcli-3.27.1}/setup.py +0 -0
@@ -1,5 +1,18 @@
1
1
  Changelog
2
2
  =========
3
+ --------------------
4
+ 3.27.1 (2026-03-25)
5
+ --------------------
6
+ - Improved `eb create` CNAME prompt to show how the prefix maps to the environment URL and display the full domain on success
7
+ - Relaxed ``urllib3`` version constraint to allow 2.x on Python 3.10+
8
+ - Relaxed ``packaging`` version constraint to ``<27.0``
9
+ - Fixed GitHub Actions CI and added unit test workflow for PRs
10
+
11
+ --------------------
12
+ 3.27 (2026-03-16)
13
+ --------------------
14
+ - Added `--analyze` flag to `eb logs` command for AI-powered log analysis
15
+
3
16
  --------------------
4
17
  3.26 (2026-01-07)
5
18
  --------------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: awsebcli
3
- Version: 3.26
3
+ Version: 3.27.1
4
4
  Summary: Command Line Interface for AWS EB.
5
5
  Home-page: http://aws.amazon.com/elasticbeanstalk/
6
6
  Author: AWS Elastic Beanstalk
@@ -99,6 +99,19 @@ in the *AWS Elastic Beanstalk Developer Guide*.
99
99
 
100
100
  Changelog
101
101
  =========
102
+ --------------------
103
+ 3.27.1 (2026-03-25)
104
+ --------------------
105
+ - Improved `eb create` CNAME prompt to show how the prefix maps to the environment URL and display the full domain on success
106
+ - Relaxed ``urllib3`` version constraint to allow 2.x on Python 3.10+
107
+ - Relaxed ``packaging`` version constraint to ``<27.0``
108
+ - Fixed GitHub Actions CI and added unit test workflow for PRs
109
+
110
+ --------------------
111
+ 3.27 (2026-03-16)
112
+ --------------------
113
+ - Added `--analyze` flag to `eb logs` command for AI-powered log analysis
114
+
102
115
  --------------------
103
116
  3.26 (2026-01-07)
104
117
  --------------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: awsebcli
3
- Version: 3.26
3
+ Version: 3.27.1
4
4
  Summary: Command Line Interface for AWS EB.
5
5
  Home-page: http://aws.amazon.com/elasticbeanstalk/
6
6
  Author: AWS Elastic Beanstalk
@@ -99,6 +99,19 @@ in the *AWS Elastic Beanstalk Developer Guide*.
99
99
 
100
100
  Changelog
101
101
  =========
102
+ --------------------
103
+ 3.27.1 (2026-03-25)
104
+ --------------------
105
+ - Improved `eb create` CNAME prompt to show how the prefix maps to the environment URL and display the full domain on success
106
+ - Relaxed ``urllib3`` version constraint to allow 2.x on Python 3.10+
107
+ - Relaxed ``packaging`` version constraint to ``<27.0``
108
+ - Fixed GitHub Actions CI and added unit test workflow for PRs
109
+
110
+ --------------------
111
+ 3.27 (2026-03-16)
112
+ --------------------
113
+ - Added `--analyze` flag to `eb logs` command for AI-powered log analysis
114
+
102
115
  --------------------
103
116
  3.26 (2026-01-07)
104
117
  --------------------
@@ -9,14 +9,19 @@ semantic_version<2.11,>=2.10.0
9
9
  termcolor<3,>=2.4.0
10
10
  wcwidth<0.3,>=0.2.13
11
11
  PyYAML<6.1,>=5.3.1
12
- urllib3<2,>=1.26.5
13
- packaging<25.0,>=24.2
12
+ packaging<27.0,>=24.2
14
13
  blessed>=1.20.0
15
14
  fabric==3.2.2
16
15
 
17
16
  [:platform_system == "Windows"]
18
17
  pythonnet<4,>=3.0.5
19
18
 
19
+ [:python_version < "3.10"]
20
+ urllib3<2,>=1.26.5
21
+
22
+ [:python_version >= "3.10"]
23
+ urllib3<3,>=1.26.5
24
+
20
25
  [:sys_platform == "win32" and python_version < "3.6"]
21
26
  pypiwin32==219
22
27
 
@@ -11,4 +11,4 @@
11
11
  # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
12
12
  # ANY KIND, either express or implied. See the License for the specific
13
13
  # language governing permissions and limitations under the License.
14
- __version__ = '3.26'
14
+ __version__ = '3.27.1'
@@ -526,8 +526,17 @@ def get_cname_from_customer(env_name):
526
526
  cname = get_unique_cname(env_name)
527
527
  while True:
528
528
  cname = io.prompt_for_cname(default=cname)
529
- if cname and not elasticbeanstalk.is_cname_available(cname):
530
- io.echo('That cname is not available. Please choose another.')
529
+ if cname:
530
+ available, fqdn = elasticbeanstalk.check_dns_availability(cname)
531
+ if not available:
532
+ message = 'That cname is not available.'
533
+ if fqdn:
534
+ message = '{fqdn} is already in use.'.format(fqdn=fqdn)
535
+ io.echo(message + ' Please choose another.')
536
+ else:
537
+ if fqdn:
538
+ io.echo('Your environment will be accessible at: {fqdn}'.format(fqdn=fqdn))
539
+ break
531
540
  else:
532
541
  break
533
542
  return cname
@@ -33,6 +33,8 @@ class LogsController(AbstractBaseController):
33
33
  action='store_true', help=flag_text['logs.all'])),
34
34
  (['-z', '--zip'], dict(
35
35
  action='store_true', help=flag_text['logs.zip'])),
36
+ (['-ai', '--analyze'], dict(action='store_true',
37
+ help=flag_text['logs.analyze'])),
36
38
  (['-i', '--instance'], dict(help=flag_text['logs.instance'])),
37
39
  (['-g', '--log-group'], dict(help=flag_text['logs.log-group'])),
38
40
  (['-cw', '--cloudwatch-logs'], dict(help=flag_text['logs.cloudwatch_logs'], nargs='?',
@@ -51,6 +53,7 @@ class LogsController(AbstractBaseController):
51
53
  self.instance = self.app.pargs.instance
52
54
  self.all = self.app.pargs.all
53
55
  self.zip = self.app.pargs.zip
56
+ self.analyze = self.app.pargs.analyze
54
57
  self.cloudwatch_logs = self.app.pargs.cloudwatch_logs
55
58
  self.cloudwatch_log_source = self.app.pargs.cloudwatch_log_source
56
59
  self.stream = self.app.pargs.stream
@@ -61,6 +64,8 @@ class LogsController(AbstractBaseController):
61
64
  self.__modify_log_streaming()
62
65
  elif self.stream:
63
66
  self.__stream_cloudwatch_logs()
67
+ elif self.analyze:
68
+ self.__analyze_logs()
64
69
  else:
65
70
  self.__get_logs()
66
71
 
@@ -144,6 +149,18 @@ class LogsController(AbstractBaseController):
144
149
  if self.cloudwatch_logs and self.zip:
145
150
  raise InvalidOptionsError(strings['logs.cloudwatch_logs_argument_and_zip_argument'])
146
151
 
152
+ if self.analyze and self.instance:
153
+ raise InvalidOptionsError(strings['logs.analyze_argument_and_instance_argument'])
154
+
155
+ if self.analyze and self.all:
156
+ raise InvalidOptionsError(strings['logs.analyze_argument_and_all_argument'])
157
+
158
+ if self.analyze and self.zip:
159
+ raise InvalidOptionsError(strings['logs.analyze_argument_and_zip_argument'])
160
+
161
+ if self.analyze and self.log_group:
162
+ raise InvalidOptionsError(strings['logs.analyze_argument_and_log_group_argument'])
163
+
147
164
  if self.cloudwatch_log_source and self.cloudwatch_log_source not in [
148
165
  logs_operations_constants.LOG_SOURCES.ALL_LOG_SOURCES,
149
166
  logs_operations_constants.LOG_SOURCES.INSTANCE_LOG_SOURCE,
@@ -184,3 +201,9 @@ class LogsController(AbstractBaseController):
184
201
  raise InvalidOptionsError(strings['logs.environment_health_log_streaming_disabled'].format(self.env_name))
185
202
 
186
203
  logsops.stream_instance_logs_from_cloudwatch(log_group=self.__normalized_log_group_name())
204
+
205
+ def __analyze_logs(self):
206
+ logsops.retrieve_beanstalk_logs(
207
+ self.env_name,
208
+ logs_operations_constants.INFORMATION_FORMAT.ANALYZE,
209
+ )
@@ -233,6 +233,7 @@ def validate_action(output, expected_input):
233
233
  def prompt_for_cname(default=None):
234
234
  while True:
235
235
  echo('Enter DNS CNAME prefix')
236
+ echo('(This will be part of your environment URL: prefix.region.elasticbeanstalk.com)')
236
237
  if default:
237
238
  cname = prompt('default is ' + default)
238
239
  else:
@@ -425,6 +425,18 @@ def is_cname_available(cname):
425
425
  return result['Available']
426
426
 
427
427
 
428
+ def check_dns_availability(cname):
429
+ """Check DNS availability and return both availability and the fully qualified CNAME.
430
+
431
+ :param cname: the CNAME prefix to check
432
+ :return: tuple of (is_available, fully_qualified_cname)
433
+ """
434
+ LOG.debug('Inside check_dns_availability api wrapper')
435
+ result = _make_api_call('check_dns_availability',
436
+ CNAMEPrefix=cname)
437
+ return result['Available'], result.get('FullyQualifiedCNAME')
438
+
439
+
428
440
  def swap_environment_cnames(source_env, dest_env):
429
441
  LOG.debug('Inside swap_environment_cnames api wrapper')
430
442
  result = _make_api_call('swap_environment_cnames',
@@ -303,6 +303,8 @@ def _is_success_event(message, log_events=False):
303
303
  return True
304
304
  if responses['logs.successbundle'] in message:
305
305
  return True
306
+ if responses['logs.successanalyze'] in message:
307
+ return True
306
308
  if responses['tags.tag_update_successful'] in message:
307
309
  return True
308
310
  if message.startswith(responses['event.platformdeletesuccess']):
@@ -330,24 +330,47 @@ def get_instance_log_url_mappings(env_name, info_type):
330
330
  return instance_id_list
331
331
 
332
332
 
333
+ def _get_latest_instance_log_url_mappings(env_name, info_type):
334
+ result = elasticbeanstalk.retrieve_environment_info(env_name, info_type)
335
+
336
+ instance_id_list = dict()
337
+ instance_timestamps = dict()
338
+
339
+ for log in result['EnvironmentInfo']:
340
+ instance_id = log['Ec2InstanceId']
341
+ url = log['Message']
342
+ timestamp = log.get('SampleTimestamp')
343
+
344
+ if instance_id not in instance_id_list or timestamp > instance_timestamps[instance_id]:
345
+ instance_id_list[instance_id] = url
346
+ instance_timestamps[instance_id] = timestamp
347
+
348
+ return instance_id_list
349
+
350
+
333
351
  def get_logs(env_name, info_type, do_zip=False, instance_id=None):
334
352
  """
335
353
  Obtains the set of logs from ElasticBeanstalk for the environment `env_name` from ElasticBeanstalk
336
354
  (and not CloudWatch) for the environment, `env_name` and determines whether to tail it or bundle/zip
337
355
  it.
338
356
  :param env_name: An Elastic Beanstalk environment name
339
- :param info_type: The type of information to request. Possible values: tail, bundle
357
+ :param info_type: The type of information to request. Possible values: tail, bundle, analyze
340
358
  :param do_zip: Whether the information retrieved should be zipped; works only with info_type 'bundle'
341
359
  :param instance_id: The specific EC2 instance associated with `env_name` whose log information to retrieve
342
360
  :return: None
343
361
  """
344
- instance_id_list = get_instance_log_url_mappings(env_name, info_type)
362
+ if info_type == logs_operations_constants.INFORMATION_FORMAT.ANALYZE:
363
+ instance_id_list = _get_latest_instance_log_url_mappings(env_name, info_type)
364
+ else:
365
+ instance_id_list = get_instance_log_url_mappings(env_name, info_type)
345
366
 
346
367
  if instance_id:
347
368
  instance_id_list = _updated_instance_id_list(instance_id_list, instance_id)
348
369
 
349
370
  if info_type == logs_operations_constants.INFORMATION_FORMAT.BUNDLE:
350
371
  _handle_bundle_logs(instance_id_list, do_zip)
372
+ elif info_type == logs_operations_constants.INFORMATION_FORMAT.ANALYZE:
373
+ _handle_analyze_logs(instance_id_list)
351
374
  else:
352
375
  _handle_tail_logs(instance_id_list)
353
376
 
@@ -473,7 +496,7 @@ def retrieve_beanstalk_logs(env_name, info_type, do_zip=False, instance_id=None)
473
496
  """
474
497
  Obtains the set of logs from ElasticBeanstalk for the environment `env_name`.
475
498
  :param env_name: An Elastic Beanstalk environment name
476
- :param info_type: The type of information to request. Possible values: tail, bundle
499
+ :param info_type: The type of information to request. Possible values: tail, bundle, analyze
477
500
  :param do_zip: Whether the information retrieved should be zipped; works only with info_type 'bundle'
478
501
  :param instance_id: The specific EC2 instance associated with `env_name` whose log information to retrieve
479
502
  :return: None
@@ -481,7 +504,11 @@ def retrieve_beanstalk_logs(env_name, info_type, do_zip=False, instance_id=None)
481
504
  result = elasticbeanstalk.request_environment_info(env_name, info_type)
482
505
 
483
506
  request_id = result['ResponseMetadata']['RequestId']
484
- io.echo(prompts['logs.retrieving'])
507
+
508
+ if info_type == logs_operations_constants.INFORMATION_FORMAT.ANALYZE:
509
+ io.echo(prompts['logs.analyzing'])
510
+ else:
511
+ io.echo(prompts['logs.retrieving'])
485
512
 
486
513
  commonops.wait_for_success_events(
487
514
  request_id,
@@ -898,6 +925,12 @@ def _handle_tail_logs(instance_id_list):
898
925
  io.echo_with_pager(os.linesep.join(data))
899
926
 
900
927
 
928
+ def _handle_analyze_logs(instance_id_list):
929
+ for instance_id, url in iteritems(instance_id_list):
930
+ log_result = utils.get_data_from_url(url)
931
+ io.echo(utils.decode_bytes(log_result))
932
+
933
+
901
934
  def _instance_log_streaming_option_setting(disable=False):
902
935
  return elasticbeanstalk.create_option_setting(
903
936
  namespaces.CLOUDWATCH_LOGS,
@@ -22,6 +22,7 @@ class logs_operations_constants(object):
22
22
  class INFORMATION_FORMAT(object):
23
23
  BUNDLE = 'bundle'
24
24
  TAIL = 'tail'
25
+ ANALYZE = 'analyze'
25
26
 
26
27
 
27
28
  class iam_documents(object):
@@ -384,6 +384,14 @@ To get started enter "eb platform init". Then enter "eb platform create".""",
384
384
  'logs.cloudwatch_logs_argument_and_zip_argument':
385
385
  'You can\'t use the "--zip" option when setting log streaming. This is an '
386
386
  'output option for log retrieval commands.',
387
+ 'logs.analyze_argument_and_instance_argument':
388
+ 'You can\'t use the "--instance" option with the "--analyze" option.',
389
+ 'logs.analyze_argument_and_all_argument':
390
+ 'You can\'t use the "--all" option with the "--analyze" option.',
391
+ 'logs.analyze_argument_and_zip_argument':
392
+ 'You can\'t use the "--zip" option with the "--analyze" option.',
393
+ 'logs.analyze_argument_and_log_group_argument':
394
+ 'You can\'t use the "--log-group" option with the "--analyze" option.',
387
395
  'logs.health_and_instance_argument':
388
396
  'You can\'t use the "--instance" option when retrieving environment-health '
389
397
  'logs. The scope for these logs is the entire environment.',
@@ -619,6 +627,7 @@ prompts = {
619
627
  'vpc.elbpublic': 'Do you want the load balancer to be public? (Select no for internal)',
620
628
  'vpc.dbsubnets': 'Enter a comma-separated list of database subnets',
621
629
  'logs.retrieving': 'Retrieving logs...',
630
+ 'logs.analyzing': 'Analyzing environment...',
622
631
  'swap.envprompt': 'Select the environment with which you want to swap CNAMEs.',
623
632
  'abort.envprompt': 'Select the environment you want to stop updating.',
624
633
  'clone.latest': 'There is a newer version of the platform used by the environment '
@@ -853,6 +862,7 @@ flag_text = {
853
862
 
854
863
  'logs.all': 'retrieve all logs',
855
864
  'logs.zip': 'retrieve all logs as .zip',
865
+ 'logs.analyze': 'AI-powered analysis of logs, events, and environment health',
856
866
  'logs.instance': 'retrieve logs only for this instance',
857
867
  'logs.log-group': 'retrieve logs only for this log group',
858
868
  'logs.stream': 'enable/disable log streaming to CloudWatch Logs',
@@ -1052,6 +1062,7 @@ responses = {
1052
1062
  'logs.pulled': 'Pulled logs for environment instances.',
1053
1063
  'logs.successtail': 'Successfully finished tailing',
1054
1064
  'logs.successbundle': 'Successfully finished bundling',
1065
+ 'logs.successanalyze': 'AI analysis request has completed.',
1055
1066
  'logs.fail': 'Failed to pull logs for environment instances.',
1056
1067
  'env.terminated': 'terminateEnvironment completed successfully.',
1057
1068
  'env.invalidstate': 'Environment named {env-name} is in an invalid state for this operation. '
@@ -9,8 +9,9 @@ semantic_version>=2.10.0,<2.11
9
9
  termcolor>=2.4.0,<3
10
10
  wcwidth>=0.2.13,<0.3
11
11
  PyYAML>=5.3.1,<6.1
12
- urllib3>=1.26.5,<2
13
- packaging>=24.2,<25.0
12
+ urllib3>=1.26.5,<2; python_version < "3.10"
13
+ urllib3>=1.26.5,<3; python_version >= "3.10"
14
+ packaging>=24.2,<27.0
14
15
  blessed>=1.20.0
15
16
  fabric==3.2.2
16
17
  pythonnet>=3.0.5,<4 ; platform_system=="Windows"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes