【问题标题】:AccessDeniedException while using Lambda by AWS CLI通过 AWS CLI 使用 Lambda 时出现 AccessDeniedException
【发布时间】:2017-11-12 15:15:55
【问题描述】:

我正在关注http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-upload-deployment-pkg.html 一起实现 lambda 和 S3 的教程

我添加了一个角色(IAM > Roles > lambda-s3-execution-role),它有AWSLambdaExecute的策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:*"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

此外,我已经将IAM用户设置为adminuser,并且可以像aws lambda list-functions --profile adminuser一样运行命令,但是当我运行以下命令时

aws lambda create-function \
--region us-east-2 \
--function-name CreateThumbnail \
--zip-file fileb://~/Deployment/build/distributions/lambdaDeployment.zip \
--role arn:aws:iam::12345678:role/lambda-s3-execution-role \
--handler CreateThumbnail.handler \
--runtime java8 \
--profile adminuser \
--timeout 10 \
--memory-size 1024

我遇到了一个错误:

调用 CreateFunction 操作时出错 (AccessDeniedException):调用 CreateFunction 操作时出错 (AccessDeniedException):用户:arn:aws:iam::12345678:user/testaccountyn is not authorized to perform:iam:PassRole在资源上:arn:aws:iam::12345678:role/lambda-s3-execution-role

你能告诉我前进的道路吗?谢谢!

【问题讨论】:

  • 鉴于该错误消息,我认为您的用户 testaccountyn 缺少 iam:PassRole 权限...
  • 嗨@MarkB 感谢您的回答,我很困惑,我怎么能添加 iam:PassRole 给用户,顺便说一句,我还在这个用户的权限中添加了 AWSLambdaExecute 策略。
  • 您的用户有一个分配给它的策略,对吧?所以编辑该策略以添加iam:PassRole
  • 感谢您的信息。尽管我添加了内联策略,但它仍然无法正常工作:{“版本”:“2012-10-17”,“声明”:[{“Sid”:“Stmt1497045163000”,“效果”:“允许”,“行动”:[“iam:PassRole”,“iam:ListInstanceProfiles”],“资源”:[“*”]}]}
  • 检查角色的信任关系了吗?

标签: amazon-web-services amazon-s3 lambda


【解决方案1】:

为我解决了这个问题:将您的 --role 参数替换为您在本教程前面创建的 ARM:AWS:IAM。

我遇到了同样的问题。如果您查看教程中的 CLI 参数,IAM ID 似乎是随意填写的;它实际上是数字 12345678。从您的底部代码 sn-p:--role arn:aws:iam::12345678:role/lambda-s3-execution-role \)。

为了解决这个问题,我必须将我在本教程前面创建的角色的 ID 粘贴到创建执行角色步骤中。在 AWS 中打开 IAM 服务,单击“角色”,选择“权限”选项卡,然后复制您的角色 ARN:

aws lambda create-function 命令中的arn:aws:iam:12345678.. 行替换为您的凭据。最终命令应类似于:

$ aws lambda create-function --function-name CreateThumbnail \
--zip-file fileb://function.zip --handler index.handler --runtime nodejs8.10 \
--timeout 10 --memory-size 1024 \
--role REPLACE:THIS:WITH:YOUR:ROLE:ARN

应该这样做!希望它可以节省其他人一些时间!

此外,如果您在运行上述命令时遇到 aws: command not found 错误,则需要按照以下步骤安装 AWS 命令​​行工具:Installing the AWS CLI

如果您收到 You must specify a region. You can also configure your region by running "aws configure". 错误,则需要按照以下步骤配置终端配置文件:Configuring the AWS CLI

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 2019-07-28
    • 2022-01-21
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2019-12-03
    相关资源
    最近更新 更多