AWS Lambda调用限制配置:如何限定同账号下EC2实例的调用权限
同一AWS账号下Lambda调用权限限制配置方案
核心通过Lambda资源-based访问策略搭配AWS IAM条件键实现不同粒度的调用限制,按需选择以下配置即可:
1. 限制仅当前账号内的EC2实例可调用
- 先给所有需要调用Lambda的EC2实例绑定的IAM角色,添加
lambda:InvokeFunction权限 - 给Lambda添加如下资源策略,仅允许本账号身份调用:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<你的AWS账号ID>:root" }, "Action": "lambda:InvokeFunction", "Resource": "<你的Lambda函数ARN>", "Condition": { "StringEquals": { "aws:PrincipalAccount": "<你的AWS账号ID>" } } } ] }
2. 限制仅归属特定VPC的EC2实例可调用
通过aws:SourceVpc条件键过滤来源VPC,注意该配置要求EC2必须通过VPC接口端点调用Lambda,公网调用场景下无法识别VPC信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "<你的Lambda函数ARN>", "Condition": { "StringEquals": { "aws:SourceVpc": "<目标VPC ID,格式为vpc-xxxxxx>", "aws:PrincipalAccount": "<你的AWS账号ID>" } } } ] }
3. 限制仅特定EC2实例可调用
可选两种实现方式:
方式1:基于专属IAM角色限制
给目标EC2实例单独绑定专属IAM角色,在Lambda策略中仅开放该角色的调用权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<你的AWS账号ID>:role/<EC2绑定的专属IAM角色名>" }, "Action": "lambda:InvokeFunction", "Resource": "<你的Lambda函数ARN>" } ] }
方式2:基于实例ID严格限制
通过ec2:SourceInstanceARN条件键直接绑定实例ID,同样要求EC2通过VPC接口端点调用Lambda:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "<你的Lambda函数ARN>", "Condition": { "StringEquals": { "ec2:SourceInstanceARN": "arn:aws:ec2:<区域>:<你的AWS账号ID>:instance/<目标实例ID,格式为i-xxxxxx>", "aws:PrincipalAccount": "<你的AWS账号ID>" } } } ] }
通用注意事项:所有涉及VPC、实例ID的来源条件校验,都需要提前在对应VPC中创建Lambda的接口端点(Interface Endpoint),确保来源属性可以被正常识别。
内容的提问来源于stack exchange,提问作者Pedro Morgado
相关产品推荐
相关产品推荐

