在我的项目中,我在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"
}
]
}