def _add_container_volumes(self):
     self.cont_cmd.extend(["-v", SysUtils.get_env_var("TMP_INPUT_DIR")])
     self.cont_cmd.extend(["-v", SysUtils.get_env_var("TMP_OUTPUT_DIR")])
     self.cont_cmd.extend(
         ["-v", "/dev", "-v", "/proc", "-v", "/etc/hosts", "--nosysdirs"])
     if SysUtils.is_var_in_env('EXTRA_PAYLOAD'):
         self.cont_cmd.extend(["-v", self.lambda_instance.PERMANENT_FOLDER])
 def execute_function(self):
     if SysUtils.is_var_in_env('SCRIPT'):
         script_path = SysUtils.join_paths(
             SysUtils.get_env_var("TMP_INPUT_DIR"), self._SCRIPT_FILE_NAME)
         script_content = StrUtils.base64_to_str(
             SysUtils.get_env_var('SCRIPT'))
         FileUtils.create_file_with_content(script_path, script_content)
         get_logger().info("Script file created in '%s'", script_path)
         FileUtils.set_file_execution_rights(script_path)
         get_logger().info("Executing user defined script: '%s'",
                           script_path)
         try:
             pyinstaller_library_path = SysUtils.get_env_var(
                 'LD_LIBRARY_PATH')
             orig_library_path = SysUtils.get_env_var(
                 'LD_LIBRARY_PATH_ORIG')
             if orig_library_path:
                 SysUtils.set_env_var('LD_LIBRARY_PATH', orig_library_path)
             self.output = subprocess.check_output(
                 ['/bin/sh', script_path],
                 stderr=subprocess.STDOUT).decode("latin-1")
             SysUtils.set_env_var('LD_LIBRARY_PATH',
                                  pyinstaller_library_path)
             get_logger().debug("CONTAINER OUTPUT:\n %s", self.output)
         except subprocess.CalledProcessError as cpe:
             # Exit with user script return code if an
             # error occurs (Kubernetes handles the error)
             get_logger().error(cpe.output.decode('latin-1'))
             sys.exit(cpe.returncode)
     else:
         get_logger().error('No user script found!')
 def _create_image(self):
     if self._is_container_image_downloaded():
         get_logger().info("Container image '%s' already available",
                           self.cont_img_id)
     else:
         if SysUtils.is_var_in_env("IMAGE_FILE"):
             self._load_local_container_image()
         else:
             self._download_container_image()
Exemple #4
0
 def _add_iam_credentials(self):
     iam_creds = {
         'CONT_VAR_AWS_ACCESS_KEY_ID': 'AWS_ACCESS_KEY_ID',
         'CONT_VAR_AWS_SECRET_ACCESS_KEY': 'AWS_SECRET_ACCESS_KEY',
         'CONT_VAR_AWS_SESSION_TOKEN': 'AWS_SESSION_TOKEN'
     }
     # Add IAM credentials
     for key, value in iam_creds.items():
         if SysUtils.is_var_in_env(key):
             self.cont_cmd.extend(
                 _parse_cont_env_var(value, SysUtils.get_env_var(key)))
 def _get_script_path(self):
     script_path = None
     if SysUtils.is_var_in_env('SCRIPT'):
         script_path = SysUtils.join_paths(
             SysUtils.get_env_var("TMP_INPUT_DIR"), self._SCRIPT_FILE_NAME)
         script_content = StrUtils.base64_to_str(
             SysUtils.get_env_var('SCRIPT'))
         FileUtils.create_file_with_content(script_path, script_content)
         get_logger().info("Script file created in '%s'", script_path)
     elif FileUtils.is_file(self._OSCAR_SCRIPT_PATH):
         script_path = self._OSCAR_SCRIPT_PATH
     return script_path
Exemple #6
0
 def _parse_exec_script_and_commands(self):
     # Check for script in function event
     if 'script' in self.raw_event:
         self.script_path = f"{self.input_folder}/script.sh"
         script_content = StrUtils.base64_to_str(self.raw_event['script'])
         FileUtils.create_file_with_content(self.script_path,
                                            script_content)
     # Container invoked with arguments
     elif 'cmd_args' in self.raw_event:
         # Add args
         self.cmd_args = json.loads(self.raw_event['cmd_args'])
     # Script to be executed every time (if defined)
     elif SysUtils.is_var_in_env('INIT_SCRIPT_PATH'):
         # Add init script
         self.init_script_path = f"{self.input_folder}/init_script.sh"
         FileUtils.cp_file(SysUtils.get_env_var("INIT_SCRIPT_PATH"),
                           self.init_script_path)
Exemple #7
0
 def test_is_var_in_env(self):
     with mock.patch.dict('os.environ', {"K1": "V1"}, clear=True):
         self.assertTrue(SysUtils.is_var_in_env('K1'))
Exemple #8
0
def _is_lambda_environment():
    return (
        SysUtils.is_var_in_env('AWS_EXECUTION_ENV') and
        SysUtils.get_env_var('AWS_EXECUTION_ENV').startswith('AWS_Lambda_'))
Exemple #9
0
def _get_log_level():
    loglevel = logging.INFO
    if SysUtils.is_var_in_env("LOG_LEVEL"):
        loglevel = logging.getLevelName(SysUtils.get_env_var("LOG_LEVEL"))
    return loglevel