云函数(go)部署-腾讯云

目录

 

1、云函数入口

2、上传本地函数代码

2.1、进入创建云函数

2.2、定义函数名称,选择运行环境

2.3、上传本地云函数

2.3、配置高级属性(可选填)

2.4、点击完成,云函数代码没有问题,则可正常部署

2.5、函数管理(重新上传部署代码,测试函数)

3、创建触发器

3.1、创建触发器

3.2、前往API网关,管理API

4、函数代码编码

4.1、代码打包命令

4.2、代码实例


1、云函数入口

2、上传本地函数代码

2.1、进入创建云函数

2.2、定义函数名称,选择运行环境

2.3、上传本地云函数

2.3、配置高级属性(可选填)

2.4、点击完成,云函数代码没有问题,则可正常部署

2.5、函数管理(重新上传部署代码,测试函数)

3、创建触发器

3.1、创建触发器

3.2、前往API网关,管理API

4、函数代码编码

4.1、代码打包命令

代码打包

# 拉取依赖

go mod init app-service

go mod tidy

  

# 云函数编译及打包

GOOS=linux GOARCH=amd64 go build -o main main.go

zip main.zip main

 

4.2、代码实例

main

package main

 

import (

    "context"

    "encoding/json"

    "fmt"

    "github.com/tencentyun/scf-go-lib/cloudfunction"

    "golang.org/x/oauth2"

    "log"

    "os"

)

 

// ssh-keygen -t rsa生成的私钥文件,可以根据需求替换成自己的私钥

var keyData = []byte("-----BEGIN RSA PRIVATE KEY-----\n***\n-----END RSA PRIVATE KEY-----")

 

var endpotin = oauth2.Endpoint{

    AuthURL:  "https://accounts.google.com/o/oauth2/auth",

    TokenURL: "https://accounts.google.com/o/oauth2/token",

}

 

type Event struct {

    RequestContext struct {

        ServiceID  string `json:"serviceId"`

        Path       string `json:"path"`

        HTTPMethod string `json:"httpMethod"`

        RequestID  string `json:"requestId"`

        Identity   struct {

            SecretID string `json:"secretId"`

        } `json:"identity"`

        SourceIP string `json:"sourceIp"`

        Stage    string `json:"stage"`

    } `json:"requestContext"`

    Body           string `json:"body"`

    QueryStringParameters struct {

        RedirectURL string `json:"RedirectURL"`

    } `json:"queryStringParameters"`

    HeaderParameters struct {

        Refer string `json:"Refer"`

    } `json:"headerParameters"`

    StageVariables struct {

        Stage string `json:"stage"`

    } `json:"stageVariables"`

    Path        string `json:"path"`

    QueryString struct {

        Foo string `json:"foo"`

        Bob string `json:"bob"`

    } `json:"queryString"`

}

 

func integratedResponse(body map[string]interface{}) (map[string]interface{}, error) {

    response := make(map[string]interface{})

    response["isBase64Encoded"] = false

    response["statusCode"] = 200

    headers := make(map[string]string)

    headers["Content-Type"] = "application/json"

    response["headers"] = headers

 

    js, err := json.Marshal(body)

    if err != nil {

        log.Printf("integratedResponse exception:%v", err)

    }

 

    response["body"] = fmt.Sprintf("%s", js)

    return response, nil

}

 

const oauthStateString = "random"

 

func getAuthCodeUrl(ctx context.Context, event Event) (map[string]interface{}, error) {

    result := make(map[string]interface{})

    // 读取环境配置变量,可以在函数配置中编辑

    log.Println("env.ClientID:", os.Getenv("ClientID"))

    log.Println("env.ClientSecret:", os.Getenv("ClientSecret"))

 

    var googleOauthConfig = &oauth2.Config{

        ClientID:     os.Getenv("ClientID"),

        ClientSecret: os.Getenv("ClientSecret"),

        // 读取request请求参数

        RedirectURL:  event.QueryStringParameters.RedirectURL,

        Scopes: []string{"https://www.googleapis.com/auth/userinfo.profile",

            "https://www.googleapis.com/auth/userinfo.email"},

        Endpoint: endpotin,

    }

 

 

    url := googleOauthConfig.AuthCodeURL(oauthStateString)

    log.Printf("googleOauthConfig.AuthCodeURL url:%v", url)

 

    result["auth_code_url"] = url

    return integratedResponse(result)

}

 

func main() {

    // Make the handler available for Remote Procedure Call by Cloud Function

    cloudfunction.Start(getAuthCodeUrl)

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值