尝试部署时连接到其他ARN /角色/ Amazon帐户

时间:2019-01-11 19:00:05

标签: serverless

我以前已经在服务器上安装了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,并保存了creditionalsconfig文件的目录-当我通过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函数,而不必事先设置版本号,而是迫使我重新开始。

我很困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您正在使用IAM角色,则必须通过使用Powershell承担角色来使用IAM角色。

当我们从用户转到角色时,我也遇到了同样的问题。