def lambda_handler()

in source/FinalizeAndUpdateCatalogFunction/app.py [0:0]


def lambda_handler(event, context):
    try:
        global log_level
        log_level = str(os.environ.get('LOG_LEVEL')).upper()
        if log_level not in [
                                'DEBUG', 'INFO',
                                'WARNING', 'ERROR',
                                'CRITICAL'
                            ]:
            log_level = 'ERROR'
        logging.getLogger().setLevel(log_level)

        
        dataexchange = boto3.client(service_name='dataexchange')
        productId = event['ProductId']
        revisionId = event['RevisionId']
        datasetId = event['DataSetId']
        jobId = event['JobId']
        finalizeresponse = dataexchange.update_revision(RevisionId=revisionId,DataSetId=datasetId,Finalized=True)
        marketplaceConfig = Config(region_name='us-east-1')
        marketplace = boto3.client(service_name='marketplace-catalog',config=marketplaceConfig)
        logging.debug('finalize={}'.format(finalizeresponse))
    
        productDetails = marketplace.describe_entity(EntityId=productId,Catalog='AWSMarketplace')
        logging.debug('describe_entity={}'.format(productDetails))
        entityId = productDetails['EntityIdentifier'] 
        revisionArns = finalizeresponse['Arn']
        arnParts = finalizeresponse['Arn'].split("/")
        datasetArn = arnParts[0] + '/' + arnParts[1]
        logging.debug('EntityIdentifier={}'.format(entityId))
        logging.debug('DataSetArn={}'.format(datasetArn))
        product_update_change_set = [{
            'ChangeType' : 'AddRevisions',
            'Entity' : {
                'Identifier' : entityId,
                'Type' : 'DataProduct@1.0'
            },
            'Details' : '{"DataSetArn":"' + datasetArn + '","RevisionArns":["' + revisionArns + '"]}'
        }]
        logging.info('product update change set = {}'.format(json.dumps(product_update_change_set)))
        changeset = marketplace.start_change_set(Catalog='AWSMarketplace',ChangeSet=product_update_change_set)
        logging.debug('changeset={}'.format(changeset))
    except Exception as e:
       logging.error(e)
       raise e
    return {
        "Message": "Revision Finalized and Catalog Updated",
        "RevisionId": revisionId,
        "JobId": jobId
    }