返回

如何在 Elastic Beanstalk 中解决托管平台更新错误:分步指南

Linux

解决 Elastic Beanstalk 托管平台更新错误

引言

在配置 Elastic Beanstalk 环境时,您可能会遇到配置验证异常,提示:“无效选项规范(命名空间:'aws:elasticbeanstalk:managedactions',选项名称:'ManagedActionsEnabled'):当你的环境使用服务链接角色'AWSServiceRoleForElasticBeanstalk'时,你无法启用托管平台更新。请选择具有'AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy' 托管策略的服务角色”。本文将引导您逐步解决此问题,并帮助您成功配置 Elastic Beanstalk。

问题

此错误表明您的 Elastic Beanstalk 环境使用服务链接角色“AWSServiceRoleForElasticBeanstalk”。这个角色缺乏必要的权限来启用托管平台更新。为了启用此功能,您需要选择一个具有“AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy”托管策略的服务角色。

解决方法

创建服务角色

  • 前往 AWS IAM 控制台并创建一个新的服务角色。
  • 确保为该角色附加“AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy”托管策略。

将服务角色附加到环境

  • 返回 Elastic Beanstalk 控制台,编辑您的环境。
  • 在“配置”选项卡中,向下滚动到“权限”部分。
  • 从“服务角色”下拉菜单中选择您新创建的服务角色。

重新部署环境

  • 保存更改并重新部署您的环境。这将应用新的服务角色和托管平台更新设置。

代码示例

# 使用 AWS CLI 创建服务角色
aws iam create-role --role-name MyServiceRole --assume-role-policy-document file://trust-policy.json

# 将托管平台更新策略附加到服务角色
aws iam attach-role-policy --role-name MyServiceRole --policy-arn arn:aws:iam::aws:policy/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

# 使用 AWS CLI 更新环境的服务角色
aws elasticbeanstalk update-environment --environment-name my-env --service-role MyServiceRole

# 重新部署环境
aws elasticbeanstalk deploy --environment-name my-env

附加信息

  • 有关托管平台更新的更多信息,请参阅 AWS 文档
  • 有关服务角色的更多信息,请参阅 AWS IAM 文档

常见问题解答

  1. 为什么我需要使用服务角色来启用托管平台更新?
    答:Elastic Beanstalk 需要特定的权限才能在您的环境中执行平台更新。服务角色提供这些权限,而无需授予对您的 AWS 账户的完全访问权限。

  2. 我可以在哪里找到“AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy”托管策略?
    答:这个托管策略位于 AWS IAM 控制台中,您可以在“策略”部分找到它。

  3. 重新部署环境后,如何验证托管平台更新是否已启用?
    答:您可以检查 Elastic Beanstalk 控制台中环境的“事件”选项卡,以查看有关平台更新的任何条目。

  4. 启用托管平台更新有哪些好处?
    答:托管平台更新会自动将您的环境更新到 Elastic Beanstalk 平台的最新版本,从而确保您的应用程序保持安全性和最新性。

  5. 我还可以使用哪些其他方法来管理 Elastic Beanstalk 平台更新?
    答:除了托管平台更新之外,您还可以使用以下方法管理平台更新:

    • 手动部署
    • 使用 CodeDeploy