开发者社区 > 云原生 > Serverless > 正文

我deploy编译好的c++,发现没有成功。线上的文件还是以前的。这是怎么回事?我用的是use-re

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

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

提问14.png

展开
收起
芬奇福贵 2023-05-10 12:23:25 252 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云函数计算(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用户拥有部署和修改函数代码的权限。

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

    2023-05-24 10:19:15
    赞同 展开评论 打赏
  • 有更新代码 函数修改时间也会更新的,重新部署试试吧。

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

    2023-05-10 18:42:35
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

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

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

    functions:

    hello_world:

    handler: index.handler
    
    runtime: nodejs12
    
    codeUri: ./src
    

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

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

    functions:

    hello_world:

    handler: index.handler
    
    runtime: nodejs12
    
    codeUri: ./src
    

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

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

    s ls -v

    查看所有函数的版本

    s invoke -v 1

    调用版本为1的函数

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

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

    2023-05-10 17:17:17
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:

快速交付实现商业价值。

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载