Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
def _get_version(name, alias=LIVE):
    return aws_lambda("get_alias", FunctionName=name, Name=alias, query="FunctionVersion")
Exemple #9
0
def _versions(name):
    versions = aws_lambda("list_versions_by_function", FunctionName=name, query="Versions[].Version")
    return versions[1:]
Exemple #10
0
def _get_version(name, alias=LIVE):
    return aws_lambda('get_alias',
                      FunctionName=name,
                      Name=alias,
                      query='FunctionVersion')
Exemple #11
0
def _versions(name):
    versions = aws_lambda('list_versions_by_function',
                          FunctionName=name,
                          query='Versions[].Version')
    return versions[1:]
Exemple #12
0
def _get_version(name, alias=LIVE):
    return aws_lambda('get_alias',
                      FunctionName=name,
                      Name=alias,
                      query='FunctionVersion')
Exemple #13
0
def _versions(name):
    versions = aws_lambda('list_versions_by_function',
                          FunctionName=name,
                          query='Versions[].Version')
    return versions[1:]