我在ElasticBeanstalk上有一个小型NodeJS应用程序,它与S3和DynamoDB进行通信。目前,我将访问和密钥设置为环境变量,并使用它们来更新aws.config对象。这是最好的做法吗?可以根据服务角色生成或使用凭据,因此我不再需要将凭据设置为环境变量?因此,当我必须使用来自用户的凭据来访问DynamoDB或S3等任何服务时,我有服务角色。
答案 0 :(得分:3)
实例配置文件凭据优于使用环境变量,因为实例配置文件凭据每隔几小时自动轮换一次。由于您在问题中使用了术语服务角色,因此我要澄清服务角色和实例配置文件之间的区别。
实例配置文件角色与“服务角色”不同。服务角色是一个角色,它使beanstalk服务权限代表您调用其他服务。
实例配置文件凭据链接到您的EC2实例,只有您的EC2实例才能获得这些凭据。
从我之前关于here主题的答案中复制更多详情:
创建环境时,您可以选择传递IamInstanceProfile(通常名为aws-elasticbeanstalk-ec2-role
)和服务角色(通常名为aws-elasticbeantalk-service-role
)。使用增强型应用程序运行状况监视时,需要这两个角色
请注意,这两个角色需要完全不同的权限集,您应为每个角色使用不同的角色。您可以找到所记录的服务角色和实例配置文件所需的权限列表{{3 }}
使用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用户对您创建的角色具有传递角色权限。如果您不使用root帐户,请确保您拥有IAM用户的here。 注意iam:PassRole权限允许您的IAM用户将角色传递给beanstalk服务。
了解服务角色和实例个人资料correct policies。