AWS Lambda部署Golang Telegram生日提醒Bot遭遇超时问题
AWS Lambda部署Telegram生日提醒Bot超时问题
我开发的Telegram生日提醒Bot在EC2实例上正常运行了2个月,近期计划迁移到AWS Lambda并配置为每日执行一次,但部署后始终出现超时错误,错误信息如下:
Task timed out after 60.02 seconds
项目的main.go代码如下:
package main import ( "context" "encoding/json" "fmt" "log" "strconv" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/secretsmanager" "github.com/aws/aws-sdk-go/aws" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) type Secrets struct { BotAPIKey string `json:"BOT_API_KEY"` ChatID string `json:"CHAT_ID"` ConfluenceAPIKey string `json:"CONFLUENCE_API_KEY"` } func getSecrets() (*Secrets, error) { secretName := "HIDDEN" region := "eu-west-1" config, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion(region)) if err != nil { return nil, err } svc := secretsmanager.NewFromConfig(config) input := &secretsmanager.GetSecretValueInput{ SecretId: aws.String(secretName), VersionStage: aws.String("AWSCURRENT"), } result, err := svc.GetSecretValue(context.TODO(), input) if err != nil { return nil, err } var secrets Secrets err = json.Unmarshal([]byte(*result.SecretString), &secrets) if err != nil { return nil, err } return &secrets, nil } func initializeBot(botAPIKey string) (*tgbotapi.BotAPI, error) { bot, err := tgbotapi.NewBotAPI(botAPIKey) if err != nil { return nil, err } bot.Debug = true fmt.Println("im here") return bot, nil } func handleRequest() error { log.Println("Starting handleRequest") secrets, err := getSecrets() if err != nil { log.Printf("Error getting secrets: %v", err) return err } bot, err := initializeBot(secrets.BotAPIKey) if err != nil { log.Printf("Error initializing bot: %v", err) return err } log.Printf("Authorized on account %s", bot.Self.UserName) chatID, err := strconv.ParseInt(secrets.ChatID, 10, 64) if err != nil { log.Printf("Error converting chatID to int64: %v", err) return err } scheduleBirthdayMessages(bot, chatID, secrets.ConfluenceAPIKey) return nil } func main() { lambda.Start(handleRequest) }
项目中其他文件功能均正常,我怀疑问题出在处理函数的实现上。部署命令如下:
CGO_ENABLED=0 go build -o bootstrap zip lambda-handler.zip bootstrap
内容的提问来源于stack exchange,提问作者Eladik
相关产品推荐
相关产品推荐

