Amazon web services 使用lambda函数停止多个AWS RDS实例
我想使用lambda函数停止多个RDS实例。我使用的代码是:Amazon web services 使用lambda函数停止多个AWS RDS实例,amazon-web-services,aws-lambda,boto3,amazon-rds,Amazon Web Services,Aws Lambda,Boto3,Amazon Rds,我想使用lambda函数停止多个RDS实例。我使用的代码是: import sys import botocore import boto3 from botocore.exceptions import ClientError def lambda_handler(event, context): rds = boto3.client('rds') lambdaFunc = boto3.client('lambda') print('Trying to get Environ
import sys
import botocore
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
rds = boto3.client('rds')
lambdaFunc = boto3.client('lambda')
print('Trying to get Environment variable')
try:
funcResponse = lambdaFunc.get_function_configuration(
FunctionName='lambdaStopRDS'
)
DBinstance = funcResponse['Environment']['Variables']['DBInstanceName']
print('Stopping RDS service for DBInstance : ' + DBinstance)
except ClientError as e:
print(e)
try:
response = rds.stop_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"
}
我正在添加以下环境变量:
键:DBInstanceName
值:数据库-1、数据库-2
并获取以下错误:
Trying to get Environment variable
Stopping RDS service for DBInstance : database-1, database-2
An error occurred (InvalidParameterValue) when calling the StopDBInstance operation: Invalid database identifier: database-1, database-2
在这里,密钥必须是唯一的,所以我不能添加另一个同名密钥和另一个RDS。
有没有办法在同一VPC/区域内停止多个不带标签的RDS实例?只需要一个db id,而不是多个。但是,您正试图通过其中两个database-1和database-2
。因此,您必须在循环中执行操作。例如:
try:
db_ids = [v.strip() for v in DBinstance.split(',')]
for db_id in db_ids:
response = rds.stop_db_instance(
DBInstanceIdentifier=db_id
)
print('Success :: ')
return response
except ClientError as e:
print(e)