如何解决节点脚本以root身份运行,无法在AWS的Ubuntu上获得凭据访问,是这样吗?
AWS EC2,操作系统:Ubuntu:18+ 只要我以用户 ubuntu 运行该脚本,就可以运行Node脚本以列出/上传到S3。 但是,当使用CodeDeploy时,我最终以 root 身份运行它们(这可能是一个有问题的做法),并且抛出:
\"
root@ip-172-31-58-175:~/nodetest# node s3.js
Error { InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
at Request.extractError (/root/nodetest/node_modules/aws-sdk/lib/services/s3.js:837:35)
at Request.callListeners (/root/nodetest/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/root/nodetest/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/root/nodetest/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/root/nodetest/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/root/nodetest/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /root/nodetest/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/root/nodetest/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/root/nodetest/node_modules/aws-sdk/lib/request.js:690:12)
at Request.callListeners (/root/nodetest/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
message: 'The AWS Access Key Id you provided does not exist in our records.',code: 'InvalidAccessKeyId',region: null,time: 2020-08-24T14:27:47.253Z,requestId: '*********D762',extendedRequestId: ''*********/1SbU2uA6*******V8FwOOgcX+6qdVQ=',cfId: undefined,statusCode: 403,retryable: false,retryDelay: 38.407343636830134 }
解决方法
您处理AWS凭证的方式基于每个用户。此信息存储在~/.aws/credentials
和~/.aws/config
中。您的ubuntu用户必须已经设置了这些值,也许使用aws configure
命令即可。
有两种解决方法。首先是将文件从可能的/home/ubuntu/.aws
复制到/root/.aws
(您可能必须创建/root/.aws
)。这使两个用户的凭据相同。但是,如果您启动一个新实例,这将起作用,那么您将不得不再次进行此操作。
更好的方法是将IAM配置文件关联到整个EC2实例。这意味着该计算机上的任何用户都可以访问凭据,并且您可以根据需要在每台计算机上更改它们。 documentation有更多详细信息,但基本思想是为您的一个或多个实例创建IAM角色。在控制台中创建EC2时,可以关联一个角色,然后:
,或者在创建后,您可以将其关联:
如果使用的话,还有将角色与AWS cli关联的方法。无论哪种方式,您的整个计算机现在都可以使用已授予角色的权限来运行命令。如果要更改这些权限,可以在关联之后。
您没有显示代码,但总的来说它应该变得更简单。如果您使用的是默认安全管理器,他们将在不进行任何代码更改的情况下进行此更改。如果您遇到问题,请打开一个新问题以进行安全管理器设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。