我的node.js应用已部署到Elastic Beanstalk并通过aws-sdk与S3对话。
在本地,一切正常,因为AWS凭据来自我的本地~/.aws/credentials
。
但是,当部署到Elastic Beanstalk时,我得到一个" Access Denied"错误,因为我的节点应用程序没有AWS凭据与S3通信。
我在docs中读到了:
如果您已将实例配置为使用IAM角色,那么SDK将会 自动选择这些凭据以在您的应用程序中使用, 并且您无需手动提供任何其他凭据 格式。
但是,我不确定如何配置EC2实例以使用IAM角色。
我是AWS的新手,因此像IAM角色,用户,EC2实例,安全组等术语对我来说仍然不是很完美。
将充分考虑彻底的解释。
答案 0 :(得分:1)
有两种方法可以授予EC2实例访问其他AWS资源的权限。您知道的一个是使用凭证文件,但角色本质上是在创建实例时附加到实例的凭据。
重要的是要记住:您只能在实例创建时分配角色。您无法将角色添加到正在运行的实例。但是,您可以更改现有角色以为其提供其他权限。
您可以在IAM控制台中创建角色,并且可以使用与用户或组相同的方式附加策略。
例如,您可以设置一个角色,允许您对S3进行完全访问,并在创建实例时将其分配给实例。对于通常需要AWS凭证的任何应用程序,将不需要这些凭据,因为实例凭借其角色本身可以访问这些服务。