def _cleanup_old_versions(name): logger.info('cleaning up old versions of {0}. Keeping {1}'.format( name, REVISIONS)) versions = _versions(name) for version in versions[0:(len(versions) - REVISIONS)]: logger.debug('deleting {} version {}'.format(name, version)) aws_lambda('delete_function', FunctionName=name, Qualifier=version)
def _function_alias(name, version, alias=LIVE): try: logger.info("creating function alias {0} for {1}:{2}".format(alias, name, version)) arn = aws_lambda("create_alias", FunctionName=name, FunctionVersion=version, Name=alias, query="AliasArn") except ClientError: logger.info("alias {0} exists. updating {0} -> {1}:{2}".format(alias, name, version)) arn = aws_lambda("update_alias", FunctionName=name, FunctionVersion=version, Name=alias, query="AliasArn") return arn
def _function_alias(name, version, alias=LIVE): try: logger.info('creating function alias {0} for {1}:{2}'.format( alias, name, version)) arn = aws_lambda('create_alias', FunctionName=name, FunctionVersion=version, Name=alias, query='AliasArn') except ClientError: logger.info('alias {0} exists. updating {0} -> {1}:{2}'.format( alias, name, version)) arn = aws_lambda('update_alias', FunctionName=name, FunctionVersion=version, Name=alias, query='AliasArn') return arn
def create_update_lambda(role_arn, wiring): name, handler, memory, timeout = (wiring[k] for k in ('FunctionName', 'Handler', 'MemorySize', 'Timeout')) try: logger.info('finding lambda function') function_arn = aws_lambda('get_function', FunctionName=name, query='Configuration.FunctionArn') except ClientError: function_arn = None if not function_arn: logger.info('creating new lambda function {}'.format(name)) with open('gimel.zip', 'rb') as zf: function_arn, version = aws_lambda('create_function', FunctionName=name, Runtime='python2.7', Role=role_arn, Handler=handler, MemorySize=memory, Timeout=timeout, Publish=True, Code={'ZipFile': zf.read()}, query='[FunctionArn, Version]') else: logger.info('updating lambda function {}'.format(name)) aws_lambda('update_function_configuration', FunctionName=name, Runtime='python2.7', Role=role_arn, Handler=handler, MemorySize=memory, Timeout=timeout) with open('gimel.zip', 'rb') as zf: function_arn, version = aws_lambda('update_function_code', FunctionName=name, Publish=True, ZipFile=zf.read(), query='[FunctionArn, Version]') function_arn = _function_alias(name, version) _cleanup_old_versions(name) logger.debug('function_arn={} ; version={}'.format(function_arn, version)) return function_arn
def create_update_lambda(role_arn, wiring): name, handler, memory, timeout = (wiring[k] for k in ('FunctionName', 'Handler', 'MemorySize', 'Timeout')) try: logger.info('finding lambda function') function_arn = aws_lambda('get_function', FunctionName=name, query='Configuration.FunctionArn') except ClientError: function_arn = None if not function_arn: logger.info('creating new lambda function {}'.format(name)) with open('gimel.zip', 'rb') as zf: function_arn, version = aws_lambda('create_function', FunctionName=name, Runtime='python2.7', Role=role_arn, Handler=handler, MemorySize=memory, Timeout=timeout, Publish=True, Code={'ZipFile': zf.read()}, query='[FunctionArn, Version]') else: logger.info('updating lambda function {}'.format(name)) with open('gimel.zip', 'rb') as zf: function_arn, version = aws_lambda('update_function_code', FunctionName=name, Publish=True, ZipFile=zf.read(), query='[FunctionArn, Version]') function_arn = _function_alias(name, version) _cleanup_old_versions(name) logger.debug('function_arn={} ; version={}'.format(function_arn, version)) return function_arn
def create_update_lambda(role_arn, wiring): name, handler, memory, timeout = (wiring[k] for k in ("FunctionName", "Handler", "MemorySize", "Timeout")) try: logger.info("finding lambda function") function_arn = aws_lambda("get_function", FunctionName=name, query="Configuration.FunctionArn") except ClientError: function_arn = None if not function_arn: logger.info("creating new lambda function {}".format(name)) with open("gimel.zip", "rb") as zf: function_arn, version = aws_lambda( "create_function", FunctionName=name, Runtime="python2.7", Role=role_arn, Handler=handler, MemorySize=memory, Timeout=timeout, Publish=True, Code={"ZipFile": zf.read()}, query="[FunctionArn, Version]", ) else: logger.info("updating lambda function {}".format(name)) with open("gimel.zip", "rb") as zf: function_arn, version = aws_lambda( "update_function_code", FunctionName=name, Publish=True, ZipFile=zf.read(), query="[FunctionArn, Version]", ) function_arn = _function_alias(name, version) _cleanup_old_versions(name) logger.debug("function_arn={} ; version={}".format(function_arn, version)) return function_arn
def _get_version(name, alias=LIVE): return aws_lambda("get_alias", FunctionName=name, Name=alias, query="FunctionVersion")
def _versions(name): versions = aws_lambda("list_versions_by_function", FunctionName=name, query="Versions[].Version") return versions[1:]
def _get_version(name, alias=LIVE): return aws_lambda('get_alias', FunctionName=name, Name=alias, query='FunctionVersion')
def _versions(name): versions = aws_lambda('list_versions_by_function', FunctionName=name, query='Versions[].Version') return versions[1:]