如何为部署到 Elastic Beanstalk 并与 S3 通信的 Node.js 应用程序设置 AWS 凭据?
How to set up AWS credentials for Node.js app deployed to Elastic Beanstalk and talking to S3?
我的 node.js 应用程序已部署到 Elastic Beanstalk 并通过 aws-sdk 与 S3 通信。
在本地,一切正常,因为 AWS 凭证取自我的本地 ~/.aws/credentials
。
但是,当部署到 Elastic Beanstalk 时,我收到 "Access Denied" 错误,因为我的节点应用程序没有与 S3 通信的 AWS 凭证。
我在 docs 中读到:
If you have configured your instance to use IAM roles, the SDK will
automatically select these credentials for use in your application,
and you do not need to manually provide credentials in any other
format.
但是,我不确定如何配置 EC2 实例以使用 IAM 角色。
我是 AWS 的新手,所以 IAM 角色、用户、EC2 实例、安全组等术语对我来说仍然不是很清楚。
详尽的解释将受到高度重视。
有两种方法可以授予 EC2 实例访问其他 AWS 资源的权限。如您所知,一种是使用凭据文件,但角色本质上是创建实例时附加到实例的凭据。
重要的是要记住这一点:您只能在创建实例时分配角色。您不能将角色添加到 运行 实例。但是,您可以更改现有角色以授予其额外权限。
您在 IAM 控制台中创建角色,并可以像附加用户或组一样附加策略。
例如,您可以设置一个允许您完全访问 S3 的角色,并在创建实例时将其分配给实例。对于随后通常需要 AWS 凭据的任何应用程序,将不需要这些凭据,因为实例凭借其角色固有地可以访问这些服务。
我的 node.js 应用程序已部署到 Elastic Beanstalk 并通过 aws-sdk 与 S3 通信。
在本地,一切正常,因为 AWS 凭证取自我的本地 ~/.aws/credentials
。
但是,当部署到 Elastic Beanstalk 时,我收到 "Access Denied" 错误,因为我的节点应用程序没有与 S3 通信的 AWS 凭证。
我在 docs 中读到:
If you have configured your instance to use IAM roles, the SDK will automatically select these credentials for use in your application, and you do not need to manually provide credentials in any other format.
但是,我不确定如何配置 EC2 实例以使用 IAM 角色。
我是 AWS 的新手,所以 IAM 角色、用户、EC2 实例、安全组等术语对我来说仍然不是很清楚。
详尽的解释将受到高度重视。
有两种方法可以授予 EC2 实例访问其他 AWS 资源的权限。如您所知,一种是使用凭据文件,但角色本质上是创建实例时附加到实例的凭据。
重要的是要记住这一点:您只能在创建实例时分配角色。您不能将角色添加到 运行 实例。但是,您可以更改现有角色以授予其额外权限。
您在 IAM 控制台中创建角色,并可以像附加用户或组一样附加策略。
例如,您可以设置一个允许您完全访问 S3 的角色,并在创建实例时将其分配给实例。对于随后通常需要 AWS 凭据的任何应用程序,将不需要这些凭据,因为实例凭借其角色固有地可以访问这些服务。