在带有 NodeJS 的 ElasticBeanstalk 上使用 EC2 凭证
Use EC2 credentials on ElasticBeanstalk with NodeJS
我在 ElasticBeanstalk 上有一个小型 NodeJS 应用程序,它与 S3 和 DynamoDB 进行通信。目前我将访问密钥和密钥设置为环境变量并使用它们来更新 aws.config 对象。这是最好的做法吗?可以根据服务角色生成或使用凭据,所以我不再需要将凭据设置到环境变量中了吗?因此,当我必须使用用户的凭据来访问 DynamoDB 或 S3 等任何服务时,我拥有服务角色。
实例配置文件凭据比使用环境变量更好,因为实例配置文件凭据每隔几个小时自动轮换一次。由于您在问题中使用了术语服务角色,因此让我澄清一下服务角色和实例配置文件之间的区别。
实例配置文件角色与 "service role" 不同。服务角色是授予 beantalk 服务权限以代表您调用其他服务的角色。
实例配置文件凭据链接到您的 EC2 实例,只有您的 EC2 实例获得这些凭据。
从我之前关于该主题的回答中复制更多细节 here:
创建环境时,您可以选择传递 IamInstanceProfile(通常命名为 aws-elasticbeanstalk-ec2-role
)和服务角色(通常命名为 aws-elasticbeantalk-service-role
)。使用增强的应用程序运行状况监控时需要这两个角色。
请注意,这两个角色需要一组完全不同的权限,您应该为每个角色使用不同的角色。您可以在文档中找到服务角色和实例配置文件所需的权限列表here.
当 creating/cloning/modifying 环境使用 AWS 控制台时,您将看到一个选择服务角色的选项。如果您以前从未使用过服务角色,您将看到 "Create a new role" 的选项。控制台允许您使用单击按钮创建 beantalk 所需的服务角色。您可以在创建角色之前查看权限。
第一次创建后,控制台会显示一个下拉列表,其中包含您之前创建的角色(通常命名为 aws-elasticbeanstalk-service-role
),您可以重复使用此服务角色。
来自文档:"A service role is the IAM role that Elastic Beanstalk assumes when calling other services on your behalf. Elastic Beanstalk uses the service role that you specify when creating an Elastic Beanstalk environment when it calls Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing, and Auto Scaling APIs to gather information about the health of its AWS resources."
当creating/using一个角色时,您需要确保IAM用户对您创建的角色具有pass role权限。如果您没有使用根帐户,请确保您拥有 IAM 用户的 correct policies。
请注意,iam:PassRole 权限允许您的 IAM 用户将角色传递给 beantalk 服务。
阅读有关服务角色和实例配置文件的信息here。
我在 ElasticBeanstalk 上有一个小型 NodeJS 应用程序,它与 S3 和 DynamoDB 进行通信。目前我将访问密钥和密钥设置为环境变量并使用它们来更新 aws.config 对象。这是最好的做法吗?可以根据服务角色生成或使用凭据,所以我不再需要将凭据设置到环境变量中了吗?因此,当我必须使用用户的凭据来访问 DynamoDB 或 S3 等任何服务时,我拥有服务角色。
实例配置文件凭据比使用环境变量更好,因为实例配置文件凭据每隔几个小时自动轮换一次。由于您在问题中使用了术语服务角色,因此让我澄清一下服务角色和实例配置文件之间的区别。
实例配置文件角色与 "service role" 不同。服务角色是授予 beantalk 服务权限以代表您调用其他服务的角色。
实例配置文件凭据链接到您的 EC2 实例,只有您的 EC2 实例获得这些凭据。
从我之前关于该主题的回答中复制更多细节 here:
创建环境时,您可以选择传递 IamInstanceProfile(通常命名为 aws-elasticbeanstalk-ec2-role
)和服务角色(通常命名为 aws-elasticbeantalk-service-role
)。使用增强的应用程序运行状况监控时需要这两个角色。
请注意,这两个角色需要一组完全不同的权限,您应该为每个角色使用不同的角色。您可以在文档中找到服务角色和实例配置文件所需的权限列表here.
当 creating/cloning/modifying 环境使用 AWS 控制台时,您将看到一个选择服务角色的选项。如果您以前从未使用过服务角色,您将看到 "Create a new role" 的选项。控制台允许您使用单击按钮创建 beantalk 所需的服务角色。您可以在创建角色之前查看权限。
第一次创建后,控制台会显示一个下拉列表,其中包含您之前创建的角色(通常命名为 aws-elasticbeanstalk-service-role
),您可以重复使用此服务角色。
来自文档:"A service role is the IAM role that Elastic Beanstalk assumes when calling other services on your behalf. Elastic Beanstalk uses the service role that you specify when creating an Elastic Beanstalk environment when it calls Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing, and Auto Scaling APIs to gather information about the health of its AWS resources."
当creating/using一个角色时,您需要确保IAM用户对您创建的角色具有pass role权限。如果您没有使用根帐户,请确保您拥有 IAM 用户的 correct policies。 请注意,iam:PassRole 权限允许您的 IAM 用户将角色传递给 beantalk 服务。
阅读有关服务角色和实例配置文件的信息here。