diff --git a/CHANGES.rst b/CHANGES.rst index 13b16c0b9..a66dda59a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,11 @@ Changelog ========= +-------------------- +3.23.3 (2025-05-01) +-------------------- +- Fixed bug that causes eb on non-IIS server Windows machines to crash + -------------------- 3.23.2 (2025-04-22) -------------------- diff --git a/ebcli/__init__.py b/ebcli/__init__.py index 4144cbbb1..06bb3b37a 100644 --- a/ebcli/__init__.py +++ b/ebcli/__init__.py @@ -11,4 +11,4 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -__version__ = '3.23.2' +__version__ = '3.23.3' diff --git a/ebcli/controllers/migrate.py b/ebcli/controllers/migrate.py index 188cff022..4581a71d8 100644 --- a/ebcli/controllers/migrate.py +++ b/ebcli/controllers/migrate.py @@ -116,7 +116,7 @@ class MigrateController(AbstractBaseController): class Meta: argument_formatter = argparse.RawTextHelpFormatter label = "migrate" - description = "This is an experimental command that enables you to migrate an IIS site from a source machine to Elastic Beanstalk" + description = "This command migrates an IIS site or application from a source Windows machine to an environment hosted on AWS Elastic Beanstalk." usage = "eb migrate [options ...]" arguments = [ (["-s", "--sites"], dict(help=flag_text["migrate.sites"])), @@ -595,7 +595,7 @@ def generate_upload_target_archive(upload_target_dir, env_name, region): except NotFoundError: io.echo( f"\nGenerated destination archive directory at .\\{relative_normalized_upload_target_dir_path}.zip. " - "You can create en environment with the zip using:\n\n" + "You can create an environment with the zip using:\n\n" f" eb migrate --environment-name {env_name} --archive .\\migrations\\latest\\upload_target.zip --region {region}\n" ) @@ -1078,7 +1078,7 @@ def setup_migrations_dir(verbose: bool) -> str: ) io.echo(f" .\\{relative_normalized_path}\\error.log -> msbuild.exe error logs") io.echo( - f" .\\{relative_normalized_path}\\upload_target\\ -> destination archive dir" + f" .\\{relative_normalized_path}\\upload_target\\ -> destination archive directory" ) return latest_migration_run_path @@ -1613,7 +1613,7 @@ def do_ms_deploy_sync_application( else: io.log_error(f"MSDeploy process exited with code {process.ExitCode}.") raise RuntimeError( - f"MSDeploy process exited with code {process.ExitCode}. You can find execution logs at .\\migrations\\latest\\error.log')" + f"MSDeploy process exited with code {process.ExitCode}. You can find execution logs at .\\migrations\\latest\\error.log" ) @@ -1761,8 +1761,7 @@ def warn_about_password_protection(site, application): for vdir in application.VirtualDirectories: if vdir.Password: io.log_warning( - f"{_iis_application_name_value} is hosted at {vdir.PhysicalPath} " - "which is password-protected and won't be copied." + f"Cannot copy virtual directory associated with site because it is password protected: Site [{site.Name}/{_iis_application_name_value}], Path hosting:[{vdir.PhysicalPath}]" ) except AttributeError: pass @@ -1891,7 +1890,7 @@ def export_arr_config(upload_target_dir: str, verbose: bool) -> None: "system.webServer/caching", ] if not _arr_enabled() and verbose: - io.echo("No Automatic Request Routing configuration found.") + io.echo("No Automatic Request Routing (ARR) configuration found.") return else: io.echo("Automatic Request Routing (ARR) configuration found.") diff --git a/ebcli/resources/strings.py b/ebcli/resources/strings.py index c22f6b6e8..a1d99c549 100644 --- a/ebcli/resources/strings.py +++ b/ebcli/resources/strings.py @@ -705,7 +705,9 @@ 'sharedlb.shared_load_balancer_prompt': 'Select a shared load balancer', 'sharedlb.listener_prompt': 'Select a listener port for your shared load balancer', - 'migrate.should_cleanup': 'Are you sure you would like to cleanup older artifacts within `./migrations/`?', + 'migrate.should_cleanup': "Are you sure you want to clean up older artifacts within the\n" + "'./migrations/directory'? The most recent successful migration\n" + "in directory './migrations/latest' will be preserved.", } alerts = { @@ -867,26 +869,28 @@ 'migrate.sites': 'Specify a comma-separated list of IIS sites to migrate. If not specified,\n' 'migrates all available sites on the server.', - 'migrate.environment_name': 'Name for the new Elastic Beanstalk environment. Defaults to EBMigratedApp.', - 'migrate.application_name': 'Name for the new Elastic Beanstalk application. Defaults to EBMigratedEnv.', + 'migrate.environment_name': 'Name for the new Elastic Beanstalk environment. Defaults to EBMigratedEnv.', + 'migrate.application_name': 'Name for the new Elastic Beanstalk application. Defaults to EBMigratedApp.', 'migrate.platform': 'Elastic Beanstalk platform runtime for the environment. If not specified,\n' 'automatically detected from host VM or application.\n' - 'Example: "64bit Windows Server 2016 v2.16.2 running IIS 10.0"', + 'Example: "64bit Windows Server 2016 v2.16.2 running IIS 10.0".' + "For a list of available platform versions, use the command 'eb platform list'.", 'migrate.execution_role': 'IAM role for executing eb migrate. Uses credentials from:\n' '1. ~/.aws/config\n' '2. AWS CLI credential chain (if config not found)', 'migrate.instance_type': 'EC2 instance type for the Elastic Beanstalk environment. Defaults to c5.2xlarge.', 'migrate.cname': 'CNAME prefix for the Elastic Beanstalk environment.', - 'migrate.instance_profile': 'Instance Profile to associate with the environment\'s EC2 instances.', - 'migrate.service_role': 'IAM service role for Elastic Beanstalk to manage related AWS services.', + 'migrate.instance_profile': 'Instance Profile to associate with the EC2 instances running on the environment.', + 'migrate.service_role': 'The name of the IAM service role for Elastic Beanstalk to manage related AWS services.\n ' + 'If not specified, creates a default service role with necessary permissions.', 'migrate.ebs_snapshots': 'Comma-separated list of EBS snapshot IDs to associate with the environment.', 'migrate.stream_to_cloudwatch': 'Stream EB CLI debug logs and execution metrics to CloudWatch.', 'migrate.use_host_ebs_configuration': 'Generate EBS snapshots from volumes attached to the current instance.', 'migrate.keyname': 'EC2 key pair to enable SSH/RDP access to environment instances.\n' 'Useful for investigating instance-level issues not visible in logs.', - 'migrate.interactive': 'Force interactive mode for the migration process.', + 'migrate.interactive': 'Force interactive mode for the migration process. Prompts for configuration values even when defaults are available.', 'migrate.tags': 'Comma-separated list of key=value pairs to tag new resources:\n' '- Elastic Beanstalk application\n' '- Environment\n' @@ -907,10 +911,11 @@ 'migrate.encrypt_ebs_volumes': 'Enforce encryption for all new EBS volumes.\n' 'Note: This is an account-wide setting that affects all future\n' 'EBS volume creation.', - 'migrate.ssl_certificate_arns': 'Comma-Separated list of Amazon Certificate Manager (ACM) SSL certificate\n' + 'migrate.ssl_certificate_arns': 'Comma-separated list of ARNs for Amazon Certificate Manager (ACM) SSL certificate\n' 'ARN to associate with the Application Load Balancer.', 'migrate.archive': 'The directory or the ZIP file containing source code that\n' - '`eb migrate --archive-only` previously generated.', + '`eb migrate --archive-only` previously generated. Use this\n' + 'option to deploy a previously created migration package.', 'migrate.vpc_config': """VPC config for the environment either in the form of a JSON file or' a string. In both cases, config must have the format: {