Orig layer gen

to check and edit…..

# more layer-create.py 
import json
# import urllib.request
import os
import shutil
import sys
import subprocess
import zipfile
import boto3
import botocore
 
 
from os import listdir
from os.path import isfile, join
 
def lambda_handler(event, context):
    # https://stackoverflow.com/questions/58648739/how-to-check-if-python-package-is-latest-version-programmatically?noredirect=1&lq=1
    # https://www.digitalocean.com/community/tutorials/how-to-use-subprocess-to-run-external-programs-in-python-3
    # https://www.dataquest.io/blog/python-subprocess/
 
    name = 'boto3'
    # The -m flag makes sure that you are using the pip that's tied to the active Python executable.
    latest_version = str(subprocess.run([sys.executable, '-m', 'pip', 'install', '{}==random'.format(name)], capture_output=True, text=True))
    latest_version = latest_version[latest_version.find('(from versions:')+15:]
    latest_version = latest_version[:latest_version.find(')')]
    latest_version = latest_version.replace(' ','').split(',')[-1]
 
    print("version", latest_version)
 
 
    # install_path = '/tmp/' + latest_version
    install_path = os.path.join('/tmp/', latest_version)
 
    os.mkdir(install_path)
    os.mkdir('/tmp/boto3')
 
    installresponse = subprocess.run(["pip", "install",  "boto3",  "-t",  "/tmp/boto3"], capture_output=True, text=True)
 
    print("Install stdout", installresponse.stdout)
    print("Install stderr", installresponse.stderr)
    print("Install response", installresponse)
 
    print("ZIP ------------")
    shutil.make_archive("/tmp/boto3_" + latest_version, 'zip', "/tmp/boto3")
    print("EndZIP ")
 
    lsresponse = subprocess.run(["ls", "-l", "/tmp"], capture_output=True, text=True)
    print("ls stdout", lsresponse.stdout)
    #print("ls stderr", lsresponse.stderr)
    #print("ls response:- ", lsresponse)
 
    print("listdir")
    print(listdir('/tmp'))
 
    zipfilename = "boto3_" + latest_version + ".zip"
    zipfilepath = os.path.join('/tmp/', zipfilename)
 
    print("zipfile name:- ", zipfilename, zipfilepath)
 
    # Replace period with underscore because period is not allowed in lambda layer names.
    latest_version = latest_version.replace(".", "_")
    print("version", latest_version)
 
    lambda_client = boto3.client('lambda')
 
    response = lambda_client.publish_layer_version(
        CompatibleRuntimes=[
            'python3.6',
            'python3.7',
            'python3.8',
            'python3.9',
        ],
        Content={
            'ZipFile': zipfilepath,
        },
        Description='Lambda Layer for S3 Additional Checksum.',
        LayerName='boto3-' + latest_version,
        LicenseInfo='MIT',
    )
 
    print(response)
 
 
 
#run function with dummy data
lambda_handler(1,2)
# more lambda_layer_inLambda/lambda.py 
import json
# import urllib.request
import os
import sys
import subprocess

#from pip._internal import main

#main(['index versions', '-I', '-q', 'boto3', '--target', '/tmp/', '--no-cache-dir', '--disable-pip-version-check'])


def lambda_handler(event, context):
    name = 'boto3'
    latest_version = str(subprocess.run([sys.executable, '-m', 'pip', 'install', '{}==random'.format(name)], capture_output=True, text=True))
    latest_version = latest_version[latest_version.find('(from versions:')+15:]
    latest_version = latest_version[:latest_version.find(')')]
    latest_version = latest_version.replace(' ','').split(',')[-1]

    print("version", latest_version)