AWS lambda AccessDeniedException 调用另一个 lambda 函数



在我的项目中,我在python代码中创建了一个lambda函数,在一个方法中必须使用boto3调用另一个lambda函数。在我的主lambda中,我像这样创建客户端:

client = boto3.client('lambda')

然后我以这种方式调用我的方法:

response = client.invoke(
            FunctionName='arn:aws:lambda:eu-west-1:1577:function:test',
            InvocationType='RequestResponse',
            LogType='None',
            Payload=json.dumps(d)
            )

但是当我测试我的主 Lambda 控制台时返回此错误:

调用

调用操作时出错(访问拒绝异常(:用户

我尝试在我的环境变量中设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY但是当我尝试保存时,返回此错误:

Lambda 无法配置您的环境变量,因为您提供的环境变量包含当前不支持修改的保留密钥。此请求中使用的保留密钥:AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY

如何在 lambda 中使用 IAM 用户设置调用?

提前致谢

无需使用 IAM 用户,而是将 Lambda 调用权限附加到附加到父 Lambda 函数的现有 IAM 角色。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokePermission",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
    ]
}  

注意:您可以指定为资源调用的 Lambda 函数的 ARN。

如果可能,请限制范围,以便调用方只能调用您的目标函数,而不是允许它调用任何 lambda 函数的"*"资源。

{
   "Version": "2012-10-17",
   "Statement": [
    {
        "Sid": "InvokePermission",
        "Effect": "Allow",
        "Action": [
            "lambda:InvokeFunction"
        ],
        "Resource": "arn:aws:lambda:eu-west-1:1577:function:test"
    }
  ]
}

相关内容

  • 没有找到相关文章