很抱歉这篇冗长的帖子!我已尽力使其尽可能简短,但我想把我必须清楚地解释情况的所有信息。
我的问题与AWS Lambda function deployment使用有关JOVO CLI。
每次我尝试将技能功能从本地部署到 Lambda 时,都会收到以下错误块。我不知道如何解决它。
$ jovo deploy -t lambda --ask-profile officialProfile
AccessDeniedException: User: arn:aws:iam::xxxxxxxxx:root is not authorized to perform: lambda:UpdateFunctionCode on resource: arn:aws:lambda:us-east-1:109918021270:function:sampleProjectNotes
但是我可以让$ jovo get alexaSkill --skill-id <Skill ID> --ask-profile officialProfileand $jovo deploy --ask-profile officialProfile(没有任何附加参数)命令运行没有任何问题。
为了从本地部署代码,我以 IAM 用户身份登录创建了一个 ASK 配置文件。以下是我遵循的步骤:
- 询问 init -p 官方简介
- 使用我的雇主创建的 IAM 用户凭据(电子邮件和密码)登录
- 收到成功消息,说明配置文件已创建
在做了一些研究之后,我在下创建了一个策略aws console并将以下 JSON 添加到其中。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:GetRole",
"iam:AttachRolePolicy",
"iam:PassRole",
"lambda:AddPermission",
"lambda:CreateFunction",
"lambda:GetFunction",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration",
"lambda:ListFunctions",
"logs:FilterLogEvents",
"logs:getLogEvents",
"logs:describeLogStreams"
],
"Resource": "*"
}
}
然后将以下权限添加到我的 IAM 用户:
- AWSLambdaFullAccess
- AWSCodeDeployRoleForLamda
- 以及我之前创建的上述策略
但没有任何工作。在将代码部署到 Lambda 时,我仍然遇到同样的错误。
我的前辈说,也许问题是我试图以 root 用户身份访问 AWS,我需要使用我用户的 ARN。我无法理解如何使用或配置它。
我收到了一封电子邮件邀请,用于登录 Alexa 控制台以构建技能。当我创建 时ASK profile,我使用相同的电子邮件地址和密码登录。这是一个root帐户吗?
同时,我找到了这篇文章。AWS Access Key ID也和AWS Secret Access Key我在一起。但是想确定我在做什么,因为ASK profile我已经创建了一个,如果这会导致任何进一步的问题。
到目前为止,我一直在从我的个人 AWS 根账户构建技能。这是我第一次使用 IAM 用户帐户。
更新:
根据@Paradigm的指示,当我尝试时ask deploy,出现以下错误:
Get Lambda ARN arn:aws:lambda:us-east-1:xxxxxxxx:function:sampleProjectNotes failure for custom/NA.
AccessDeniedException: User: arn:aws:iam::xxxxxxxx:root is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-east-1:xxxxxxxx:function:sampleProjectNotes