【问题标题】:Use EC2 credentials on ElasticBeanstalk with NodeJS在 ElasticBeanstalk 上使用 EC2 凭证和 NodeJS
【发布时间】:2015-11-16 12:10:33
【问题描述】:

我在 ElasticBeanstalk 上有一个小型 NodeJS 应用程序,它与 S3 和 DynamoDB 通信。目前我将访问和密钥设置为环境变量,并使用它们来更新 aws.config 对象。这是最好的做法吗?可以根据服务角色生成或使用凭据,所以我不再需要将凭据设置到环境变量中了吗?因此,当我必须使用来自用户的凭据来访问任何服务(如 DynamoDB 或 S3)时,我所拥有的服务角色。

【问题讨论】:

  • 如果你想要安全,你将不得不以某种方式使用加密,但环境变量的使用非常普遍。我认为像learn.chef.io 这样的东西是用来避免设置盒子的所有手动组件。

标签: node.js amazon-elastic-beanstalk credentials


【解决方案1】:

实例配置文件凭据比使用环境变量更好,因为实例配置文件凭据每隔几个小时就会自动轮换一次。由于您在问题中使用了术语服务角色,让我澄清一下服务角色和实例配置文件之间的区别。

实例配置文件角色与“服务角色”不同。服务角色是授予 beanstalk 服务权限以代表您调用其他服务的角色。

实例配置文件凭证与您的 EC2 实例相关联,只有您的 EC2 实例才能获得这些凭证。

从我之前关于主题here的回答中复制更多细节:

创建环境时,您可以选择传递 IamInstanceProfile(通常命名为 aws-elasticbeanstalk-ec2-role)和服务角色(通常命名为 aws-elasticbeantalk-service-role)。使用增强型应用程序运行状况监控时需要这两个角色。 请注意,这两个角色需要一组完全不同的权限,您应该为每个角色使用不同的角色。您可以找到记录在 here 中的服务角色和实例配置文件所需的权限列表.

使用 AWS 控制台创建/克隆/修改环境时,您将看到一个选择服务角色的选项。如果您以前从未使用过服务角色,您将看到“创建新角色”选项。控制台允许您使用单击按钮创建 beanstalk 所需的服务角色。您可以在创建角色之前查看权限。

第一次创建后,控制台会显示一个下拉列表,其中包含您之前创建的角色(通​​常命名为aws-elasticbeanstalk-service-role),您可以重复使用此服务角色。

来自文档:“服务角色是 Elastic Beanstalk 在代表您调用其他服务时承担的 IAM 角色。Elastic Beanstalk 在调用 Amazon Elastic Compute Cloud 时使用您在创建 Elastic Beanstalk 环境时指定的服务角色 ( Amazon EC2)、Elastic Load Balancing 和 Auto Scaling API 来收集有关其 AWS 资源运行状况的信息。”

创建/使用角色时,您需要确保 IAM 用户对您创建的角色具有传递角色权限。如果您不使用根账户,请确保您拥有 IAM 用户的 correct policies。 请注意 iam:PassRole 权限允许您的 IAM 用户将角色传递给 beanstalk 服务。

了解服务角色和实例配置文件here

【讨论】:

  • 所以我应该只在 aws-elasticbeanstalk-ec2-role 中附加 S3 访问权限,然后可以在没有设置凭据的情况下与 S3 通信? by var s3 = new aws.S3();
  • 是的...在此处查看权限docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 您可能需要更多人使用工作层或 ECS。在您的情况下,您似乎需要 s3 和 dynamodb
猜你喜欢
  • 1970-01-01
  • 2020-01-03
  • 2021-11-03
  • 2021-09-09
  • 2017-03-03
  • 2018-08-20
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
相关资源
最近更新 更多