AccessDeniedException:用户:arn:aws:iam::xxxxxxx:root 无权执行:lambda:UpdateFunctionCode
AccessDeniedException: User: arn:aws:iam::xxxxxxx:root is not authorized to perform: lambda:UpdateFunctionCode
抱歉这么长post!我已经尽力让它尽可能简短,但我想把所有的信息都清楚地解释清楚。
我的问题与使用 JOVO CLI
的 AWS 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 配置文件。以下是我遵循的步骤:
- 询问 init -p officialProfile
- 使用我的雇主创建的 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
帐户吗?
同时,我找到了 this 篇文章。 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
您的 ASK CLI 似乎正在为您的个人账户而非公司账户使用 AWS 凭证。
您需要运行“ask configure”命令来为您的officialProfile
正确设置 AWS 凭据。
$ ask configure --profile officialProfile --aws-setup
抱歉这么长post!我已经尽力让它尽可能简短,但我想把所有的信息都清楚地解释清楚。
我的问题与使用 JOVO CLI
的 AWS 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 配置文件。以下是我遵循的步骤:
- 询问 init -p officialProfile
- 使用我的雇主创建的 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
帐户吗?
同时,我找到了 this 篇文章。 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
您的 ASK CLI 似乎正在为您的个人账户而非公司账户使用 AWS 凭证。
您需要运行“ask configure”命令来为您的officialProfile
正确设置 AWS 凭据。
$ ask configure --profile officialProfile --aws-setup