Я пытаюсь создать 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
Пожалуйста, помогите, как я могу это сделать.