AWS lambda AccessDeniedException调用另一个lambda函数

Ale*_*Mal 2 python amazon-web-services amazon-iam boto3 aws-lambda

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

client = boto3.client('lambda')
Run Code Online (Sandbox Code Playgroud)

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

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

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

调用Invoke操作时发生错误(AccessDeniedException):User

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

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

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

提前致谢

Ash*_*han 7

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

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokePermission",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
    ]
}  
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*son 5

如果可能,请限制范围,以便调用者只能调用目标函数,而“ *”资源则允许它调用任何 lambda函数。

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