【发布时间】:2022-11-29 23:02:58
【问题描述】:
是否可以允许所有 EC2 实例调用 lambda 而无需在 EC2 端为此提供任何特定权限?
为此,我尝试添加以下内容基于资源的政策到我的 lambda 函数,希望它会允许我所有的 EC2 实例调用它:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "InvokeLambdaFunction",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:eu-west-1:123456789012:myLambdaFunction",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:ec2:eu-west-1:123456789012:instance/*"
}
}
}
]
}
但是,当我在 EC2 实例中使用 aws CLI 调用我的 lambda 时,访问被拒绝:
sh-4.2$ aws lambda invoke --function-name "myLambdaFunction" --payload "{\"instance-id\":\"$EC2_INSTANCE_ID\"}" --region eu-west-1 response.json
调用 Invoke 时发生错误(AccessDeniedException) 操作: 用户: arn:aws:sts::123456789012:承担角色/AmazonSSMRoleForInstancesQuickSetup/i-06e731b382734dc8f 无权在资源上执行:lambda:InvokeFunction: arn:aws:lambda:eu-west-1:123456789012:function:myLambdaFunction 因为没有基于身份的策略允许 lambda:InvokeFunction 行动
我在这里遗漏了什么或者这根本不可能吗?
【问题讨论】:
标签: amazon-web-services amazon-ec2 lambda amazon-iam