def lambda_handler()

in Solutions/AWSSCV-VoicemailExpress/Code/awsscv_vmx_presigner/awsscv_vmx_presigner.py [0:0]


def lambda_handler(event, context):
    logger.debug(event)

    # Establsih an empty response
    response = {}
    # Set the default result to success
    response.update({'result':'success'})

    # Retrieve credentials from AWS Secrets Manager
    try:
        use_keys = get_secret()

    except Exception as e:
        logger.error(e)
        response.update({'result':'fail'})
        response.update({'detail':'key retrieval failed'})
        return response

    # Configure the environment for the URL generation and initialize s3 client
    try:
        my_config = Config(
            region_name = os.environ['aws_region'],
            signature_version = 's3v4',
            retries = {
                'max_attempts': 10,
                'mode': 'standard'
            }
        )

        client = boto3.client(
            's3',
            aws_access_key_id = use_keys['AWSSCV_vmx_iam_key_id'],
            aws_secret_access_key = use_keys['AWSSCV_vmx_iam_key_secret'],
            config=my_config
        )

    except Exception as e:
        logger.error(e)
        response.update({'result':'fail'})
        response.update({'detail':'s3 client init failed'})
        return response

    # Generate the presigned URL and return
    try:
        presigned_url = client.generate_presigned_url('get_object',
            Params = {'Bucket': event['recording_bucket'],
                    'Key': event['recording_key']},
            ExpiresIn = int(os.environ['s3_obj_lifecycle'])*86400
        )
        response.update({'presigned_url': presigned_url})

        return response

    except Exception as e:
        logger.error(e)
        response.update({'result':'fail'})
        response.update({'detail':'presigned url generation failed'})
        logger.debug(response)
        return response