Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -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)
--------------------
Expand Down
2 changes: 1 addition & 1 deletion ebcli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
13 changes: 6 additions & 7 deletions ebcli/controllers/migrate.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"])),
Expand Down Expand Up @@ -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"
)

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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"
)


Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.")
Expand Down
23 changes: 14 additions & 9 deletions ebcli/resources/strings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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'
Expand All @@ -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:
{
Expand Down
Loading