Example #1
0
    def load_settings(self, settings_file="zappa_settings.json", session=None):
        """
        Load the local zappa_settings.json file. 

        Returns the loaded Zappa object.
        """

        # Ensure we're passesd a valid settings file.
        if not os.path.isfile(settings_file):
            print("Please configure your zappa_settings file.")
            quit()  # pragma: no cover

        # Load up file
        try:
            with open(settings_file) as json_file:
                self.zappa_settings = json.load(json_file)
        except Exception as e:  # pragma: no cover
            print("Problem parsing settings file.")
            print(e)
            quit()  # pragma: no cover

        # Make sure that this environment is our settings
        if self.api_stage not in self.zappa_settings.keys():
            print("Please define '%s' in your Zappa settings." %
                  self.api_stage)
            quit()  # pragma: no cover

        # We need a working title for this project. Use one if supplied, else cwd dirname.
        if 'project_name' in self.zappa_settings[
                self.api_stage]:  # pragma: no cover
            self.project_name = self.zappa_settings[
                self.api_stage]['project_name']
        else:
            self.project_name = self.slugify(os.getcwd().split(os.sep)[-1])

        # The name of the actual AWS Lambda function, ex, 'helloworld-dev'
        self.lambda_name = self.project_name + '-' + self.api_stage

        # Load environment-specific settings
        self.s3_bucket_name = self.zappa_settings[self.api_stage]['s3_bucket']
        self.vpc_config = self.zappa_settings[self.api_stage].get(
            'vpc_config', {})
        self.memory_size = self.zappa_settings[self.api_stage].get(
            'memory_size', 512)
        self.app_function = self.zappa_settings[self.api_stage].get(
            'app_function', None)
        self.aws_region = self.zappa_settings[self.api_stage].get(
            'aws_region', 'us-east-1')
        self.debug = self.zappa_settings[self.api_stage].get('debug', True)
        self.prebuild_script = self.zappa_settings[self.api_stage].get(
            'prebuild_script', None)

        # Create an Zappa object..
        self.zappa = Zappa(session)
        self.zappa.aws_region = self.aws_region

        # Load your AWS credentials from ~/.aws/credentials
        self.zappa.load_credentials(session)

        # ..and configure it
        for setting in CUSTOM_SETTINGS:
            if self.zappa_settings[self.api_stage].has_key(setting):
                setattr(self.zappa, setting,
                        self.zappa_settings[self.api_stage][setting])

        return self.zappa
Example #2
0
    def load_settings(self, settings_file="zappa_settings.json", session=None):
        """
        Load the local zappa_settings.json file.

        An existing boto session can be supplied, though this is likely for testing purposes.

        Returns the loaded Zappa object.
        """

        # Ensure we're passed a valid settings file.
        if not os.path.isfile(settings_file):
            print("Please configure your zappa_settings file.")
            quit()  # pragma: no cover

        # Load up file
        self.load_settings_file(settings_file)

        # Make sure that this environment is our settings
        if self.api_stage not in self.zappa_settings.keys():
            print("Please define '{0!s}' in your Zappa settings.".format(
                self.api_stage))
            quit()  # pragma: no cover

        # We need a working title for this project. Use one if supplied, else cwd dirname.
        if 'project_name' in self.zappa_settings[
                self.api_stage]:  # pragma: no cover
            self.project_name = self.zappa_settings[
                self.api_stage]['project_name']
        else:
            self.project_name = slugify.slugify(os.getcwd().split(os.sep)[-1])

        # The name of the actual AWS Lambda function, ex, 'helloworld-dev'
        # Django's slugify doesn't replace _, but this does.
        self.lambda_name = slugify.slugify(self.project_name + '-' +
                                           self.api_stage)

        # Load environment-specific settings
        self.s3_bucket_name = self.zappa_settings[self.api_stage]['s3_bucket']
        self.vpc_config = self.zappa_settings[self.api_stage].get(
            'vpc_config', {})
        self.memory_size = self.zappa_settings[self.api_stage].get(
            'memory_size', 512)
        self.app_function = self.zappa_settings[self.api_stage].get(
            'app_function', None)
        self.aws_region = self.zappa_settings[self.api_stage].get(
            'aws_region', 'us-east-1')
        self.debug = self.zappa_settings[self.api_stage].get('debug', True)
        self.prebuild_script = self.zappa_settings[self.api_stage].get(
            'prebuild_script', None)
        self.profile_name = self.zappa_settings[self.api_stage].get(
            'profile_name', None)
        self.log_level = self.zappa_settings[self.api_stage].get(
            'log_level', "DEBUG")
        self.domain = self.zappa_settings[self.api_stage].get('domain', None)
        self.timeout_seconds = self.zappa_settings[self.api_stage].get(
            'timeout_seconds', 30)
        self.use_apigateway = self.zappa_settings[self.api_stage].get(
            'use_apigateway', True)
        self.lambda_handler = self.zappa_settings[self.api_stage].get(
            'lambda_handler', 'handler.lambda_handler')
        self.remote_env_bucket = self.zappa_settings[self.api_stage].get(
            'remote_env_bucket', None)
        self.remote_env_file = self.zappa_settings[self.api_stage].get(
            'remote_env_file', None)

        self.zappa = Zappa(boto_session=session,
                           profile_name=self.profile_name,
                           aws_region=self.aws_region)

        for setting in CUSTOM_SETTINGS:
            if setting in self.zappa_settings[self.api_stage]:
                setattr(self.zappa, setting,
                        self.zappa_settings[self.api_stage][setting])

        return self.zappa
Example #3
0
File: cli.py Project: tommyvn/Zappa
    def load_settings(self, settings_file="zappa_settings.json", session=None):
        """
        Load the local zappa_settings.json file. 

        An existing boto session can be supplied, though this is likely for testing purposes.

        Returns the loaded Zappa object.
        """

        # Ensure we're passesd a valid settings file.
        if not os.path.isfile(settings_file):
            print("Please configure your zappa_settings file.")
            quit() # pragma: no cover

        # Load up file
        self.load_settings_file(settings_file)

        # Make sure that this environment is our settings
        if self.api_stage not in self.zappa_settings.keys():
            print("Please define '%s' in your Zappa settings." % self.api_stage)
            quit() # pragma: no cover

        # We need a working title for this project. Use one if supplied, else cwd dirname.
        if 'project_name' in self.zappa_settings[self.api_stage]: # pragma: no cover
            self.project_name = self.zappa_settings[self.api_stage]['project_name']
        else:
            self.project_name = slugify.slugify(os.getcwd().split(os.sep)[-1])

        # The name of the actual AWS Lambda function, ex, 'helloworld-dev'
        # Django's slugify doesn't replace _, but this does.
        self.lambda_name = slugify.slugify(self.project_name + '-' + self.api_stage)

        # Load environment-specific settings
        self.s3_bucket_name = self.zappa_settings[self.api_stage]['s3_bucket']
        self.vpc_config = self.zappa_settings[
            self.api_stage].get('vpc_config', {})
        self.memory_size = self.zappa_settings[
            self.api_stage].get('memory_size', 512)
        self.app_function = self.zappa_settings[
            self.api_stage].get('app_function', None)
        self.aws_region = self.zappa_settings[
            self.api_stage].get('aws_region', 'us-east-1')
        self.debug = self.zappa_settings[
            self.api_stage].get('debug', True)
        self.prebuild_script = self.zappa_settings[
            self.api_stage].get('prebuild_script', None)
        self.profile_name = self.zappa_settings[
            self.api_stage].get('profile_name', None)
        self.log_level = self.zappa_settings[
            self.api_stage].get('log_level', "DEBUG")
        self.domain = self.zappa_settings[
            self.api_stage].get('domain', None)

        # Create an Zappa object..
        self.zappa = Zappa(session)

        # Explicitly set our AWS Region
        self.zappa.aws_region = self.aws_region

        # Load your AWS credentials from ~/.aws/credentials
        self.zappa.load_credentials(session, self.profile_name)

        # ..and configure it
        for setting in CUSTOM_SETTINGS:
            if self.zappa_settings[self.api_stage].has_key(setting):
                setattr(self.zappa, setting, self.zappa_settings[
                        self.api_stage][setting])        

        return self.zappa