You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在VSCode的Python代码中调用已有的AWS Lambda函数?

调用AWS Lambda函数的等效boto3代码

我完全懂你的需求——你不需要那些关于本地开发、测试Lambda或者AWS Toolkit的教程,只想直接调用已经存在的Lambda函数,就像你用boto3操作DynamoDB那样。这里直接给你对应的等效代码,还有关键细节说明:

基础调用示例

和你操作DynamoDB的思路一致,用boto3创建Lambda客户端,然后调用invoke方法就能实现:

import boto3
import json

# 创建Lambda客户端
lambda_client = boto3.client('lambda')

# 定义要调用的Lambda函数标识(可以是函数名、完整ARN,或者别名/版本ARN)
function_name = "你的Lambda函数名或ARN"

# 构造传递给Lambda的事件数据(对应Lambda函数里的event参数)
payload = {
    "param1": "你要传递的参数1",
    "param2": "你要传递的参数2"
}

# 发起Lambda调用请求
response = lambda_client.invoke(
    FunctionName=function_name,
    Payload=json.dumps(payload).encode('utf-8')  # 必须转为字节格式的JSON字符串
)

# 解析Lambda返回的结果
result = json.loads(response['Payload'].read().decode('utf-8'))
print(result)

关键细节拆解

  • FunctionName参数:支持多种格式,比如直接写函数名my-function,或者用完整ARNarn:aws:lambda:us-east-1:123456789012:function:my-function,甚至可以指定别名/版本my-function:prod(调用prod别名对应的函数版本)。
  • Payload参数:Lambda函数接收的event参数本质是JSON解析后的对象,所以这里需要把Python字典先转成JSON字符串,再编码成字节流,才能被正确识别。
  • 返回结果处理response['Payload']是一个可读取的流对象,需要先通过read()获取字节内容,解码成字符串后,再用json.loads转成Python对象,这就是Lambda函数返回的最终数据。

权限注意事项

执行这段代码的实体(比如本地机器的IAM用户、EC2实例的IAM角色、另一个Lambda的执行角色)必须拥有lambda:InvokeFunction权限,否则会抛出权限错误。你需要在对应的IAM策略中添加类似这样的语句:

{
    "Effect": "Allow",
    "Action": "lambda:InvokeFunction",
    "Resource": "arn:aws:lambda:你的AWS区域:你的账号ID:function:你的函数名"
}

内容的提问来源于stack exchange,提问作者greeneye12

火山引擎 最新活动