利用腾讯云函数部署.Net 5米游社原神每日签到功能

自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用。其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了)。

 但对于.Net的部署目前资源很少,而且我也没学过bash。在去年请教了大佬后,终于误打误撞的配置成功了。本篇博客只是记录过程,有什么遗漏还需要各位大佬指出。

脚本步骤

 首先在新建,选择 运行环境 Custom Runtime。

 boostrap配置

虽然在文档有给出包需要包含 boostrap,但我并不知道boostrap具体实现方式,以下是我从文档和大佬的指引下写的执行代码,下图是执行输出日志,说明下一步是调用index.sh。其他地方不变。

  • 函数引导加载 SCF 首先检索部署包中的可执行引导文件 boostrap,根据检索结果并进行如下操作: 检索到 bootstrap 文件且可执行,加载执行 boostrap 程序,进入函数初始化阶段。 未检索到 bootstrap 文件或文件不可执行,返回 bootstrap 文件不存在,启动失败。
#! /bin/bash
set -euo pipefail

FuncFile="$(echo $_HANDLER | cut -d. -f1).sh"
echo "[step 1]初始化,开始加载函数文件 $FuncFile"
source ./$FuncFile
echo "=>完成"

echo "[step 2]初始化完成,开始发送ready信号"
curl -d " " -X POST -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/init/ready"
echo "=>完成"

echo "[step 3]开始循环监听处理事件调用"
while true
do
 HEADERS="$(mktemp)"
 echo "=>长轮询获取事件"
 EVENT_DATA=$(curl -sS -LD "$HEADERS" -X GET -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/invocation/next")
 echo "=>监听到事件:$EVENT_DATA"
 echo "=>调用函数,开始处理事件"
 $(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA"
 RESPONSE=$EVENT_DATA
 echo "=>返回 $RESPONSE"
 echo "=>推送函数处理结果"
 curl -X POST -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/invocation/response"  -d "$RESPONSE"
done


 

 

index.sh配置

参考 https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/tencentScf/index.sh

只需要在合适位置把执行程序放进去即可。因为我没有额外的参数配置,所以只需要执行 GenshinDailyHelper

echo "成功加载index.sh函数文件"

function main_handler () {
    echo "进入main_handler"
    EVENT_DATA=$1
    echo "$EVENT_DATA" 1>&2;
    echo "开始运行GenshinDailyHelper......"
    ./GenshinDailyHelper
    echo "函数结束"
}

 项目步骤

以上已经把云函数需要的两个文件配置好后,接下来该在项目配置怎么再外部获取参数了。

可以使用 Environment.GetEnvironmentVariables() 获取变量。这里就简单粗暴一点。

var environmentVariables = Environment.GetEnvironmentVariables();

if (environmentVariables.Contains("scf_cookie"))
{
    cookies = environmentVariables["scf_cookie"]?.ToString()?.Split("#");
}

 然后打开虚拟机,将项目编译好(dotnet-publish),打包成zip格式文件。

文件目录如下

├ bootstrap
└ index.sh

参考资料

https://github.com/RayWangQvQ/BiliBiliToolPro/tree/main/tencentScf

https://cloud.tencent.com/document/product/583/47610

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish

项目链接

https://github.com/yinghualuowu/GenshinDailyTools
https://github.com/yinghualuowu/GenshinDailyHelper.Docs

posted @ 2022-05-03 16:24  樱花落舞  阅读(371)  评论(0编辑  收藏  举报