def __create_new_lambda_layer_locally()

in rdk/rdk.py [0:0]


    def __create_new_lambda_layer_locally(self, my_session, layer_name="rdklib-layer"):
        region = my_session.region_name
        print(f"[{region}]: Creating new {layer_name}")
        folder_name = "lib" + str(uuid.uuid4())
        shell_command = f"pip3 install --target python boto3 botocore rdk rdklib future mock"

        print(f"[{region}]: Installing Packages to {folder_name}/python")
        try:
            os.makedirs(folder_name + "/python")
        except FileExistsError as e:
            print(e)
            sys.exit(1)
        os.chdir(folder_name)
        ret = subprocess.run(shell_command, capture_output=True, shell=True)

        print(f"[{region}]: Creating rdk_lib_layer.zip")
        shutil.make_archive(f"rdk_lib_layer", "zip", "." ,"python")
        os.chdir("..")
        s3_client = my_session.client('s3')
        s3_resource = my_session.resource('s3')

        print(f"[{region}]: Creating temporary S3 Bucket")
        bucket_name = "rdkliblayertemp" + str(uuid.uuid4())
        if region != "us-east-1":
            s3_client.create_bucket(
                Bucket=bucket_name, CreateBucketConfiguration={"LocationConstraint": region}
            )
        if region == "us-east-1":
            s3_client.create_bucket(Bucket=bucket_name)

        print(f"[{region}]: Uploading rdk_lib_layer.zip to S3")
        s3_resource.Bucket(bucket_name).upload_file(
            f"{folder_name}/rdk_lib_layer.zip", layer_name
        )

        lambda_client = my_session.client("lambda")

        print(f"[{region}]: Publishing Lambda Layer")
        lambda_client.publish_layer_version(
            LayerName=layer_name,
            Content={"S3Bucket": bucket_name, "S3Key": layer_name},
            CompatibleRuntimes=["python3.6", "python3.7", "python3.8"],
        )

        print(f"[{region}]: Deleting temporary S3 Bucket")
        try:
            bucket = s3_resource.Bucket(bucket_name)
            bucket.objects.all().delete()
            bucket.delete()
        except Exception as e:
            print(e)

        print(f"[{region}]: Cleaning up temp_folder")
        shutil.rmtree(f"./{folder_name}")