

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

# 排查 Elastic Beanstalk 环境的问题
<a name="troubleshooting"></a>

本章提供关于对 Elastic Beanstalk 环境进行故障排除的指导。其中包括以下内容：
+ S AWS ystems Manager 简介，包括运行预定义的 Elastic Beanstalk 运行手册的程序，该运行手册输出故障排除步骤和建议。
+ 有关在环境状态降级时可采取措施及可使用资源的一般指导。
+ 按类别整理的具体故障排除提示。

**如果您的环境运行状况变为红色**，我们建议您首先使用包含预定义运行手册的 AWS Systems Manager 工具对 Elastic Beanstalk Beanstalk 进行故障排除。有关更多信息，请参阅 [ 使用 Systems Manager 工具](#troubleshooting-systems-manager)。

**尝试使用 Amazon Q 开发者版 CLI 进行人工智能辅助故障排除**  
 Amazon Q 开发者版 CLI 可以帮助您针对环境问题快速进行故障排除。Q CLI 可通过检查环境状态、审核事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练，请参阅博客中的使用 [Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。 AWS 

**Topics**
+ [使用 AI 驱动的环境分析](#troubleshooting-ai-analysis)
+ [使用 AWS Systems Manager Elastic Beanstalk 运行手册](#troubleshooting-systems-manager)
+ [排查 Elastic Beanstalk 环境问题的一般指导](#troubleshooting-general)
+ [使用环境变量访问密钥和参数的环境](#troubleshooting-secrets-env-variables)
+ [环境创建和实例启动](#troubleshooting-envcreate)
+ [部署](#troubleshooting-deployments)
+ [健康](#troubleshooting-health)
+ [配置了双堆栈负载均衡器的环境](#troubleshooting-dual-stack-load-balancer)
+ [配置](#troubleshooting-configuration)
+ [Docker 容器故障排除](#troubleshooting-docker)
+ [常见问题解答](#troubleshooting-faq)
+ [常见错误](#common-errors)
+ [部署错误](#python-common-troubleshooting)

## 使用 AI 驱动的环境分析
<a name="troubleshooting-ai-analysis"></a>

Elastic Beanstalk 提供基于人工智能的分析，以帮助确定根本原因并推荐环境健康问题的解决方案。您可以通过控制台的 **AI 分析**按钮、通过使用 Elastic Beanstalk API 或 AWS CLI通过 EB CLI **eb logs --analyze** 运行来访问此功能。该分析会检查您环境的日志、事件和实例运行状况，以确定关键问题并提供 step-by-step故障排除建议。

有关更多信息，请参阅 [人工智能驱动的环境分析](health-ai-analysis.md)。

## 使用 AWS Systems Manager Elastic Beanstalk 运行手册
<a name="troubleshooting-systems-manager"></a>

您可以使用 Systems Manager 对 Elastic Beanstalk 环境进行故障排除。为帮助您快速入门，Systems Manager 提供预定义的 Elastic Beanstalk 自动化运行手册。自动化运行手册是一种 Systems Manager 文档，用于定义要对环境的实例及其他 AWS 资源执行的操作。

`AWSSupport-TroubleshootElasticBeanstalk` 文档是一本自动化运行手册，旨在帮助识别一系列可能导致 Elastic Beanstalk 环境降级的常见问题。为此，它会检查您的环境组件，包括：EC2 实例、VPC、 CloudFormation 堆栈、负载均衡器、Auto Scaling 组以及与安全组规则、路由表和 ACLs关联的网络配置。

它还会提供将捆绑日志文件从环境上传到 AWS Support 的选项。

有关更多信息，请参阅**《AWS Systems Manager Automation Runbook Reference》中的 [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)。

**通过 Systems Manager 运行 `AWSSupport-TroubleshootElasticBeanstalk` 运行手册**
**注意**  
在 Elastic Beanstalk 环境 AWS 区域 所在的位置运行此过程。

1. 打开 [AWS Systems Manager控制台](https://console.aws.amazon.com/systems-manager/home)。

1. 从导航窗格中的**变更管理**下，选择**自动化**。

1. 选择**执行自动化**。

1. 在 **Amazon 所有**选项卡的**自动化文档**搜索框中，输入 `AWSSupport-TroubleshootElasticBeanstalk`。

1. 选择**AWSSupport-TroubleshootElasticBeanstalk**卡片，然后选择 “**下一步**”。

1. 选择**执行**。

1. 在**输入参数**部分中：

   1. 从下**AutomationAssumeRole**拉列表中，选择允许 Systems Manager 代表您执行操作的角色的 ARN。

   1. 对于 **ApplicationName**，输入 Elastic Beanstalk 应用程序的名称。

   1. 在**环境名称中**，输入 Elastic Beanstalk 环境。

   1. （可选）对于 **S3 UploaderLink**，如果 AWS 支持工程师为您提供了用于日志收集的 S3 链接，请输入链接。

1. 选择**执行**。

   如果任一步骤失败，请选择该失败步骤的**步骤 ID** 列下的链接。这将显示该步骤的**执行详细信息**页面。该**VerificationErrorMessage**部分将显示需要注意的步骤的摘要。例如，`IAMPermissionCheck` 可能会显示警告消息。在这种情况下，您可以检查在下**AutomationAssumeRole**拉列表中选择的角色是否具有必要的权限。

成功完成所有步骤后，输出会提供故障排除步骤和建议，以将环境恢复到正常运行状态。

## 排查 Elastic Beanstalk 环境问题的一般指导
<a name="troubleshooting-general"></a>

错误消息可显示在控制台的“事件”页面、日志中或“运行状况”页面上。您也可以采取措施从最近更改所导致的降级环境中恢复。如果您的环境运行状况变为红色，请尝试以下操作：
+ 请求对您的环境进行 AI 驱动的分析。有关更多信息，请参阅 [人工智能驱动的环境分析](health-ai-analysis.md)。
+ 如果对环境执行的操作返回的错误文本包含 `The stack stack_id associated with environment environment-ID is in stack-status state`，请参阅[将 Elastic Beanstalk 环境从无效状态中恢复](environment-management-invalid-stack.md)，获取有关故障排除的帮助。
+ 如果对环境执行的操作返回的错误文本包含`Environment environment-name associated CloudFormation stack stack_arn does not exist`，请终止环境并重新创建一个环境。
+ 检查最近的环境[事件](using-features.events.md)。来自 Elastic Beanstalk 的有关部署、加载和配置问题的消息通常出现在此处。
+ 检查最近的环境[更改历史记录](using-features.changehistory.md)。更改历史记录列出了对环境进行的所有配置更改，并包括其他信息，例如哪些 IAM 用户进行了更改以及设置了哪些配置参数。
+ [拉取日志](using-features.logging.md)以查看最近的日志文件条目。Web 服务器日志包含有关传入请求和错误的信息。
+ [连接到实例](using-features.ec2connect.md)并检查系统资源。
+ [回滚](using-features.deploy-existing-version.md)到应用程序的前一个正常工作的版本。
+ 撤消最近的配置更改或还原[已保存的配置](environment-configuration-methods-before.md#configuration-options-before-savedconfig)。
+ 部署新环境。如果环境看起来运行状况良好，则执行[别名记录交换](using-features.CNAMESwap.md)以将流量路由到新环境并继续调试旧环境。

## 使用环境变量访问密钥和参数的环境
<a name="troubleshooting-secrets-env-variables"></a>

**事件：***Instance deployment failed to get one or more secrets*

此消息表明 Elastic Beanstalk 无法获取您的应用程序部署期间指定的一个或多个密钥。
+ 请检查您的环境变量配置中 ARN 值指定的资源是否存在。
+ 请确认您的 Elastic Beanstalk EC2 实例配置文件角色具有访问该资源[所需的 IAM 权限](AWSHowTo.secrets.IAM-permissions.md#AWSHowTo.secrets.IAM-permissions.secrets-manager)。
+ 如果此事件是通过 `RestartAppServer` 操作触发，问题修复后，请重试 `RestartAppServer` 调用以解决问题。
+ 如果事件是通过 `UpdateEnvironment` 调用触发，请重试 `UpdateEnvironment` 操作。

有关这些命令的示例，请参阅 [https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html](https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html)。有关使用 API 进行这些操作的更多信息，请参阅《[AWS Elastic Beanstalk API 参考](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/)》**。

**事件：***Instance deployment detected one or more multiline environment values, which are not supported for this platform*

除 Docker 和 ECS 托管 Docker 平台外，Amazon Linux 2 平台均不支持多行变量。有关继续操作的可用选项，请参阅[多行值](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.multiline)。

**事件：***指定密钥时CreateEnvironment 失败*

如果 `CreateEnvironment` 失败并且您有密钥作为环境变量，您需要解决潜在的问题，然后使用 `UpdateEnvironment` 来完成环境设置。请勿使用 `RestartAppServer`，因为在这种情况下它不足以改善环境。有关这些命令的示例，请参阅 [https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html](https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html)。有关使用 API 进行这些操作的更多信息，请参阅《[AWS Elastic Beanstalk API 参考](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/)》**。

## 环境创建和实例启动
<a name="troubleshooting-envcreate"></a>

**事件：***启动环境失败*

此事件在 Elastic Beanstalk 尝试启动环境并在过程中遭遇失败时发生。**事件**页上过去的事件会提醒您此问题的根本原因。

**事件：***环境创建完成，但出现命令超时。请尝试增加超时时间。*

如果您使用的配置文件要对实例运行命令、下载大型文件或安装程序包，则部署应用程序的时间可能很长。增加[命令超时](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，让应用程序在部署期间有更多时间开始运行。

**事件：***创建以下资源失败：[AWSEBInstanceLaunchWaitCondition]*

此消息指示您环境的 Amazon EC2 实例未与成功启动的 Elastic Beanstalk 通信。如果实例没有 Internet 连接就会出现这种情况。如果您配置了环境以在私有 VPC 子网中启动实例，[请确保子网具有 NAT](vpc.md) 以允许实例连接到 Elastic Beanstalk。

**事件：***此区域中需要服务角色。请将服务角色选项添加到环境。*

Elastic Beanstalk 使用服务角色来监视环境中的资源并支持[托管平台更新](environment-platform-update-managed.md)。请参阅[管理 Elastic Beanstalk 服务角色](iam-servicerole.md)了解更多信息。

## 部署
<a name="troubleshooting-deployments"></a>

**问题：***应用程序在部署期间变得不可用*

由于 Elastic Beanstalk 使用直接升级过程，因此可能会有几秒钟的停机时间。使用[滚动部署](using-features.rolling-version-deploy.md)可尽量减少部署对您的生产环境的影响。

**事件：***创建 AWS Elastic Beanstalk 应用程序版本失败*

应用程序源包可能太大，或者您已达到了[应用程序版本配额](applications-versions.md)。

**事件：***环境更新完成，但出现命令超时。请尝试增加超时时间。*

如果您使用的配置文件要对实例运行命令、下载大型文件或安装程序包，则部署应用程序的时间可能很长。增加[命令超时](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，让应用程序在部署期间有更多时间开始运行。

## 健康
<a name="troubleshooting-health"></a>

**事件：***CPU 使用率超过 95.00%*

尝试[运行更多实例](using-features.managing.as.md)或[选择不同的实例类型](using-features.managing.ec2.md)。

**事件：**Ela *stic Load Balancer awseb-*myapp* 运行状况良好的实例为零*，*ELB 进程在实例不足*X*时运行状况不*佳。*Y* ，*并非所有实例上的 ELB 进程都运行正常*。

这些消息表明您的负载均衡器运行状况检查在一个或多个实例上失败。如果您的应用程序似乎正在运行，请确保您的应用程序的运行状况检查 URL 配置正确。如果不是，请尝试以下方法：
+ 检查您的应用程序日志（例如`/var/log/web.stdout.log`）以及`/var/log/eb-engine.log`是否存在错误、启动失败或部署问题。
+ 在 `/var/log/nginx/` (nginx) `/var/log/httpd/` 或 (Apache) 中检查代理日志中是否存在连接错误。
+ 验证您的应用程序使用 HTTP 200 响应配置的运行状况检查路径并正在监听预期的端口。
+ 验证安全组允许从负载均衡器流向运行状况检查端口上的实例的入站流量。在 EC2 控制台中，检查实例安全组的入站规则，以确认运行状况检查端口已向负载均衡器的安全组开放。
+ 在 CloudWatch 指标 (`CPUUtilization`,`EnvironmentHealth`) 中检查 CPU 和内存利用率。资源耗尽可能导致运行状况检查超时。

有关更多详细信息，请[检索完整的捆绑包日志](using-features.logging.md)或[启用 CloudWatch 日志流](AWSHowTo.cloudwatchlogs.md)。您也可以运行[https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)自动化运行手册来帮助诊断问题。

**事件：***Elastic Load Balancer awseb-找*myapp*不到*

您的环境的负载均衡器可能已被移除 out-of-band。仅使用配置选项以及 Elastic Beanstalk 提供的[可扩展性](ebextensions.md)对环境资源进行更改。重建您的环境或者启动新环境。

**事件：***EC2 实例启动失败。等待新的 EC2 实例启动……*

您环境的实例类型可能具有低可用性，或者您已达到了账户的实例配额。检查[服务运行状况控制面板](https://status.aws.amazon.com/)，以确保 Elastic Compute Cloud (Amazon EC2) 服务为绿色，或者[请求提高配额](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ec2-instances)。

**事件：***所有实例均未发送数据。*

Elastic Beanstalk 没有从您的任何实例接收运行状况数据。这可能是由网络连接问题、健康代理问题或系统级故障引起的。
+ 验证网络连接。检查安全组是否允许出站 HTTPS（端口 443）。对于私有子网中的实例，请验证是否配置了 NAT 网关或 VPC 终端节点。检查路由表中的出站路由是否正确，并确保 DNS 解析在您的 VPC 中正常运行。
+ 检查运行状况监控代理。查看`/var/log/healthd/daemon.log`健康代理错误和系统`/var/log/messages`级错误。通过 SSH 连接到实例并运行，验证 healthd 服务是否正在运行`systemctl status healthd`。
+ 检查系统级问题，例如资源耗尽（内存、CPU、磁盘空间）、 NTP/system 时钟同步和实例元数据服务连接。

有关更多详细信息，请[检索完整的捆绑包日志](using-features.logging.md)或[启用 CloudWatch 日志流](AWSHowTo.cloudwatchlogs.md)。您也可以运行[https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)自动化运行手册来帮助诊断问题。

## 配置了双堆栈负载均衡器的环境
<a name="troubleshooting-dual-stack-load-balancer"></a>

**事件：***VPC *vpc\$1id* 未配置 IPv6 CIDR 块。 IPv6双栈负载均衡器需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与您的 VPC 关联。*

您的 VPC 和所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](environments-cfg-elbv2-ipv6-dualstack.md#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **事件：***VPC 的一个或多个子网*vpc\$1id*未配置 IPv6 CIDR 块。 IPv6 双栈负载均衡器使用的子网需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与所有必需的子网关联。*

您的 VPC 的所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](environments-cfg-elbv2-ipv6-dualstack.md#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **错误：***The `IpAddressType` option can only be applied on Elastic Beanstalk environments configured with an Application Load Balancer or Network Load Balancer.*

此消息表明 Elastic Beanstalk 环境可能是单实例环境，或者该环境可能正在使用经典负载均衡器。只有配置了应用程序负载均衡器或网络负载均衡器的环境才能配置 `IpAddressType`。

## 配置
<a name="troubleshooting-configuration"></a>

**事件：***The stack `stack_id` associated with environment `environment-ID` is in `stack-status` state*

您的环境的底层 CloudFormation 堆栈可能处于 *\$1\$1FAILED 状态。*必须修复此状态，才能继续在环境中运行 Elastic Beanstalk。有关更多信息，请参阅 [将 Elastic Beanstalk 环境从无效状态中恢复](environment-management-invalid-stack.md)。

**事件：***您无法使用 Elastic Load Balancing Target（Elastic Load Balancing 目标）选项和 Application Healthcheck URL（应用程序运行状况检查 URL）选项的值来配置 Elastic Beanstalk 环境*

`Target` 命名空间中的 `aws:elb:healthcheck` 选项已弃用。从环境中删除 `Target` 选项命名空间，然后重试更新。

**事件：***ELB cannot be attached to multiple subnets in the same AZ*

如果您尝试在同一可用区的子网之间移动负载均衡器，则会看到此消息。更改负载均衡器上的子网需要将其移出原始可用区，然后将所需子网移回原始可用区。在此过程中，您的所有实例都将在两者之间迁移 AZs，从而导致长时间停机。相反，请考虑创建新环境并[执行别名记录交换](using-features.CNAMESwap.md)。

## Docker 容器故障排除
<a name="troubleshooting-docker"></a>

**事件：***无法拉取最新 Docker 映像：资源库名称 () 无效，只允许 [a-z0-9-\$1.]。有关详细信息，请跟踪日志。*

使用 JSON 验证程序检查 `dockerrun.aws.json` 文件的语法。另请针对 [准备 Docker 映像以部署到 Elastic Beanstalk](single-container-docker-configuration.md) 中说明的要求验证 dockerfile 内容

**事件：***在 Dockerfile 中未找到 EXPOSE 指令，中止部署*

`Dockerfile` 或 `dockerrun.aws.json` 文件未声明容器端口。使用 `EXPOSE` 指令 (`Dockerfile`) 或 `Ports` 块 (`dockerrun.aws.json` 文件) 为传入流量公开端口。

**事件：***无法*repository*从中下载身份验证凭证 *bucket name**

为`.dockercfg`文件`dockerrun.aws.json`提供了无效的 EC2 key pair and/or S3 存储桶。或者，实例配置文件没有 S3 存储桶的 GetObject 授权。验证 `.dockercfg` 文件是否包含有效的 S3 存储桶和 EC2 密钥对。在实例配置文件中授予 IAM 角色执行 `s3:GetObject` 操作的权限。有关详细信息，请转到 [管理 Elastic Beanstalk 实例配置文件](iam-instanceprofile.md)

**事件：** *活动执行失败，原因是出现警告：身份验证配置文件无效*

您的身份验证文件 (`config.json`) 格式不正确。请参阅 [映像存储库的身份验证使用 AWS Secrets Manager](docker-configuration.remote-repo.md)。

## 常见问题解答
<a name="troubleshooting-faq"></a>

**问题：***如何将我的应用程序 URL 从 myapp.us-west-2.elasticbeanstalk.com 更改为 www.myapp.com？*

在 DNS 服务器中注册一个别名记录，如 **www.mydomain.com CNAME mydomain.elasticbeanstalk.com**。

**问题**：*如何为我的 Elastic Beanstalk 应用程序指定一个特定可用区。*

你可以使用 APIs、CLI、Eclipse 插件或 Visual Studio 插件来选择特定的可用区。有关使用 Elastic Beanstalk 控制台指定可用区的说明，请参阅[使用 Auto Scaling 功能自动扩缩 Elastic Beanstalk 环境实例](using-features.managing.as.md)。

**问题：***如何更改我的环境的实例类型？*

要更改环境的实例类型，请转到环境配置页面，然后在**实例**配置类别中选择**编辑**。然后，选择一种新的实例类型并选择 **Apply**（应用）以更新环境。之后，Elastic Beanstalk 终止所有正在运行的实例，并将之替换为新实例。

**问题：***如何确定是否有人对环境进行了配置更改？*

要查看此信息，请在 Elastic Beanstalk 控制台的导航窗格中选择 **Change history**（更改历史记录）以显示所有环境的配置更改列表。此列表包括更改的日期和时间、更改的配置参数及值以及进行更改的 IAM 用户。有关更多信息，请参阅[更改历史记录](using-features.changehistory.md)。

**问题：***能否防止在实例终止时删除 Amazon EBS 卷？*

您环境中的实例使用 Amazon EBS 进行存储；不过，当 Auto Scaling 终止一个实例时，根卷会被删除。我们不建议您在实例上存储状态或其他数据。如有必要，您可以使用 AWS CLI:防止卷被删除`$ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false`，如[AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html)中所述。

**问题：***如何删除 Elastic Beanstalk 应用程序中的个人信息？*

AWS 你的 Elastic Beanstalk 应用程序使用的资源可能会存储个人信息。当您终止环境时，Elastic Beanstalk 将终止其创建的资源。还将终止使用[配置文件](ebextensions.md)添加的资源。但是，如果您在 Elastic Beanstalk 环境之外创建了 AWS 资源并将其与应用程序关联，则可能需要手动检查您的应用程序可能存储的个人信息是否未被保留。在本开发人员指南中，当我们讨论额外资源的创建时，我们还提到了何时应考虑删除它们。

## 常见错误
<a name="common-errors"></a>

本主题列出了使用 EB CLI 时遇到的常见错误消息和可能的解决方案。如果您遇到此处未显示的错误消息，请使用*反馈* 链接告诉我们。

**ERROR: An error occurred while handling git command. Error code: 128 Error: fatal: Not a valid object name HEAD**

**原因：**初始化 Git 存储库后但尚未提交时会显示此错误消息。当项目文件夹包含 Git 存储库时，EB CLI 会查找 HEAD 修订。

**解决方案：**将项目文件夹中的文件添加到暂存区中并提交。

```
~/my-app$ git add .
~/my-app$ git commit -m "First commit"
```

**ERROR: This branch does not have a default environment. 您必须通过键入 “eb status my-env-name” 来指定环境，或者通过键入 “eb us my-env-name e” 来设置默认环境。**

**原因：**在 git 中创建新分支时，默认情况下未挂载到 Elastic Beanstalk 环境。

**解决方案：**运行 **eb list** 查看可用环境列表。然后运行 **eb use *env-name*** 使用一个可用环境。

**ERROR: 2.0\$1 Platforms require a service role. You can provide one with --service-role option**

**原因：**如果您使用 **eb create** 指定环境名称（例如 **eb create my-env**），EB CLI 不会尝试为您创建服务角色。如果没有默认服务角色，就会显示以上错误。

**解决方案：**不带环境名称运行 **eb create**，按照提示创建默认服务角色。

## 部署错误
<a name="python-common-troubleshooting"></a>

Elastic Beanstalk 部署可能以 404（应用程序无法启动时）或 500（应用程序在运行时失败）作为响应。要解决许多常见问题，您可以使用 EB CLI 检查部署状态、查看其日志、通过 SSH 访问您的 EC2 实例，或者打开应用程序环境的 AWS 管理控制台页面。

**使用 EB CLI 帮助排除部署的问题**

1. 运行 **eb status** 以查看当前部署的状态和 EC2 主机的运行状况。例如：

   ```
   $ eb status --verbose
   
   Environment details for: python_eb_app
     Application name: python_eb_app
     Region: us-west-2
     Deployed Version: app-150206_035343
     Environment ID: e-wa8u6rrmqy
     Platform: 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7
     Tier: WebServer-Standard-
     CNAME: python_eb_app.elasticbeanstalk.com
     Updated: 2015-02-06 12:00:08.557000+00:00
     Status: Ready
     Health: Green
     Running instances: 1
         i-8000528c: InService
   ```
**注意**  
使用 `--verbose` 开关可提供有关您正在运行实例状态的信息。如果不使用它，**eb status** 将只输出有关您的环境的一般信息。

1. 运行 **eb health** 以查看有关您的环境的运行状况信息：

   ```
   $ eb health --refresh
    elasticBeanstalkExa-env                                  Degraded                  2016-03-28 23:13:20
   WebServer                                                                              Ruby 2.1 (Puma)
     total      ok    warning  degraded  severe    info   pending  unknown
       5        2        0        2        1        0        0        0
   
     instance-id   status     cause
       Overall     Degraded  Incorrect application version found on 3 out of 5 instances. Expected version "Sample Application" (deployment 1).
     i-d581497d    Degraded  Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1).
     i-d481497c    Degraded  Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1).
     i-136e00c0    Severe    Instance ELB health has not been available for 5 minutes.
     i-126e00c1    Ok
     i-8b2cf575    Ok
   
     instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10
       Overall     646.7   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
     i-dac3f859    167.5    1675      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-05013a81    161.2    1612      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-04013a80    0.0         -      -      -      -         -        -       -       -       -
     i-3ab524a1    155.9    1559      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-bf300d3c    162.1    1621      0      0      0    0.003    0.002    0.001   0.001   0.000
   
     instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%
     i-d581497d    t2.micro   1a   25 mins       0.16     0.1        7.0    0.0      1.7   91.0       0.1
     i-d481497c    t2.micro   1a   25 mins       0.14     0.1        7.2    0.0      1.6   91.1       0.0
     i-136e00c0    t2.micro   1b   25 mins        0.0    0.01        0.0    0.0      0.0   99.9       0.1
     i-126e00c1    t2.micro   1b   25 mins       0.03    0.08        6.9    0.0      2.1   90.7       0.1
     i-8b2cf575    t2.micro   1c   1 hour        0.05    0.41        6.9    0.0      2.0   90.9       0.0
     
     instance-id   status     id   version              ago                                  deployments
     i-d581497d    Deployed   2    v2                   9 mins
     i-d481497c    Deployed   2    v2                   7 mins
     i-136e00c0    Failed     2    v2                   5 mins
     i-126e00c1    Deployed   1    Sample Application   25 mins
     i-8b2cf575    Deployed   1    Sample Application   1 hour
   ```

   以上示例显示带有五个实例的环境，第三个实例上的版本“v2”部署失败。在部署失败之后，预期版本将重置为最后一个成功的版本，在本例中是第一个部署的“Sample Application”。请参阅[使用 EB CLI 监控环境的运行状况](health-enhanced-ebcli.md)了解更多信息。

1. 运行 **eb logs** 以下载和查看与您的应用程序部署关联的日志。

   ```
   $ eb logs
   ```

1. 运行 **eb ssh** 以连接在应用程序上运行的 EC2 实例并直接查看它。在实例上，您部署的应用程序可在 `/opt/python/current/app` 目录中找到，您的 Python 环境可在 `/opt/python/run/venv/` 中找到。

1. 运行 **eb console** 以在 [AWS 管理控制台](https://aws.amazon.com/console/)上查看您的应用程序环境。您可以使用 Web 界面方便地检查部署的各个方面，包括应用程序的配置、状态、事件和日志。您也可以下载当前或过去您已部署到服务器的应用程序版本。