尝试在 AWS Beanstalk 上运行 django 项目时出现实例配置文件不存在的错误

Posted

技术标签:

【中文标题】尝试在 AWS Beanstalk 上运行 django 项目时出现实例配置文件不存在的错误【英文标题】:Error with not existing instance profile while trying to get a django project running on AWS Beanstalk 【发布时间】:2015-08-27 17:33:24 【问题描述】:

我正在尝试按照本教程将 django 项目部署到 AWS Beanstalk。我执行了

eb create

过了一会儿我得到了错误

The instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.

我是亚马逊云的新手,无法解释此错误。有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

该角色是在您第一次使用弹性 beanstalk 控制台时创建的。 CLI 也会尝试创建它,但您的 IAM 用户没有创建它的权限。您可以通过登录控制台并进入平台选择页面来修复此错误。你会注意到它会要求你创建一个角色。

否则,您可以授予 IAM 用户创建角色权限,CLI 将为您创建角色。

【讨论】:

按照您的建议登录到基于浏览器的控制台,可以正常工作。但是,我无法找到您的后一个建议如何工作:“授予您的 IAM 用户创建角色权限。”我找不到任何此类授予我的 IAM 用户的权限。有什么建议吗? 您必须手动编辑您的 IAM 策略。您可能需要阅读一些有关 IAM 策略的文档。 通过 Web 控制台为我工作,但我尝试向我的 eb-cli 配置文件用户添加“iam:CreateRole”策略,但在尝试通过 cli 创建环境时仍然抛出相同的错误... 【参考方案2】:

您可以在此处选中一个适用于 AWS Beanstalk 的选项。这是使用 AWS 控制台。

    为“EC2”创建 IAM 角色作为 AWS 服务并附加 “AWSElasticBeanstalkFullAccess”策略。 使用选择的层/平台/应用程序创建 AWS Beanstalk 环境。 (我在 Web Tier 上使用 python:3-onbuild 选择了 Docker 平台)。 点击“配置更多选项”>“修改”安全​​性。 选择在步骤 1 中创建的“IAM 实例配置文件”。(保留服务角色 “aws-elasticbeanstalk-service-role”,因为这是必需的!它有一些关键政策!) “保存”和“创建环境”。

同样,它也应该适用于 AWS CLI 和 AWS SDK。这里的关键是您在创建 Beanstalk 环境期间为 EC2 选择的实例配置文件角色(或者说实例 IAM 角色/实例配置文件)。

您可以根据需要创建客户托管策略扩展或重用 AWSElasticBeanstalkFullAccess 策略。请参阅 AWSElasticBeanstalkFullAccess 以更好地理解它。此外,请查看更多以 AWSElasticBeanStalk* 开头的 AWS 托管策略。

不知何故,默认的 aws-elasticbeanstalk-ec2-role 策略无法按我的意愿工作/生效。如果我使用默认策略,我会收到与上面报告的相同的错误消息。

【讨论】:

【参考方案3】:

我遇到了同样的问题,但后来通过首先从浏览器 GUI 创建一个测试环境来解决它,这将创建所有必要的角色,然后从 CLI 运行命令 eb create。成功创建所需的环境后,您可以删除测试环境。

【讨论】:

以上是关于尝试在 AWS Beanstalk 上运行 django 项目时出现实例配置文件不存在的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 aws elastic beanstalk 环境实例启动上运行 shell 脚本

在 AWS Elastic Beanstalk 上运行临时脚本

在 AWS Elastic Beanstalk 上运行 rake db:seed

Symfony 4 在 AWS Elastic Beanstalk 上运行

在 AWS Elastic BeanStalk 上运行的 Spring Boot 应用程序中配置 AWS RDS

在 AWS Elastic Beanstalk 上使用 Docker 进行 Django 迁移