import argparse import base64 import logging import boto3 import botocore from retry import retry logger = logging.getLogger(__name__) @retry( tries=8, delay=5, logger=logger ) # We will try to download thumbnails around 2 hours def invoke_ad_thumbnail_download_lambda(env: str): botocore_config = botocore.config.Config( retries={"max_attempts": 0}, read_timeout=1000, connect_timeout=300, tcp_keepalive=True, ) lambda_client = boto3.client("lambda", config=botocore_config) response = lambda_client.invoke( FunctionName=f"{env}-lambda-audience-ad-thumbnail-download", InvocationType="RequestResponse", LogType="Tail", Payload=b"{}", ) if response.get("FunctionError"): raise Exception(base64.b64decode(response["LogResult"])) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Invoke ad-thumbnail-download lambda") parser.add_argument( "-e", "--environment", type=str, help="Environment (qa, prod)", default="qa", choices=["qa", "prod"], ) args = parser.parse_args() invoke_ad_thumbnail_download_lambda(env=args.environment)