import sys
import botocore
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
# TODO implement
rds = boto3.client('rds')
lambdaFunc = boto3.client('lambda')
print 'Trying to get Environment variable'
try:
funcResponse = lambdaFunc.get_function_configuration(
FunctionName='RDSInstanceStart'
)
#print (funcResponse)
DBinstance = funcResponse['Environment']['Variables']['DBInstanceName']
print 'Starting RDS service for DBInstance : ' + DBinstance
except ClientError as e:
print(e)
try:
response = rds.start_db_instance(
DBInstanceIdentifier=DBinstance
)
print 'Success :: '
return response
except ClientError as e:
print(e)
return
{
'message' : "Script execution completed. See Cloudwatch logs for complete output"
}
我有一个正在运行的rds实例。每天我都使用lambda表达式启动和停止AWS的RDS实例(db.t2.micro (MSSQL Server))。它以前工作得很好,但没想到今天我遇到了这个问题。其中我的rds实例不是由lambda表达式自动启动的。我看了一个错误日志,但没有问题,它通常看起来像是每天的日志。我无法排除故障并解决问题。有谁能告诉我这个问题吗?
发布于 2019-12-26 16:21:33
仅供参考,简写为:
import boto3
import os
def lambda_handler(event, context):
rds_client = boto3.client('rds')
response = rds.start_db_instance(DBInstanceIdentifier=os.environ['DBInstanceName'])
print response发布于 2019-12-24 16:52:19
您可以在cloudwatch或aws lambda->监控cloud watch中的->视图日志中查看每个lambda调用的日志。这将打开一个页面,其中包含每个lambda调用的日志。如果没有日志。这意味着lambda没有被调用。您可以检查分配给lambda的角色和策略是否正确。
发布于 2019-12-25 18:10:35
您应该打印用于启动db的api的响应(ex- start-db-instance)。响应将打印到CloudWatch日志。
https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance.html
为了以后的自动化,您可能想要在Lambda的CloudWatch日志上创建一个度量过滤器,使用特定的关键字,例如-
"\"DBInstanceStatus\":\“正在启动\”“
也会创建一个警报,并设置阈值< 1,如果在日志中找不到关键字,指标将不推送任何值(您可以在高级选项下自定义此设置),警报将进入INSUFFICIENT_DATA,您可以使用SNS为INSUFFICIENT_DATA设置通知。
您可以稍微调整告警,将丢失的数据视为Bad,然后当指标过滤器与传入日志不匹配时,告警将转换为告警状态。
https://stackoverflow.com/questions/59465598
复制相似问题