我deploy编译好的c++,发现没有成功。线上的文件还是以前的。这是怎么回事?我用的是use-re[阿里云函数计算]

我deploy编译好的c++,发现没有成功。线上的文件还是以前的。这是怎么回事?我用的是use-remote,应该不会修改函数配置吧?

我查询了这个文件的修改时间,发现不是最新的

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在阿里云函数计算(FC)中使用deploy命令部署C++代码时,如果线上的文件没有更新,有可能是deploy命令没有执行成功,或者deploy命令没有生效。

    首先,您可以确认一下deploy命令是否执行成功,并且C++代码是否已经上传到云端。您可以使用命令如下来检查deploy是否成功:

    fun deploy

    如果deploy命令顺利执行,那么在您的云端函数中应该能够看到C++代码已经被部署了。您可以通过FC控制台或通过命令行工具查看云端函数的代码:

    fun deploy -y

    如果C++代码已经被正确部署,但是线上的文件没有更新,您可以考虑以下几种情况:

    1. 函数缓存:阿里云函数计算会使用函数缓存,以提高函数执行效率。在函数缓存的情况下,调用函数将直接返回上一次执行的结果,而不是重新加载最新代码。可以使用如下命令清空函数缓存:

      fun deploy --use-oss -y --force

      该命令将强制重新部署应用程序,并清空函数缓存。

    2. 函数配置:如果您使用了--use-remote选项,那么部署操作不会直接修改函数配置。因此,可能需要手动修改函数配置,将函数指定为最新部署的版本。可以通过以下命令查看函数配置:

      fun config get

      如果当前指定的版本不是最新的版本,则需要手动修改函数配置,将版本指定为最新版本。可以使用以下命令修改函数配置:

      fun deploy --use-remote -y --version xxx  #将xxx替换为最新版本的名称

    3. 权限问题:如果您使用了子账号,或者是通过RAM授权来部署,那么需要确保子账号或RAM用户拥有部署和修改函数代码的权限。

    如果您已经排除了以上问题,但是问题仍然存在,请尝试重新部署应用程序,或者使用其他方法将代码上传到云端。

  2. 有更新代码 函数修改时间也会更新的,重新部署试试吧。

    此答案来自钉钉群“阿里函数计算官网客户”

  3. 如果您使用的是 use-remote 部署方式,代码和配置应该是在本地构建后上传到云端的,不会修改函数配置。如果部署过程没有报错,但是线上代码没有更新,可能是以下原因导致的:

    没有正确指定函数代码目录:在 s.yaml 或者 template.yml 文件中,需要正确指定函数代码的目录,确保代码被正确上传到了云端。例如:

    functions:

    hello_world:

    handler: index.handlerruntime: nodejs12codeUri: ./src

    上面的配置表示将 ./src 目录下的代码上传到云端。

    没有正确指定函数入口文件:在 s.yaml 或者 template.yml 文件中,需要正确指定函数的入口文件,即 handler。这个配置也需要正确反映在您的本地代码中,确保本地代码与云端一致。例如:

    functions:

    hello_world:

    handler: index.handlerruntime: nodejs12codeUri: ./src

    上面的配置表示将函数的入口文件设置为 index.js 中的 handler 函数。

    函数版本未正确更新:在 s.yaml 文件中,每次部署时会默认创建一个新版本的函数,需要通过 s ls 命令查看最新版本号,并指定正确的版本号来调用函数。例如:

    s ls -v

    查看所有函数的版本

    s invoke -v 1

    调用版本为1的函数

    如果不指定版本号,默认会调用上一个版本的函数。

    如果排除以上问题后,线上代码仍然没有更新,可以查看函数部署日志,以便更好地理解问题所在。