我已经编写了基本的Ballerina函数,并尝试将其部署为AWS Lambda。
当我尝试添加Lambda层时(使用已发布的ARN链接-https://ballerina.io/deployment/aws-lambda/#ballerina-aws-lambda-layer-compatibility-matrix),AWS报告了权限错误
错误是
未经授权对资源执行lambda:GetLayerVersion:arn:aws:lambda:eu-west-1:141896495686:layer:ballerina-0-990-3:4
我正在使用eu-west-1地区。我也尝试过us-west-1。
我已经检查过,我的lambda执行角色确实包含GetLayerVersion权限。我还检查了是否可以成功添加其他公共层。例如,https://github.com/lambci/node-custom-lambda
中的自定义node11运行时arn:aws:lambda:eu-west-1:553035198032:layer:nodejs11:11
可以添加和保存而不会出现相同的权限错误。
这表明芭蕾舞女演员层可能没有适当的公共权限。如果可以共享运行时包,我只是很高兴部署自己的私有层。
答案 0 :(得分:3)
我们已经为所有区域创建了图层,但是不幸的是,并未为所有区域设置权限。由于上述原因导致了上述错误,现在我们已对其进行修复。您可以关注图层,然后重试。
arn:aws:lambda:eu-west-1:141896495686:layer:ballerina-0-990-3:4
arn:aws:lambda:us-west-1:141896495686:layer:ballerina-0-990-3:4
此外,您应该可以通过替换website
中指定的跟随ARN的区域部分来使用任何层arn:aws:lambda:<region to be replaced>:141896495686:layer:ballerina-0-990-3:4
答案 1 :(得分:0)
WSO2的更新-感谢Anjana Fernando:
从Ballerina的1.x GA版本开始,将在编译时使用生成的部署指令显示对层ARN的最新引用。
对于Lambda示例示例,生成的部署说明包括以下内容:
运行以下命令以部署每个Ballerina AWS Lambda函数:
aws lambda create-function --function-name <FUNCTION_NAME> --zip-file fileb://aws-ballerina-lambda-functions.zip --handler
aws_lambda_deployment.<FUNCTION_NAME> --runtime provided --role <LAMBDA_ROLE_ARN> --timeout 10 --memory-size 1024
aws lambda update-function-configuration --function-name <FUNCTION_NAME> --layers arn:aws:lambda:<REGION_ID>:141896495686:layer:ballerina:2
当然仍然需要替换FUNCTION_NAME
和您自己的LAMBDA_ROLE_ARN
,但是--layers
选项是对与Ballerina编译器版本匹配的层运行时的引用。唯一需要做的更改是为部署中要包含的层标识REGION_ID
,例如us-east-1。
就这样
--layers arn:aws:lambda:<REGION_ID>:141896495686:layer:ballerina:2
将被修改为
--layers arn:aws:lambda:us-east-1:141896495686:layer:ballerina:2
包括来自AWS的us-east-1区域的适当层。