将Ballerina部署为AWS Lambda功能

时间:2019-03-10 16:34:53

标签: aws-lambda ballerina

我已经编写了基本的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

可以添加和保存而不会出现相同的权限错误。

这表明芭蕾舞女演员层可能没有适当的公共权限。如果可以共享运行时包,我只是很高兴部署自己的私有层。

2 个答案:

答案 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区域的适当层。