Ошибка 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,
    });
Другие вопросы по тегам