如何为部署到Elastic Beanstalk并与S3通信的Node.js应用程序设置AWS凭据?

时间:2015-02-16 11:21:14

标签: amazon-web-services amazon-ec2 amazon-s3 elastic-beanstalk

我的node.js应用已部署到Elastic Beanstalk并通过aws-sdk与S3对话。

在本地,一切正常,因为AWS凭据来自我的本地~/.aws/credentials

但是,当部署到Elastic Beanstalk时,我得到一个" Access Denied"错误,因为我的节点应用程序没有AWS凭据与S3通信。

我在docs中读到了:

  

如果您已将实例配置为使用IAM角色,那么SDK将会   自动选择这些凭据以在您的应用程序中使用,   并且您无需手动提供任何其他凭据   格式。

但是,我不确定如何配置EC2实例以使用IAM角色。

我是AWS的新手,因此像IAM角色,用户,EC2实例,安全组等术语对我来说仍然不是很完美。

将充分考虑彻底的解释。

1 个答案:

答案 0 :(得分:1)

有两种方法可以授予EC2实例访问其他AWS资源的权限。您知道的一个是使用凭证文件,但角色本质上是在创建实例时附加到实例的凭据。

重要的是要记住:您只能在实例创建时分配角色。您无法将角色添加到正在运行的实例。但是,您可以更改现有角色以为其提供其他权限。

您可以在IAM控制台中创建角色,并且可以使用与用户或组相同的方式附加策略。

例如,您可以设置一个角色,允许您对S3进行完全访问,并在创建实例时将其分配给实例。对于通常需要AWS凭证的任何应用程序,将不需要这些凭据,因为实例凭借其角色本身可以访问这些服务。