云服务器内容精选
-
Java函数接口定义 Java函数接口定义:作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。对于返回参数对象类型,HTTP Response该类型的JSON字符串。 函数名:用户定义函数名称。 函数参数:用户定义参数,当前函数仅支持一个用户参数。对于复杂参数,建议定义为对象类型,以JSON字符串提供数据。FunctionGraph调用函数时,解析JSON为对象。 Context:runtime提供函数执行上下文,其接口定义在SDK接口说明。 Java函数的函数执行入口参数格式为:[包名].[类名].[执行函数名],请参考函数执行入口进行配置。
-
Java的initializer入口介绍 函数工作流 服务目前支持以下Java运行环境。 Java 8 (runtime = Java8) Java 11(runtime = Java11) Initializer格式为:[包名].[类名].[执行函数名] 示例:创建函数时指定的initializer为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 在函数工作流服务中使用Java实现initializer接口,需要定义一个java函数作为initializer入口,以下为initializer的简单示例。 public void my_initializer(Context context) { RuntimeLogger log = context.getLogger(); log.log(String.format("ak:%s", context.getAccessKey())); } 函数名 my_initializer需要与实现initializer接口时的initializer字段相对应。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
-
Java函数接口定义 Java函数接口定义:作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。对于返回参数对象类型,HTTP Response该类型的JSON字符串。 函数名:用户定义函数名称。 函数参数:用户定义参数,当前函数仅支持一个用户参数。对于复杂参数,建议定义为对象类型,以JSON字符串提供数据。FunctionGraph调用函数时,解析JSON为对象。 Context:runtime提供函数执行上下文,其接口定义在SDK接口说明。 Java函数的函数执行入口参数格式为:[包名].[类名].[执行函数名],请参考函数执行入口进行配置。
-
Java的initializer入口介绍 函数工作流服务目前支持以下Java运行环境。 Java 8 (runtime = Java8) Java 11(runtime = Java11) Initializer格式为:[包名].[类名].[执行函数名] 示例:创建函数时指定的initializer为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 在函数工作流服务中使用Java实现initializer接口,需要定义一个java函数作为initializer入口,以下为initializer的简单示例。 public void my_initializer(Context context) { RuntimeLogger log = context.getLogger(); log.log(String.format("ak:%s", context.getAccessKey())); } 函数名 my_initializer需要与实现initializer接口时的initializer字段相对应。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
-
示例 metadata: description: This is an example application for FunctionGraph. author: Serverless team homePageUrl: https://www.huaweicloud.com/product/functiongraph.html version: 1.0.0 components: - name: helloworld type: Huawei::FunctionGraph::Function properties: region: cn-east-4 codeUri: https://test-wkx.obs.cn-north-4.myhuaweicloud.com/helloworld.zip projectID: 0531e14952000f742f3ec0088c4b25cf handler: index.handler runtime: Python3.9 memorySize: 256 timeout: 60 userData: key1: value1 key2: value2 encryptedUserData: '{"nonce": "ZEUOREFaiahRbMz+K9xQwA==", "header": "aGVhZGVy", "ciphertext": "SCxXsffvpU1BF2Ci8a2RedNQ", "tag": "a+EYRVPOsQ+YpQkMuFg1wA=="}' initializerTimeout: 30 initializerHandler: index.init_handler strategyConfig: concurrency: 80 concurrentNum: 20
-
详解 函数配置在cam.yaml的properties属性下,当前支持的函数配置详解如下: 参数 是否必须 是否更新 描述 region 是 否 调用函数所在region。 codeUri 是 否 函数代码地址。该值为函数代码包在OBS上的地址。 projectID 是 否 租户Project ID。 handler 是 是 函数执行入口。 runtime 是 否 FunctionGraph函数的执行环境支持Node.js6.10、Python2.7、Python3.6、PHP7.3、Java8、Node.js 8.10、C#.NET Core 2.0、C#.NET Core 2.1。 Python2.7: Python语言2.7版本。 Python3.6: Python语言3.6版本。 PHP7.3: Php语言7.3版本。 Java8: Java语言8版本。 Node.js6.10: Nodejs语言6.10版本。 Node.js8.10: Nodejs语言8.10版本。 C#(.NET Core 2.0): C#语言2.0版本。 C#(.NET Core 2.1): C#语言2.1版本。 C#(.NET Core 3.1): C#语言3.1版本。 Custom: 自定义运行时。 memorySize 是 是 函数内存,单位M。 枚举值: 128、256、512、768、1024、1280、1536、1792、2048、2560、3072、3584、4096 timeout 是 是 函数运行超时时间,单位秒,范围3~900秒。 userData 否 是 用户自定义的name/value信息,在函数中使用的参数。 encryptedUserData 否 是 用户自定义的name/value信息,用于需要加密的配置。 initializerTimeout 否 是 初始化超时时间,超时函数将被强行停止,范围1~300秒。 initializerHandler 否 是 函数初始化入口,规则:xx.xx,必须包含“. ”。 举例:对于node.js函数:myfunction.initializer,则表示函数的文件名为myfunction.js,初始化的入口函数名为initializer。 concurrentNum 否 是 函数单实例并发数。 concurrency 否 是 单函数最大实例数,0禁用函数,-1无限制,例100,该函数最大实例数100(普通实例+预留实例)。 当前cam.yaml不支持VPC、委托、磁盘挂载和动态内存配置的更新,如果函数需要使用VPC、委托或者磁盘挂载和动态内存请在函数界面手动配置,在使用函数更新流水线时会保留VPC、委托、磁盘挂载和动态内存配置,不会覆盖掉。 为了避免在cam.yaml中明文显示函数的加密配置-encryptedUserData,该CICD使用了AES对称加密的GCM模式对encryptedUserData明文内容进行加密,加密输出配置为cam.yaml中encryptedUserData项对应的值。在functions仓库和“函数更新流水线”中encryptedUserData的值以密文传输,在最后部署更新函数时解密更新,所以在执行“函数更新流水线”时需提供AES加密时使用的Key。示例如下: encryptedUserData明文: '{"password":"123"}' 使用AES-GCM加密后: {"nonce": "ZEUOREFaiahRbMz+K9xQwA==", "header": "aGVhZGVy", "ciphertext": "SCxXsffvpU1BF2Ci8a2RedNQ", "tag": "a+EYRVPOsQ+YpQkMuFg1wA=="},其中ciphertext为加密后的密文。
-
安装KooCLI命令行工具 安装KooCLI命令行工具 远程登录购买的 ECS云服务器 ,执行如下命令安装KooCLI: curl -sSL https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/hcloud_install.sh -o ./hcloud_install.sh && bash ./hcloud_install.sh 图2 安装命令行工具 初始化KooCLI命令行工具 使用如下命令初始化KooCLI命令行工具: hcloud configure init 需要输入Access Key ID、Secret Access key和Region Name,获取方法请参见3、4。 图3 初始化KooCLI命令行工具 获取访问密钥(Access Key ID和Secret Access key) 如果您有登录密码,可以登录控制台,可以在我的凭证中获取自己的访问密钥AK/SK。请参见:新增访问密钥。可以下载得到AK/SK文件,文件名一般为:credentials.csv。如下图所示,文件包含了用户名称(User Name),AK(Access Key Id),SK(Secret Access Key)。 图4 credentials.csv文件内容 如果您没有登录密码,不能登录控制台,在访问密钥异常丢失或者需要重置时,可以请账号管理员在 IAM 中生成您的访问密钥,并发送给您。请参见:管理IAM用户访问密钥。 获取Region Name 请参见:地区和终端节点。 图5 获取区域
-
HTTP终端节点 此设置指定当有人通过GET请求访问函数API终端节点时,应运行first函数。您可以在部署服务后运行serverless info命令来获取终端节点的URL。 以下是一个例子: # serverless.yml functions: hello: handler: index.hello events: - apigw: env_id: DEFAULT_ENVIRONMENT_RELEASE_ID env_name: RELEASE req_method: GET path: /test name: API_test 请参考有关函数执行入口的文档,了解用于此类事件的入口函数签名。
-
示例 简单的函数调用 serverless invoke --function functionName 本示例将调用部署的函数,并在终端中输出调用的结果。 带数据的函数调用 serverless invoke --function functionName --data '{"name": "Bob"}' 此示例将使用提供的数据调用函数,并在终端中输出调用的结果。 带传递数据的函数调用 serverless invoke --function functionName --path lib/event.json 此示例将在调用指定/部署的函数时传递lib/event.json文件(相对于服务的根目录的相对路径)中的JSON数据。 event.json示例: { "key": "value" }
-
示例 从GitHub URL安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs 本示例将从GitHub下载huawei-nodejs服务的.zip文件,在当前工作目录下创建一个名为huawei-nodejs的新目录,并将文件解压到该目录下。 使用新服务名称从GitHub URL安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs--name my-huawei-service 此示例执行过程如下: 从GitHub下载huawei-nodejs服务的.zip文件。 在当前工作目录中创建名为my-huawei-service的新目录。 在此目录中解压文件。 如果根服务中存在serverless.yml,则将服务重命名为my-huawei-service。 从GitHub URL中的目录安装服务 serverless install --url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs 本示例将从GitHub下载huawei-nodejs服务。
-
示例 创建新服务 serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --name my-special-service 此示例将为服务生成Node.js运行时。华为作为提供商,该运行时将在当前工作目录中生成。 在(新)目录中创建指定名称的服务 serverless create --template-url https://github.com/zy-linn/examples/tree/v3/legacy/huawei-nodejs --path my-new-service 此示例将为服务生成Node.js运行时。华为作为提供商,该运行时将在my-new-service目录中生成;如不存在该目录,则会自动生成。在其他情况下Serverless将使用已经存在的目录。 此外,Serverless将根据您提供的路径将服务重命名。在此示例中,服务将重命名为my-new-service。
-
从环境变量中引用变量 要引用环境变量中的变量,请在serverless.yml中使用${env:someProperty}语法,如下: service: new-service provider: name: huawei runtime: Node.js14.18 credentials: ~/.fg/credentials # path must be absolute environment: variables: ENV_FIRST: ${env:TENCENTCLOUD_APPID} plugins: - serverless-huawei-functions functions: hello: handler: index.hello
-
打包配置 有时,您可能希望对函数产物以及它们的打包方式有更多的控制。 您可以使用patterns配置来更多地控制打包过程。 Patterns 您可以定义将从结果产物中排除/包括的全局模式。如果您希望排除文件,可以使用前缀为“!”的全局模式,如:!exclude-me/**。Serverless Framework将运行全局模式,以便您始终可以重新包含以前排除的文件和目录。 示例 排除所有node_modules,然后专门使用exclude重新包含的特定模块(在本例中为node-fetch): package: patterns: - '!node_modules/**' - 'node_modules/node-fetch/**' 排除handler.js以外的所有文件: package: patterns: - '!src/**' - src/function/handler.js 如果要排除目录,请不要忘记使用正确的全局语法,可参考如下: package: patterns: - '!tmp/**' - '!.git/**'
-
配置 事件属于每个函数,可以在serverless.yml的events属性中找到。 # serverless.yml functions: first: # Function name handler: index.http # Reference to file index.js & exported function 'http' events: - apigw: env_id: DEFAULT_ENVIRONMENT_RELEASE_ID env_name: RELEASE req_method: GET path: /test name: API_test 目前,每个函数只支持一个事件定义。
-
内存大小和超时 函数的memorySize和timeout可以在提供商或函数层面指定。提供商层面的定义允许所有函数共享此配置,而函数层面的定义意味着此配置仅对当前函数有效。 如果未指定,默认memorySize为256MB,timeout为30s。 # serverless.yml provider: memorySize: 512 timeout: 90 functions: first: handler: first second: handler: second memorySize: 256 timeout: 60
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格