向 Amplify gen 2 函数添加 lambda 层

问题描述 投票:0回答:1

有人可以指导我如何将现有的 lambda 层添加到第 2 代放大函数中吗?我在他们的文档中找不到任何参考来执行此操作,但我找到了一些有帮助的外部参考:

澄清一下,我有一个来自不同项目的现有 lambda 层,我想重用它,并且它已经部署在控制台上。现在,我只想将其附加到

backend.ts
中的 amplify gen 2 函数。但是,上面的示例使用的是层或类的本地路径,我认为这不适用于我的情况。我无法使用本地路径,因为层代码位于不同的存储库中,并且我不知道如何将类与 AWS amplify 的后端代码结合使用。

这是我添加 lambda 层的尝试:

import { defineBackend } from '@aws-amplify/backend'
import { auth } from './auth/resource'
import { data } from './data/resource'
import { myFunc} from './functions/MyFunc/resource'
import * as lambda from 'aws-cdk-lib/aws-lambda'
import { Stack } from 'aws-cdk-lib'

const backend = defineBackend({
  auth,
  data,
  myFunc,
})

const myFuncLambda = backend.myFunc.resources.lambda as lambda.Function

const layerVersion = lambda.LayerVersion.fromLayerVersionArn(
  Stack.of(myFuncLambda),
  'myFuncLayer',
  'arn:aws:lambda:{AWS::REGION}:{AWS::ACCOUNTID}:layer:{AWS::LAYERNAME}:{AWS::LAYERVERSION}'
)

myFuncLambda.addLayers(layerVersion)

编辑:为了进一步说明,我提供的代码在部署放大时不起作用。当我尝试部署时收到此错误消息:

NodeJSFunctionConstructInitializationError: Failed to instantiate nodejs function construct
aws-lambda aws-amplify
1个回答
0
投票

这就是在我的 Amplify Gen2 应用程序中添加图层的方式。

import { defineBackend } from '@aws-amplify/backend';
import { auth } from './auth/resource';
import { data } from './data/resource';
import { storage } from './storage/resource';
import { generateThumbnail } from './functions/generate-thmbnail/resource';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import 'dotenv/config'

var sharpLambdaLayerArn = process.env.SHARP_LAMBDA_LAYER_ARN;
var ffmpegLambdaLayerArn = process.env.FFMPEG_LAMBDA_LAYER_ARN;

if (!sharpLambdaLayerArn || !ffmpegLambdaLayerArn) {
  throw new Error('Missing required environment variables');
}

const backend = defineBackend({
  auth,
  data,
  storage,
  generateThumbnail
});


// Add the Sharp Layer to the generateThumbnail function
const generateThumbnailLambda = backend.generateThumbnail.resources.lambda as lambda.Function
const sharpLambdaLayer = lambda.LayerVersion.fromLayerVersionArn(generateThumbnailLambda, "SharpLayer", sharpLambdaLayerArn)
generateThumbnailLambda.addLayers(sharpLambdaLayer)
© www.soinside.com 2019 - 2024. All rights reserved.