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中设置呼叫?
提前致谢
将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.
如果可能,请限制范围,以便调用者只能调用目标函数,而“ *”资源则允许它调用任何 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)