

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 步骤 3：设置环境运行脚本
<a name="migrating-to-systems-manager-script-parameters"></a>

使用以下命令设置环境以运行脚本。

```
pipenv install -r requirements.txt
pipenv shell
```

**注意**  
 目前，该脚本只能在 Application Manager 中预配置单层应用程序。例如，如果您为同一堆栈中的两个层运行脚本两次，则脚本将在 Application Manage 中创建两个不同的应用程序。

设置环境后，请查看脚本参数。您可以通过运行 `python3 stack_exporter.py --help` 命令来查看迁移脚本的可用选项。


****  

| 参数 | 说明 | 必填 | Type | 默认 值 | 
| --- | --- | --- | --- | --- | 
| --layer-id | 导出此 OpsWorks 图层 ID 的 CloudFormation 模板。 | 是 | 字符串 |  | 
| --region |  OpsWorks 堆栈的 AWS 区域。如果您的 OpsWorks 堆栈区域和 API 终端节点区域不同，请使用堆栈区域。此区域与 OpsWorks堆栈中的其他资源部分（例如， EC2 实例和子网）属于同一区域。 | 否 | 字符串 | us-east-1 | 
| --provision-application | 默认情况下，该脚本会配置由 CloudFormation 模板导出的应用程序。将此参数传递到脚本中，值为 FALSE 可跳过 CloudFormation模板的配置。 | 否 | 布尔值 | TRUE | 
| --launch-template | 此参数定义是否使用现有启动模板还是创建新的启动模板。您可以创建使用推荐的实例属性的新启动模板，也可以创建使用与在线实例匹配的实例属性的新启动模板。 有效值包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/migrating-to-systems-manager-script-parameters.html)  | 否 | 字符串 | RECOMMENDED | 
| --system-updates |  定义是否在实例启动时执行内核和软件包更新。 有效值包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/migrating-to-systems-manager-script-parameters.html)  | 否 | 字符串 | ALL\$1UPDATES | 
| --http-username | Systems Manager SecureString 参数的名称，该参数存储用于对包含自定义说明书的 HTTP 存档进行身份验证的用户名。 | 否 | 字符串 |  | 
| --http-password | Systems Manager SecureString 参数的名称，该参数存储用于对包含自定义说明书的 HTTP 存档进行身份验证的密码。 | 否 | 字符串 |  | 
| --repo-private-key | Systems Manager SecureString 参数的名称，该参数存储用于对包含自定义说明书的存储库进行身份验证的 SSH 密钥。如果存储库已开启 GitHub，则必须生成新的 Ed25519 SSH 密钥。如果不生成新的 Ed25519 SSH 密钥，则与 GitHub 存储库的连接将失败。 | 否 | 字符串 |  | 
| --lb-type | 迁移现有负载均衡器时要创建的负载均衡器的类型（如果有）。 有效值包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/migrating-to-systems-manager-script-parameters.html)  | 否 | 字符串 | ALB | 
| --lb-access-logs-path | 现有 S3 存储桶的路径和存储负载均衡器访问日志的前缀。该 S3 存储桶与负载均衡器必须位于同一区域。如果您未提供值且 --lb-type 参数值设置为 None，则脚本会创建新的 S3 存储桶和前缀。请确保此前缀有适当的存储桶策略。 | 否 | 字符串 |  | 
| --enable-instance-protection | 如果设置为TRUE，则脚本会为您的 Auto Scaling 组创建自定义终止策略（Lambda 函数）。 EC2带有protected\$1instance标签的实例会受到保护，免受缩容事件的影响。为要保护其免受缩小事件影响的每个 EC2 实例添加一个protected\$1instance标签。 | 否 | 布尔值 | FALSE | 
| --command-logs-bucket | 用于存储 AWS ApplyChefRecipe 和 MountEBSVolumes 日志的现有 S3 存储桶名称。如果您未提供值，脚本将创建一个新的 S3 存储桶。 | 否 | 字符串 | aws-opsworks-application-manager-logs-account-id | 
| --custom-json-bucket | 用于存储自定义 JSON 的现有 S3 存储桶名称。如果您未提供值，脚本将创建一个新的 S3 存储桶。 | 否 | 字符串 | aws-apply-chef-application-manager-transition-data-account-id | 

**备注**：
+ 如果您使用私有 GitHub 存储库，则必须为 SSH 创建新的`Ed25519`主机密钥。这是因为 GitHub 更改了 SSH 中支持的密钥并删除了未加密的 Git 协议。有关`Ed25519`主机密钥的更多信息，请参阅 GitHub博客文章 “[改进 Git 协议安全” GitHub](https://github.blog/2021-09-01-improving-git-protocol-security-github/)。生成新的 `Ed25519` 主机密钥后，为 SSH 密钥创建一个 Systems Manager `SecureString` 参数，并将 `SecureString` 参数名称用作 `--repo-private-key` 参数的值。有关如何创建 System `SecureString` s Manager 参数的更多信息，请参阅《*AWS Systems Manager 用户指南》*中的[创建[ SecureString 参数 (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html#param-create-cli-securestring) 或创建 Systems Manager 参数（控制台）](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)。
+ `--http-username`、`--http-password` 和 `--repo-private-key` 参数指的是 Systems Manager `SecureString` 参数的名称。当您运行 `AWS-ApplyChefRecipes` 文档时，迁移脚本会使用这些参数。
+ `--http-username` 参数要求您还为 `--http-password` 参数指定一个值。
+  `--http-password` 参数要求您还为 `--http-username` 参数指定一个值。
+ 请勿同时为 `--http-password` 和 `--repo-private-key` 设置值。提供 SSH 密钥的 Systems Manager `SecureString` 参数名称 (`--repo-private-key`)，或者存储库用户名 (`--http-username`) 和密码 (`--http-password`)。