Ошибка проверки параметра Неизвестный параметр во входе: «StorageType» - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать amq, если одиночный insatnce amq не работает, я проверяю его состояние, а затем, если он не работает, я создаю его с помощью лямбда-функции.

Моя лямбда-функция отлично работает из моего локальный запуск, но когда я запускаю его в python как встроенный код, я получаю ошибку ниже

Я получаю эту ошибку в crte_brkr function

Parameter validation failed:
Unknown parameter in input: "StorageType", must be one of: AutoMinorVersionUpgrade, BrokerName, Configuration, CreatorRequestId, DeploymentMode, EncryptionOptions, EngineType, EngineVersion, HostInstanceType, Logs, MaintenanceWindowStartTime, PubliclyAccessible, SecurityGroups, SubnetIds, Tags, Users: ParamValidationError

Вот моя лямбда-функция

import boto3, time
import json
import logging
import os
from botocore.exceptions import ClientError
session=boto3.session.Session()
clmq=session.client('mq')
clsm=session.client('secretsmanager')
clwm=session.client('cloudwatch')

def get_scrt(scrtnm):
    sm_rs = clsm.get_secret_value(SecretId=scrtnm)
    if sm_rs['ResponseMetadata']['HTTPStatusCode']==200:
            return sm_rs['SecretString']

def gt_conf(cfnm):
    tkn='';i=0 ; cfid=''
    try:
        while tkn!='' or i==0:
            if(i!=0):
                rs = clmq.list_configurations(MaxResults=100,NextToken=tkn)
            else:
                 rs = clmq.list_configurations(MaxResults=100)
            print(rs)
            tkn=rs['NextToken']
            i += 1
            print(i)
            if len(rs['Configurations'])<100:
             tkn=''
            for cf in rs['Configurations']:
                if cf['Name']==cfnm:
                    cfid=cf['Id']
                    break;
            if cfid!='':
                break;
        if(cfid==''):
            raise Exception('no config')
        return cfid
    except ClientError as e:
        raise e

def crte_brkr(scrt,cf,br):
    try:
        auth = json.loads(get_scrt(scrt))
        cfid= gt_conf(cf)
        sb= os.environ['sbnt']
        sg=os.environ['secgrp1']
        print(sb)
        print(sg)
        sb= 'subnet-fhfhfhfh'
        sg='sg-fjfjfjjfj'
        rsmq = clmq.create_broker(AutoMinorVersionUpgrade=False,
                                        BrokerName=br,
                                        Configuration={'Id': cfid},
                                        DeploymentMode='SINGLE_INSTANCE',
                                        EncryptionOptions={'UseAwsOwnedKey': True},
                                        EngineType='ACTIVEMQ',
                                        EngineVersion='5.15.6',
                                        HostInstanceType='mq.m5.large',
                                        StorageType='EBS',
                                        SubnetIds=[sb],
                                        SecurityGroups=[sg],
                                        Logs={'Audit': True,
                                              'General': True},
                                        MaintenanceWindowStartTime={'DayOfWeek': 'MONDAY',
                                                                    'TimeOfDay': '12:00',
                                                                    'TimeZone': 'UTC'},
                                        PubliclyAccessible=False,
                                        Users=[{'ConsoleAccess': True,
                                                'Password':auth['password'],
                                                'Username':auth['user']}],
                                        Tags={'tr:financial-identifier': '5355552',
                                              'tr:application-asset-insight-id': '272727',
                                              'tr:environment-type': 'dev',
                                              'tr:resource-owner': 'c@abcd.com'}
                                              )

        if rsmq['ResponseMetadata']['HTTPStatusCode']==200:
            time.sleep(60)
            while clmq.describe_broker(BrokerId=rsmq['BrokerId'])['BrokerState']!='RUNNING':
                time.sleep(30)
            return rsmq['BrokerId']
    except ClientError as e:
        raise e

def lambda_handler(event, context):
    brid=''
    opwir=''
    e=''
    res = {"brokerid" : brid,"openwire":opwir}
    try:
        astid='a'+os.environ['assetId']
        envi=os.environ['env']
        site=os.environ['site']
        scrt=astid+'-wc1-SingleIns-amq-gen-'+envi+'-'+site
        cfnm=astid+'-WC1-AMAZONMQ-Ogs-'+envi+'-'+site+'-configuration'
        brnm=astid+'-WC1-AMAZONMQ-OgsSec-'+envi+'-'+site
        print(scrt)
        print(cfnm)
        print(brnm)
        brid= crte_brkr(scrt,cfnm,brnm)
        res = {"brokerid" : brid}
        return res
    except ClientError as e:
        return "Unexpected error: %s" % e

Пожалуйста, помогите, как я могу это сделать.

...