in source/lambda/deploy_es/index.py [0:0]
def aes_domain_poll_create(event, context):
logger.info("Got create poll")
suffix = ''.join(secrets.choice(string.ascii_uppercase) for i in range(8))
physicalResourceId = f'aes-siem-domain-{__version__}-{suffix}'
kibanapass = helper_domain.Data.get('kibanapass')
if not kibanapass:
kibanapass = 'MASKED'
# response = opensearch_client.describe_domain(DomainName=aesdomain)
response = client.describe_elasticsearch_domain(DomainName=aesdomain)
logger.debug('Processing domain creation')
logger.debug(json.dumps(response, default=json_serial))
is_processing = response['DomainStatus']['Processing']
if is_processing:
return None
logger.info('OpenSearch Service domain is created')
userdb_enabled = (response['DomainStatus']['AdvancedSecurityOptions']
['InternalUserDatabaseEnabled'])
if not userdb_enabled:
logger.info(f'ID: {KIBANAADMIN}, PASSWORD: {kibanapass}')
update_response = create_kibanaadmin(kibanapass)
while not userdb_enabled:
logger.debug('Processing domain configuration')
userdb_enabled = (update_response['DomainConfig']
['AdvancedSecurityOptions']['Options']
['InternalUserDatabaseEnabled'])
time.sleep(3)
logger.info('Finished doman configuration with new random password')
es_endpoint = None
while not es_endpoint:
time.sleep(10) # wait to finish setup of endpoint
logger.debug('Processing ES endpoint creation')
# response = opensearch_client.describe_domain(DomainName=aesdomain)
response = client.describe_elasticsearch_domain(DomainName=aesdomain)
es_endpoint = response['DomainStatus'].get('Endpoint')
if not es_endpoint and 'Endpoints' in response['DomainStatus']:
es_endpoint = response['DomainStatus']['Endpoints']['vpc']
logger.debug('Finished ES endpoint creation')
# ToDo: import dashboard for aesadmin private tenant
# tenant = 'private'
# auth = {'username': 'aesadmin', 'password': kibanapass}
# cookies = set_tenant_get_cookies(es_endpoint, dist_name, tenant, auth)
# load_dashboard_into_aes(es_endpoint, dist_name, auth, cookies)
if event and 'RequestType' in event:
# Response For CloudFormation Custome Resource
helper_domain.Data['es_endpoint'] = es_endpoint
helper_domain.Data['kibanaadmin'] = KIBANAADMIN
helper_domain.Data['kibanapass'] = kibanapass
logger.info("End create poll")
return physicalResourceId