【问题标题】:Add permission to Lambda in command line在命令行中为 Lambda 添加权限
【发布时间】:2019-12-20 22:24:56
【问题描述】:

我可以创建 API 以通过 GUI 公开我的 Lambda 函数。效果很好。

但是,我需要通过 CLI 自动创建 API。当我从命令行创建 API 时,运行 API 时出现以下错误:

由于配置错误,执行失败:API Gateway 没有 担任所提供角色的权限

我认为缺少的权限是来自照片,使用 GUI 时会自动创建。

如何通过命令行创建此权限?

【问题讨论】:

  • 我认为您需要向使用 CLI 的 IAM 用户授予权限
  • @NaguibIhab 我只有一个 IAM 用户。如何检查用户是否有权限?
  • 转到服务并选择 IAM,然后转到用户
  • @NaguibIhab 这行不通。我已经可以访问了。

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

首先,确保您使用正确的角色策略文档创建函数:

ROLE_ARN=`aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://trust-relationship-policy-document.json --query "Role.Arn" --output text`
aws lambda create-function --function-name ${API_NAME} --runtime nodejs4.3 --role $ROLE_ARN --handler "index.handler" --zip-file fileb://lambda-package.zip

我的 trust-relationship-policy-document.json 看起来像这样:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "lambda.amazonaws.com",
          "apigateway.amazonaws.com"
        ]
      }
    }
  ]
}

其次,要在您显示的屏幕截图中添加权限,您需要运行以下内容:

aws lambda add-permission --function-name ${FUNCTION_ARN} --action "lambda:InvokeFunction" --statement-id 1 --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:"${REGION}":"${ACCOUNT_ID}":"${API_ID}"/*/*/"${API_NAME}

语句 ID 只是您必须为调用工作提供的值。出于我们的目的,我们不需要为此费心。 这是我用来部署我的功能的,如果它不适合你,请在 cmets 中告诉我。

【讨论】:

  • 感谢您的回复。我试过了,但没有工作。我收到相同的错误消息。我因此使用aws lambda add-permissionpastebin.com/ht87XKeW
猜你喜欢
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2019-06-18
  • 2016-08-11
相关资源
最近更新 更多