当前位置: 首页 > 知识库问答 >
问题:

可以重命名AWS Lambda函数吗?

石俊雄
2023-03-14

出于测试目的,我在AWS上创建了一些Lambda函数(命名为< code>test_function什么的),然后在测试后,我发现这些函数可以在prod env中使用。

是否可以重命名Lambda函数?以及如何重命名?或者我应该创建一个新的并复制粘贴源代码?

共有3个答案

郑曜灿
2023-03-14

我的lambda重命名解决方案,基本上使用boto3描述以前的lambda信息进行配置设置,并下载以前的lambda函数代码来创建新的lambda,但触发器不会设置,因此您需要手动添加回触发器

from boto3.session import Session
from botocore.client import Config
from botocore.handlers import set_list_objects_encoding_type_url
import boto3
import pprint
import urllib3

pp = pprint.PrettyPrinter(indent=4)

session = Session(aws_access_key_id= {YOUR_ACCESS_KEY},
                  aws_secret_access_key= {YOUR_SECRET_KEY},
                  region_name= 'your_region')

PREV_FUNC_NAME = 'your_prev_function_name'
NEW_FUNC_NAME = 'your_new_function_name'


def prev_lambda_code(code_temp_path):
    '''
    download prev function code
    '''
    code_url = code_temp_path
    http = urllib3.PoolManager()
    response = http.request("GET", code_url)
    if not 200 <= response.status < 300:
        raise Exception(f'Failed to download function code: {response}')
    return response.data

def rename_lambda_function(PREV_FUNC_NAME , NEW_FUNC_NAME):
    '''
    Copy previous lambda function and rename it
    '''
    lambda_client = session.client('lambda')
    prev_func_info = lambda_client.get_function(FunctionName = PREV_FUNC_NAME)

    if 'VpcConfig' in prev_func_info['Configuration']:
        VpcConfig = {
            'SubnetIds' : prev_func_info['Configuration']['VpcConfig']['SubnetIds'],
            'SecurityGroupIds' : prev_func_info['Configuration']['VpcConfig']['SecurityGroupIds']
        }
    else:
        VpcConfig = {}

    if 'Environment' in prev_func_info['Configuration']:
        Environment = prev_func_info['Configuration']['Environment']
    else:
        Environment = {}

    response = client.create_function(
        FunctionName = NEW_FUNC_NAME,
        Runtime = prev_func_info['Configuration']['Runtime'],
        Role = prev_func_info['Configuration']['Role'],
        Handler = prev_func_info['Configuration']['Handler'],
        Code = {
            'ZipFile' : prev_lambda_code(prev_func_info['Code']['Location'])
        },
        Description = prev_func_info['Configuration']['Description'],
        Timeout = prev_func_info['Configuration']['Timeout'],
        MemorySize = prev_func_info['Configuration']['MemorySize'],
        VpcConfig = VpcConfig,
        Environment = Environment,
        PackageType = prev_func_info['Configuration']['PackageType'],
        TracingConfig = prev_func_info['Configuration']['TracingConfig'],
        Layers = [Layer['Arn'] for Layer in prev_func_info['Configuration']['Layers']],
    )
    pp.pprint(response)

rename_lambda_function(PREV_FUNC_NAME , NEW_FUNC_NAME)
柯正谊
2023-03-14

您无法重命名该函数,您唯一的选择是遵循此处已经提供的建议或创建一个新建议并复制粘贴代码。

实际上,您无法重命名它是一件好事:如果可以,它将停止工作,因为附加到函数的策略仍然指向旧名称,除非您手动编辑其中的每一个,或者使它们通用(这是不明智的)。

然而,作为软件开发方面的最佳实践,我建议您始终保持生产和测试(登台)分离,有效地复制您的环境。

这允许你在一个安全的环境中测试东西,在这个环境中,如果你犯了一个错误,你不会丢失任何重要的东西,当你确认你的新功能有效时,在生产中复制它们。

因此,在你的情况下,你会有两个lambda,一个叫做“我的-lambda-阶段”,另一个叫做“我的-lambda-prod”。使用 lambda 的 ENV 变量来适应当前环境,因此您无需重构!

吕作人
2023-03-14

重命名 lambda 函数最接近的是使用别名,这是一种命名特定版本的 lambda 的方法。但是,函数的实际名称是在创建它后设置的。如果要重命名它,只需创建一个新函数并将完全相同的代码复制到其中即可。这样做不会花费您任何额外费用(因为您只需为执行时间付费),因此您不会丢失任何内容。

有关如何命名lambda函数版本的参考,请查看此处的留档。

 类似资料:
  • 函数名称:重命名文件 函数功能: 修改文件名称 函数方法 flag = file.writeString (path,name) 参数 类型 必填 说明 path string 是 需要修改的文件路径 str string 是 修改后的文件名称 返回值 类型 说明 flag boolean true - 修改成功,false - 修改失败 函数用例 path = "/sdcard/LuaBox/P

  • 本文向大家介绍写个js函数,可以转化下划线命名到驼峰命名?相关面试题,主要包含被问及写个js函数,可以转化下划线命名到驼峰命名?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • 问题内容: 这个问题已经在这里有了答案 : 使用pandas GroupBy.agg()对同一列进行多次聚合 (3个答案) 去年关闭。 示例数据集: 我想通过和对这个数据集的观察进行分组,并对每个组求和。所以我用了这样的东西… 在使用时,我能够获得“ SQL-like”输出。我的问题是我无法在此处 重命名聚合变量。因此,在SQL中,如果想做上述事情,我会做这样的事情: 正如我们看到的,它很容易让我

  • 函数名称:重命名文件(夹) 函数功能:修改文件(夹)名称 函数方法 bool,msg = os.rename (oldname, newname) 参数 类型 必填 说明 oldname string 是 修改前的文件路径及名称 newname string 是 修改后的文件路径及名称 参数 类型 说明 bool boolean 成功 - tue,失败 - nil msg string 失败返回的

  • 问题内容: 我有一个JavaScript变量,其中包含JavaScript函数的名称。通过使用$ .ajax等加载并放置在页面上,此功能存在于页面上。 谁能告诉我如何调用变量中命名的javascript函数? 该函数的名称位于变量中,因为用于加载页面片段(将其插入到当前页面中)的URL包含要调用的函数的名称。 我愿意就如何实施此解决方案提出其他建议。 问题答案: 我会避免评估。 要解决此问题,您应