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}")