亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試調用 Go AWS Lambda 函數時權限被拒絕

嘗試調用 Go AWS Lambda 函數時權限被拒絕

Go
手掌心 2023-07-26 13:28:16
我創建了一個 AWS Lambda 函數,我使用 Webhook 來調用API 網關go build -o main.go。下面是我自從讀到必須指定擴展名以來所使用的代碼。package mainimport (? ? "context"? ? "fmt"? ? "github.com/aws/aws-lambda-go/lambda")func HandleRequest(ctx context.Context) (string, error) {? ? return fmt.Sprintf("Hello!"), nil}func main() {? ? lambda.Start(HandleRequest)}問題是,即使我對上傳的S3 函數 .zip具有公共權限以及角色權限,我仍然收到權限錯誤。{? "errorMessage": "fork/exec /var/task/main: permission denied",? "errorType": "PathError"}
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

您正在嘗試運行 go 源代碼文件。您需要運行二進制文件:


# Build the binary for your module

GOOS=linux go build main.go


# Package the binary, note we're packaging "main", not "main.go" here:

zip function.zip main


# And upload "function.zip" this package to Lambda

此外,您還需要在 zip 文件中設置可執行位。有很多方法可以做到這一點,如果你想在 Windows 上做到這一點,你需要運行一個像這樣的 python 腳本:


import zipfile

import time


def make_info(filename):

? ? info = zipfile.ZipInfo(filename)

? ? info.date_time = time.localtime()

? ? info.external_attr = 0x81ed0000

? ? info.create_system = 3

? ? return info


zip_source = zipfile.ZipFile("source_file.zip")

zip_file = zipfile.ZipFile("dest_file.zip", "w", zipfile.ZIP_DEFLATED)


for cur in zip_source.infolist():

? ? zip_file.writestr(make_info(cur.filename), zip_source.open(cur.filename).read(), zipfile.ZIP_DEFLATED)


zip_file.close()

這將使用相同的內容source_file.zip重新打包它dest_file.zip,但為所有文件設置了可執行位。


查看完整回答
反對 回復 2023-07-26
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

我遇到了同樣的問題,您必須確保二進制文件的名稱與處理程序的名稱相似。這應該已經是你的情況了:


$ unzip -l main.zip 

Archive:  main.zip

  Length      Date    Time    Name

---------  ---------- -----   ----

 21477357  11-13-2020 00:02   main

更棘手的是,您應該確保二進制文件具有正確的權限,正如 Anon Coward 在評論中強調的那樣:


$ ls -l bin/main 

-rwxrwxr-x 1 root root 19325838 nov.  12 03:23 bin/main


這應該使您的二進制文件可執行。


就我而言,我無法生成chmod 755二進制文件,因為我在 Ubuntu VM 中工作,位于 VM 中安裝的共享文件夾下,所以我最終得到了這些權限,但無法更改它們:


$ ls -l bin/main 

-rwxrwx--- 1 root vboxsf 19325838 Nov 12 02:23 bin/main

如果有人有答案,我很想知道為什么我無法更改虛擬機內文件的組和權限。


查看完整回答
反對 回復 2023-07-26
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

當我嘗試在本地調用無服務器函數時,我遇到了同樣的問題,我暫時禁用了 selinux,然后調用了該函數,并且它成功運行。



查看完整回答
反對 回復 2023-07-26
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號