我以前已经在服务器上安装了Serverless,然后当我尝试编辑该功能并将其打包以编辑zip文件时,我将其破坏了,因此必须重新开始。因此,开始这个问题:我运行了无服务器,并且正在使用此软件包-https://github.com/adieuadieu/serverless-chrome/tree/master/examples/serverless-framework/aws
当我sudo npm run deploy
时,出现ServerlessError:
ServerlessError:用户:arn:aws:sts :: XXX:assumed-role / EC2CodeDeploy / i-268b1acf未经授权执行:cloudformation:DescribeStack资源上的资源:arn:aws:cloudformation:us-east-1:YYY :stack / aws-dev / *
我不确定为什么要尝试连接到角色而不是IAM。因此,我检查了角色,它与我配置的账户位于一个完全不同的AWS账户中。我们称这个帐户为B。
在配置时,我已经安装了AWS CLI,并在AWS的帐户A中输入了密钥,ID和区域。请勿触摸帐户B。当我运行aws s3 ls
时,我看到带有密钥/ ID /区域号的帐户的正确s3存储桶,因此我知道CLI正在使用正确的帐户。听起来不错。我检查了~/.aws/creditionals
文件,只有一个配置文件[default]
,这似乎很正常。这里没有其他个人资料。我将此复制到~/.aws/config
文件中,所以现在两个文件都相同。效果很好。
然后我进入安装了无服务器的SSH,并运行npm run deploy
,上面的信息也与此相同。我认为无论出于何种原因,它都可能以某种方式未使用正确的帐户。因此,我使用以下命令手动设置了访问密钥和机密:
serverless config credentials --provider aws --key XXX --secret YYY
它告诉我aws creds文件中已经有一个配置文件,因此我在末尾添加--o进行覆盖。我运行sudo npm run deploy
并仍然遇到相同的错误。
然后我运行此命令以手动设置无服务器凭据中的配置文件,该配置文件名称与IAM用户名匹配:
serverless config credentials --provider aws --key XXX --secret YYY --profile serverless-agent
“ serverless-agent”是我一直试图用来部署的IAM用户的名称。我运行它,它告诉我aws creds文件中已经存在一个配置文件,因此我使用--o运行它,它告诉我aws文件现在已更新。在bash中,我转到Vim文件,并且仅看到单个“ [default]”设置,就好像什么都没有改变一样。我运行sudo npm run deploy
,它给了我同样的错误。
然后我去手动设置访问权限和密码:
export AWS_ACCESS_KEY_ID=XXX
export AWS_SECRET_ACCESS_KEY=YYY
我运行sudo npm run deploy
,它给了我同样的错误。
我什至删除了AWS CLI,并保存了creditionals
和config
文件的目录-当我通过serverless config
手动设置帐户凭据时,它告诉我已经有一个配置文件设置在我的aws文件中,提示我使用overwrite
命令-当文件实际上不在我的计算机上时,怎么办?
因此,我然后认为无服务器本身具有缓存或其他内容,调用了错误的文件或其他内容,因此我通过sudo npm uninstall -g serverless
卸载了无服务器,以便可以重新从零开始。然后,我执行上述所有步骤,并再次进行更多操作,并且没有任何更改。相同的错误消息。
我确实设置了Apex.run,但是应该使用我的AWS CLI配置文件,因此我不确定这是否引起任何问题。但是话又说回来,我对这个主题没有任何深入的了解,而且我找不到在他们的文档中删除Apex本身的任何功能。
在我要部署的程序包中,我没有在profile:XXX
文件中设置serverless.yml
,因为如果没有阅读,我会默认将其设置为{{1 }}您在计算机上的aws creds文件中设置的配置文件。只是检查一下,我进入[default]
文件并设置了serverless.yml
,运行profile: default
时出现的错误是
默认配置文件不存在
当我在creds文件中设置了“默认”配置文件时,怎么办?因此,我记得以前我运行过npm run deploy
命令并向其添加了serverless config creditionals
的配置文件名称(但如上所述,它并没有保存在aws creds文件中),所以我添加了该配置文件名称到serverless-agent
文件中只是为了查看是否可行,并且出现“配置文件默认值不存在”相同的错误。
回到错误消息。角色是一个与我的AWS凭证中使用的IAM用户甚至都不相关的帐户。对此一无所知,就好像通过ssh在无服务器中的配置不正确一样。是否使用了我在Apex.run中设置的旧凭证?当我在serverless.yml
命令中手动设置配置文件时,为什么aws creds文件没有使用配置文件更新?我使用的是与几周前正确部署并在AWS上为我设置Lambda和API时使用的用户帐户(但具有新的密钥和机密)。男孩,我想念那些时间,希望我不要弄乱我现有的Lambda函数,而不必事先设置版本号,而是迫使我重新开始。
我很困惑。任何帮助将不胜感激。
答案 0 :(得分:0)
如果您正在使用IAM角色,则必须通过使用Powershell承担角色来使用IAM角色。
当我们从用户转到角色时,我也遇到了同样的问题。