【发布时间】:2020-04-19 04:47:48
【问题描述】:
我使用 python boto3 lambda 调用函数调用了一个 lambda 来停止一些实例。我正在使用一些有效负载调用该函数。调用成功,但我在 cloud watch 中看不到任何执行日志。基本上似乎代码执行没有开始。
代码:
def stop_start_server():
#sessions
ec2c = boto3.client('lambda', region)
instance_ids = {'Start_Stop': 'start', 'Instance_list': ['i-07fc5b6xxxx1584d', 'i-0da375xxxxxc2018b']}
load = {"Start_Stop": "stop","Instance_list": instance_ids}
print load
#payload = json.loads(load)
payload= bytes(json.dumps(load))
#payload = str(load)
print payload
response = ec2c.invoke(FunctionName = lambdafunction , InvocationType = 'RequestRe
print response
payload = json.loads(response['Payload'].read())
print payload
输出:
{
u 'Payload': < botocore.response.StreamingBody object at 0x7fd8f9c31350 > , u 'ExecutedVersion': '$LATEST', 'ResponseMetadata': {
'RetryAttempts': 0,
'HTTPStatusCode': 200,
'RequestId': 'efcaf7f4-5847-487f-921a-3e87657a7450',
'HTTPHeaders': {
'x-amzn-requestid': 'efcaf7f4-5847-487f-921a-3e87657a7450',
'content-length': '2',
'x-amz-executed-version': '$LATEST',
'x-amzn-trace-id': 'root=1-5e9a06f7-3c4b263c83bb7989df2b596e;sampled=0',
'x-amzn-remapped-content-length': '0',
'connection': 'keep-alive',
'date': 'Fri, 17 Apr 2020 19:43:55 GMT',
'content-type': 'application/json'
}
}, u 'StatusCode': 200
}
似乎函数被触发,但代码执行没有发生。可以帮助我解决我想念的东西
【问题讨论】:
-
嗨,这很有趣......嗯,我想知道日志库是否会帮助docs.aws.amazon.com/lambda/latest/dg/…
-
你能展示你的 lambda 处理程序吗?
stop_start_server函数似乎不是您的处理程序。 -
要使 Lambda 函数能够将信息发送到 Amazon CloudWatch Logs,应为与该函数关联的 IAM 角色指定
AWSLambdaBasicExecutionRole策略。此策略包括写入 CloudWatch Logs 的权限。见:AWS Lambda Execution Role - AWS Lambda -
@Marcin 我给出的代码正在我的本地执行,函数 stop_start_server 依次调用 AWS 中的 lambda 函数。
-
@JohnRotenstein lambda 角色拥有 AWS 云监视权限。否则我们将无法从 cloudwatch 中看到触发日志。
标签: python amazon-web-services aws-lambda boto3