[AWS] Lambda
keywords: aws, s3, lambda
使用 Node.js @ AWS Docs
部署(Deploy)
# ./deploy.sh
rm tmp/*
# 將專案打包成 zip
zip -9 -r function.zip . -x '*.git*' '*.vscode*' 'node_modules/@ffmpeg-installer/darwin-x64/*'
echo "Uploading to AWS lambda ..."
# 上傳 AWS Lambda
aws lambda update-function-code --function-name extractAudioToGCS --zip-file fileb://function.zip
# 移除壓縮檔
rm function.zip
本地執行 Lambda
過時內容
以下程式碼使用的是 AWS SDK for JavaScript v2(aws-sdk),該版本已於 2023 年 9 月進入維護模式(maintenance mode),不再新增功能,並預計未來停止支援。建議改用 AWS SDK for JavaScript v3(@aws-sdk/client-lambda),v3 採用模組化架構,支援 Tree-shaking,並使用 Promise-based API。
// AWS SDK v3 範例
import { LambdaClient, InvokeCommand } from '@aws-sdk/client-lambda';
const client = new LambdaClient({ region: 'us-west-2' });
const command = new InvokeCommand({
FunctionName: 'afterVideoUploaded',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: JSON.stringify({ objectKeyOnS3: 'facevideo/...' }),
});
const response = await client.send(command);
/* Invoke Lambda locally */
const lambda = new AWS.Lambda({
region: 'us-west-2',
});
var params = {
FunctionName: 'afterVideoUploaded',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: JSON.stringify({
objectKeyOnS3: 'facevideo/1566458780000bQySkm8h_video.webm',
}),
};
lambda.invoke(params, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
}
});