如何解决dynamodb表名称更改时如何处理lambda函数重新部署
比方说,我创建了一个名为“ myTable”的动态表。
这是示例函数之一。
'use strict'
const AWS = require('aws-sdk');
const sha1 = require('sha1');
const moment = require('moment');
exports.handler = async function (event,context,callback) {
const documentClient = new AWS.DynamoDB.DocumentClient();
let responseBody = "";
let statusCode = 0;
const { url } = JSON.parse(event.body);
let id = sha1(Buffer.from(new Date().toString())) ;
const params = {
TableName : "myTable",//line a
Item: {
id: id,url: url,}
};
try{
const data = await documentClient.put(params).promise();
responseBody = JSON.stringify(data);
statusCode = 201;
}catch(err){
responseBody = `Unable to create users: ${err}`;
statusCode = 403;
}
const response = {
statusCode: statusCode,headers:{
"Content-Type": "application/json","access-control-allow-origin": "*"
},body: responseBody
}
return response
}
但是,如果我想更改表名,则会引起一些问题。
- 我需要先在dynamodb中手动删除“ myTable”,然后运行更新堆栈以获取更新的模板。
- 我需要为我的所有lambda函数修改上面代码中的a行,然后将新的zip文件上传到s3存储桶以获取这些函数。
有没有方便的方法来处理这两个问题?
解决方法
要使这些任务自动化,请查看CICD工具。 Spinaker是其中之一。无需重新发明这些工具。
,
- 我需要先在dynamodb中手动删除“ myTable”,然后运行更新堆栈以获取更新的模板。
如果所有内容均由CloudFormation(CFN)管理,则您也不需要“手动”删除任何内容。手动修改/删除由CloudFormation管理的资源是错误的做法。
- 我需要为我的所有lambda函数修改上面代码中的a行,然后将新的zip文件上传到s3存储桶以获取功能。
通常,您不会像这样对表名进行硬编码。一种常见的方法是通过lambda环境变量传递模板名称。如果所有内容均由CFN管理,则所有更新应由CFN自动为您完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。