Amazon web services 使用lambda函数停止多个AWS 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

我想使用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 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)