AccessDeniedException:用户:arn:aws:iam::xxxxxxx:root 无权执行:lambda:UpdateFunctionCode

AccessDeniedException: User: arn:aws:iam::xxxxxxx:root is not authorized to perform: lambda:UpdateFunctionCode

抱歉这么长post!我已经尽力让它尽可能简短,但我想把所有的信息都清楚地解释清楚。

我的问题与使用 JOVO CLIAWS Lambda function deployment 有关。

每次我尝试将技能函数从我的本地部署到 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 officialProfile$jovo deploy --ask-profile officialProfile(没有任何附加参数)命令发送到 运行。

为了从本地部署代码,我以 IAM 用户身份登录创建了一个 ASK 配置文件。以下是我遵循的步骤:

  1. 询问 init -p officialProfile
  2. 使用我的雇主创建的 IAM 用户凭据(电子邮件和密码)登录
  3. 收到表明配置文件已创建的成功消息

经过一些研究,我在 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 用户添加以下权限:

但没有任何效果。我在将代码部署到 Lambda 时仍然遇到同样的错误。

我的前辈说,也许问题是我正在尝试以 root 用户身份访问 AWS,我需要使用我的用户的 ARN。我无法理解如何使用或配置它。

我收到了一封电子邮件邀请,我正在使用它登录到 Alexa 控制台以构建技能。 当我创建 ASK profile 时,我使用相同的电子邮件地址和密码登录。这是 root 帐户吗?

同时,我找到了 this 篇文章。 AWS Access Key IDAWS 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

您的 ASK CLI 似乎正在为您的个人账户而非公司账户使用 AWS 凭证。

您需要运行“ask configure”命令来为您的officialProfile正确设置 AWS 凭据。

$ ask configure --profile officialProfile --aws-setup