Amazon web services Lambda@Edge直通式SDK
我想把一个Lambda@Edge函数使用AWS Go SDKAmazon web services Lambda@Edge直通式SDK,amazon-web-services,go,aws-lambda,amazon-cloudfront,aws-lambda-edge,Amazon Web Services,Go,Aws Lambda,Amazon Cloudfront,Aws Lambda Edge,我想把一个Lambda@Edge函数使用AWS Go SDK 在控制台中手动创建函数,并使用SDK=>将其分配给Cloudfront发行版 在代码中创建函数(使用与1相同的IAM角色),不分配给cloudfront=>有效 从2分配创建的函数。在控制台手动=>失败 从2分配创建的函数。通过SDK=>失败 正在部署从2创建的函数。在lambda控制台中手动(操作=>部署到lambda@edge)=>有效=>在此之后,可以手动和代码分配功能,而不存在任何问题 3中的错误。四,。是一样的: Inval
InvalidLambdaFunctionAssociation: Lambda@Edge cannot retrieve the specified Lambda function. Update the IAM policy to add permission: lambda:GetFunction for resource: arn:aws:lambda:us-east-1:123456789:function:example:1 and try again.
让我困惑的是,我正在重用在1中创建的相同角色
以下是我如何通过代码创建函数:
lam := lambda.New(session)
lam.CreateFunction(&lambda.CreateFunctionInput{
FunctionName: aws.String("example"),
Handler: aws.String("index.handler"),
Runtime: aws.String("nodejs12.x"),
Role: aws.String("arn:aws:iam::123456:role/service-role/existing-role"),
Code: &lambda.FunctionCode{
S3Bucket: aws.String("bucket-xyz"),
S3Key: aws.String("source.zip"),
},
}) // works w/o issues
lam.AddPermission(&lambda.AddPermissionInput{
FunctionName: aws.String("example"),
StatementId: aws.String("AllowExecutionFromCloudFront"),
SourceArn: aws.String("arn:aws:cloudfront::12333456:distribution/CDNID1234"),
Principal: aws.String("edgelambda.amazonaws.com"),
Action: aws.String("lambda:GetFunction"),
}) // also works w/o error
// assigning the created lambda function would now fail
使用
去1.13
github.com/aws/aws-sdk-go v1.31.8我发现了问题
这个错误与实际问题完全无关。如果你问我的话,这是一个非常误导人的错误
所缺少的只是手头上lambda函数的一个发布版本
要使用Go SDK实现这一点,您必须执行以下操作:
lam := lambda.New(session)
lam.PublishVersion(&lambda.PublishVersionInput{
FunctionName: aws.String("example"),
Description: aws.String("Dont forget to publish ;)"),
})
使用CLI,您需要执行以下操作:
aws lambda publish-version --function-name example --description "Dont forget to publish"
实际上,您不能使用尚未发布的函数是有道理的。然而,来自AWS的错误并没有真正起到帮助作用
希望这能帮助任何人 出于好奇,如果在添加权限和分配函数之间添加延迟,会有帮助吗?“我会尝试最多5分钟,以防最终出现一致性问题。@BenWhaley说得对.”。。经常发生在w/AWS。。但是,是的,我确实试着推迟了。。还是不走运。