尝试在 AWS Beanstalk 上获取 django 项目 运行 时因不存在实例配置文件而出错

Error with not existing instance profile while trying to get a django project running on AWS Beanstalk

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

eb create

过了一会儿我得到了错误

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

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

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

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

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

  1. 为 "EC2" 创建 IAM 角色作为 AWS 服务并附加 "AWSElasticBeanstalkFullAccess" 政策。
  2. 创建一个带有 tier/platform/application 选择的 AWS Beanstalk 环境。 (我使用 python:3-onbuild 使用 Web Tier 选择 Docker 平台)。
  3. 点击 "Configure More Options" > "Modify" 安全。
  4. 选择步骤1中创建的"IAM instance profile"。(保持服务角色 "aws-elasticbeanstalk-service-role" 因为这是需要的!它有一些关键政策!)
  5. "Save" 和 "Create Environment".

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

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

不知何故,默认的 aws-elasticbeanstalk-ec2-role 策略并不是我所期望的 working/taking 效果。如果我使用默认策略,我会收到与上面报告的相同的错误消息。

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