排查 Elastic Beanstalk 问题 - 类别和常见问题解答 - AWS Elastic Beanstalk

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

排查 Elastic Beanstalk 问题 - 类别和常见问题解答

本主题将按类别提供更具体的故障排除提示。

环境创建和实例启动

事件:启动环境失败

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

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

如果您使用的配置文件要对实例运行命令、下载大型文件或安装程序包,则部署应用程序的时间可能很长。增加命令超时,让应用程序在部署期间有更多时间开始运行。

事件:无法创建以下资源:[AWSEBInstanceLaunchWaitCondition]

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

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

Elastic Beanstalk 使用服务角色来监视环境中的资源并支持托管平台更新。请参阅管理 Elastic Beanstalk 服务角色了解更多信息。

部署

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

由于 Elastic Beanstalk 使用直接升级过程,因此可能会有几秒钟的停机时间。使用滚动部署可尽量减少部署对您的生产环境的影响。

事件:无法创建 AWS Elastic Beanstalk 应用程序版本

应用程序源包可能太大,或者您已达到了应用程序版本配额

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

如果您使用的配置文件要对实例运行命令、下载大型文件或安装程序包,则部署应用程序的时间可能很长。增加命令超时,让应用程序在部署期间有更多时间开始运行。

健康

事件:CPU 使用率超过 95.00%

尝试运行更多实例选择不同的实例类型

事件:Elastic Load Balancer awseb-myapp 没有正常运行的实例

如果您的应用程序确实在工作,请确保正确配置了应用程序的运行状况检查 URL。如果不是这种情况,请查看运行状况屏幕和环境日志以了解更多信息。

事件:找不到 Elastic Load Balancer awseb-myapp

您的环境负载均衡器可能已经在外部删除。仅使用配置选项以及 Elastic Beanstalk 提供的可扩展性对环境资源进行更改。重建您的环境或者启动新环境。

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

您环境的实例类型可能具有低可用性,或者您已达到了账户的实例配额。检查服务运行状况控制面板,以确保 Elastic Compute Cloud (Amazon EC2) 服务为绿色,或者请求提高配额

配置

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

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

事件:ELB 无法连接到一可用区的多个子网。

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

Docker 容器故障排除

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

使用 JSON 验证程序检查 dockerrun.aws.json 文件的语法。另请针对 准备 Docker 映像以部署到 Elastic Beanstalk 中说明的要求验证 dockerfile 内容

事件:在 Dockerfile 中未找到 EXPOSE 指令,中止部署

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

事件:无法从存储桶名称下载身份验证凭证存储库

dockerrun.aws.json.dockercfg 文件提供了无效的 EC2 密钥对和/或 S3 存储桶。或者,实例配置文件没有针对 S3 存储桶的 GetObject 授权。验证 .dockercfg 文件是否包含有效的 S3 存储桶和 EC2 密钥对。在实例配置文件中授予 IAM 角色执行 s3:GetObject 操作的权限。有关详细信息,请转到 管理 Elastic Beanstalk 实例配置文件

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

您的身份验证文件 (config.json) 格式不正确。请参阅 使用 Elastic Beanstalk 中私有存储库中的图像

常见问题解答

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

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

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

您可以使用 API、CLI、Eclipse 插件或 Visual Studio 插件来选取特定可用区。有关使用 Elastic Beanstalk 控制台指定可用区的说明,请参阅Elastic Beanstalk 环境的 Auto Scaling 组

问题:如何更改我的环境的实例类型?

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

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

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

问题:能否防止在实例终止时删除 Amazon EBS 卷?

您环境中的实例使用 Amazon EBS 进行存储;不过,当 Auto Scaling 终止一个实例时,根卷会被删除。我们不建议您在实例上存储状态或其他数据。如果需要,您可以使用 AWS CLI 阻止卷被删除:$ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false;具体说明请参阅 AWS CLI 参考

问题:如何删除 Elastic Beanstalk 应用程序中的个人信息?

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