gpt4 book ai didi

amazon-web-services - 如何在main.go之外读取文件并使其在AWS Lambda上运行

转载 作者:行者123 更新时间:2023-12-03 10:11:04 25 4
gpt4 key购买 nike

在AWS Lambda上,我想在main.go之外使用CSV文件
当我按照以下步骤操作时,这当然可以工作。

  • cd〜/go/src/lambda-go-sample
  • GOOS = linux进入build main.go
  • zip main.zip主
  • 上传到Lambda并测试=>“Helloƛ!”
  • main.go
    package main

    import (
    "github.com/aws/aws-lambda-go/lambda"
    )

    func hello() (string, error) {
    return "Hello ƛ!", nil
    }

    func main() {
    lambda.Start(hello)
    }

    现在,我在main.go的同一目录中添加sample.csv,并添加代码以读取它。
    λ样本
    |-main.go
    |-sample.csv main.go
    ...

    func hello()([]string ,error){
    queries, err := readCSV("sample.csv")
    return queries, err
    }

    func main(){
    lambda.Start(hello)
    }

    func readCSV(fileName string) (queries []string, err error) {
    f, err := os.Open(fileName)
    if err != nil {
    fmt.Fprintln(os.Stderr, "Failed to read CSV file", err)
    return nil, err
    }

    r := csv.NewReader(f)
    for {
    record, err := r.Read()
    if err == io.EOF {
    break
    }
    if err != nil {
    fmt.Fprintln(os.Stderr, "Failed to read CSV record", err)
    return nil, err
    }

    companyName := strings.Replace(record[1], "INC", "", -1)
    queries = append(queries, companyName+"CM")
    }
    return queries, nil
    }
    然后,当我执行与上述相同的步骤时,在控制台上会发生此错误。
    {
    "errorMessage": "open sample: no such file or directory",
    "errorType": "PathError"
    }
    我怎么解决这个问题??

    最佳答案

    我不知道“lambda”这个东西是否具有这个概念,但是当一个流程在当代商品OS中运行时,它具有"current directory" or "working directory" or "current working directory"的概念;使用相对(非绝对)名称访问文件的任何尝试均会将其解释为相对于当前进程的CWD。
    注意另外两件事:

  • 启动该进程时,操作系统可以自由将其CWD设置为所需的任何值。
    当您在交互式 shell 程序中运行进程时, shell 程序将进程的CWD设置为该 shell 程序的当前目录,并且操作系统本身不会造成干扰,这可能不会立即显而易见。
  • 该进程可以在运行时更改其CWD。

  • 再注意一件事:“lambda”实际上可能具有与CWD类似但又正交的概念:例如,它可能需要查询某些环境变量(或其他信息资源)的过程才能知道其“ Assets ”的位置。
    因此,要退后一点。您可以从 os.Getwd 开始获取进程的CWD,然后使用 path/filepath.Join 获取CSV文件的全名,然后尝试读取它。
    如果失败,那么您可能想更深入地研究“lambda”事物实际上为其运行的进程提供的运行时环境。
    如果我是你,我将从这一点开始。

    关于amazon-web-services - 如何在main.go之外读取文件并使其在AWS Lambda上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64241046/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com