gpt4 book ai didi

amazon-web-services - 尝试调用 Go AWS Lambda 函数时权限被拒绝

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:07 28 4
gpt4 key购买 nike

我创建了一个 AWS Lambda 函数,我正在使用 Webhook 调用 API Gateway以下是我使用 go build -o main.go 构建的代码,因为我一直在阅读您必须指定扩展名。

package main

import (
"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)
}

问题是即使我有 public permissions在我上传的S3 function .zip以及role permissions我仍然收到权限错误。

{
"errorMessage": "fork/exec /var/task/main: permission denied",
"errorType": "PathError"
}

最佳答案

您正在尝试运行 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

有关更多详细信息,包括在其他平台上运行此过程的说明,请参阅 AWS Lambda Deployment documentations

此外,您还需要在 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,但为所有文件设置了可执行位。

关于amazon-web-services - 尝试调用 Go AWS Lambda 函数时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964626/

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