Как выполнить исполняемый файл из AWS лямбда - PullRequest
0 голосов
/ 16 марта 2019

Я написал лямбда-функцию, которая выполняет другой исполняемый файл с именем abc.exe.

Теперь я создал zam-функцию лямбда-функции и загрузил ее в aws.Я не уверен , куда поместить мой "abc.exe"

Я попытался поместить его в тот же почтовый индекс, но я получаю ошибку ниже:

exec:«abc»: исполняемый файл не найден в $ PATH:

Вот мой код лямбда-функции:

func HandleLambdaEvent(request Request) (Response, error) {

    fmt.Println("Input", request.Input)
    fmt.Println("Output", request.Output)

    cmd := exec.Command("abc", "-v", "--lambda", request.Input, "--out", request.Output)
    var out bytes.Buffer
    var stderr bytes.Buffer
    cmd.Stdout = &out
    cmd.Stderr = &stderr
    err := cmd.Run()

    if err != nil {
        fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
        return Response{Message: fmt.Sprintf(stderr.String())}, nil
    }
    fmt.Println("Result: " + out.String())

    return Response{Message: fmt.Sprintf(" %s and %s are input and output", request.Input, request.Output)}, nil
}

Обновление:

Пробная версия 1:

Я загрузил файл abc.exe на s3, затем в своей функции HandleLambdaEvent загружаю его в папку tmp /.И затем, когда я пытаюсь получить доступ к нему после успешной загрузки, он показывает следующее сообщение об ошибке:

fork / exec / tmp / abc: нет такого файла или каталога:

Кодскачать abc.exe:

file, err2 := os.Create("tmp/abc.exe")
    if err2 != nil {
        fmt.Println("Unable to create file %q, %v", err2)
    }

    defer file.Close()


    sess, _ := session.NewSession(&aws.Config{
        Region: aws.String(region)},
    )

    downloader := s3manager.NewDownloader(sess)

    numBytes, err2 := downloader.Download(file,
        &s3.GetObjectInput{
            Bucket: aws.String(bucket),
            Key:    aws.String("abc.exe"),
        })
    if err2 != nil {
        fmt.Println("Unable to download item %q, %v", fileName, err2)
    }

    fmt.Println("Downloaded", file.Name(), numBytes, "bytes")
    file.Close()
...