Ошибка libncurses.so.6 при использовании настраиваемой среды выполнения Bref Lambda с AWS CDK
Я пытаюсь использовать настраиваемую среду выполнения Bref в AWS Lambda, используя AWS CDK вместо Serverless.
Код CDK приведен ниже.
const region = cdk.Stack.of(this).region;
//arn:aws:lambda:ap-southeast-1:209497400698:layer:php-74:18
const brefLayerVersion = `arn:aws:lambda:${region}:209497400698:layer:php-80:8`;
const assetPath = path.join(__dirname, '../../lambda');
const asset = lambda.Code.fromAsset(assetPath);
const lambdaFunc = new lambda.Function(this, 'LambdaFunction', {
runtime: lambda.Runtime.PROVIDED,
handler: 'src/index.php',
layers: [
lambda.LayerVersion.fromLayerVersionArn(this, 'BrefPHPLayer', brefLayerVersion),
],
code: asset,
});
new cdk.CfnOutput(this, 'LambdaFunctionArn', { value: lambdaFunc.functionArn });
Вот полный исходный код https://github.com/petrabarus/cdk-bref-function
Когда я пытался вызвать вручную с помощью AWS CLI
aws lambda invoke --function-name arn:blabla
, это показывает ошибку.
Журнал Cloudwatch показывает что-то вроде этого.
/opt/bin/php: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory
Если я сравниваю развертывание с Serverless Framework, конфигурация (уровень, код и т. Д.) Почти такая же. Что я упустил?
1 ответ
Оказывается, для Bref 1.0 требуется среда выполнения Amazon Linux 2. Вот обновленный код CDK.
const lambdaFunc = new lambda.Function(this, 'LambdaFunction', {
runtime: lambda.Runtime.PROVIDED_AL2,
handler: 'src/index.php',
layers: [
lambda.LayerVersion.fromLayerVersionArn(this, 'BrefPHPLayer', brefLayerVersion),
],
code: asset,
});