【问题标题】:How do I "associate an instance profile" with an environment on AWS?如何将实例配置文件与 AWS 上的环境“关联”?
【发布时间】:2019-10-01 12:47:41
【问题描述】:

我想将实例配置文件与我的环境“关联”(以加快我网站的上传性能),但在 AWS 文档中的任何地方(或在 SO 上)都找不到有用的说明。

如何将实例配置文件与 AWS 上的环境“关联”?

【问题讨论】:

  • FWIW,我正在将 Flask Web 应用程序上传到 EB,但性能非常缓慢,同时出现警告:“环境没有与之关联的 IAM 实例配置文件。为了提高部署速度,请将 IAM 实例配置文件与环境相关联。"
  • 另外,我使用eb 附加aws-elasticbeanstalk-ec2-role,但这似乎没有效果(我仍然收到警告)?
  • 你能详细解释一下associate an instance profile是什么,你想做什么?您打算通过 awscli、SDK 还是从管理控制台做一些事情?
  • @BMW:不知道。我只是在寻找遵守所需的步骤。
  • @BMW:再说一遍:不知道——这就是问题所在(或者更准确地说,为什么这是一个问题)。我不知道“关联”或“实例配置文件”或“环境”的确切含义。只是我需要这样做才能让事情顺利进行。

标签: amazon-web-services


【解决方案1】:

不清楚您要完成什么,但如果您只想“关联一个实例配置文件”,那么您可以:

http://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html

实例配置文件是 IAM 角色的容器。实例配置文件 用于将角色信息传递给 Amazon EC2 实例,当 实例启动。当您使用 Amazon EC2 控制台启动 IAM 角色的实例,您可以选择一个角色与 实例。在控制台中,显示的列表实际上是一个列表 实例配置文件名称。

如果您使用 AWS 管理控制台创建角色,控制台 自动创建实例配置文件并为其命名 作为它对应的角色。但是,如果您使用 CLI、API、 AWS SDK,或用于创建角色和实例配置文件的第三方工具, 您将角色和实例配置文件创建为单独的操作,并且 你可以给他们不同的名字。在这种情况下,你需要知道 您的实例配置文件的名称以及它们的角色名称 包含,以便您在使用时可以选择正确的实例配置文件 启动一个 Amazon EC2 实例。

【讨论】:

  • 是的,这就是我想要做的。不过,我仍然不完全清楚这些步骤。有没有更好的分类方法?
【解决方案2】:

如果您在尝试设置 Elastic Beanstalk 环境时看到此错误,则可能是 IAM 用户没有足够的权限。您应该为该用户添加名为 IAMFullAccess 的 IAM 策略。

【讨论】:

    【解决方案3】:

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

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

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

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

    不知何故,默认的 aws-elasticbeanstalk-ec2-role 策略无法按我的意愿工作/生效。

    【讨论】:

      【解决方案4】:

      不管怎样,AWS 控制台现在会显示一个警报(参见图片),其中包含一个链接,可帮助您将实例配置文件与您的环境相关联。因此,如果您在 CLI 中看到此消息,您可能需要登录到管理控制台,导航到 Elastic Beanstalk,然后选择您的环境。然后,您将看到该消息并能够使用该链接解决问题。

      注意 1:您可能需要在关联配置文件后重新部署您的应用。我做到了。

      注意 2:它确实使部署速度更快。

      【讨论】:

        【解决方案5】:

        奥罗姆,

        正如 E.J Brennan 在他的帖子中指出的那样,您必须首先创建一个角色,并将必要的 IAM 策略附加到该角色,然后创建实例配置文件:

        aws iam create-instance-profile --instance-profile-name YOUR_INSTANCE_PROFILE_NAME

        然后将你在开头创建的角色添加到实例配置文件中:

        aws iam add-role-to-instance-profile --instance-profile-name YOUR_INSTANCE_PROFILE_NAME --role-name YOUR_ROLE

        然后将实例配置文件附加到您的实例: aws ec2 associate-iam-instance-profile --instance-id YOUR_INSTANCE_ID --iam-instance-profile Name="YOUR_INSTANCE_PROFILE_NAME"

        这是你要找的吗?

        正如 E.J Brennan 还指出的那样,AWS 管理控制台在幕后为您执行实例配置文件。

        【讨论】:

          猜你喜欢
          • 2014-12-09
          • 2019-01-08
          • 2022-01-17
          • 2017-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-03
          相关资源
          最近更新 更多