【发布时间】:2022-08-05 13:46:53
【问题描述】:
我想使用 AWS SDK 创建我的子堆栈(在我的主堆栈旁边),并将创建的堆栈 ID 写入 DynamoDB。问题是虽然堆栈已成功创建,但 lambda 返回了AlreadyExistsException,因此无法将堆栈 ID 更新为 DB。奇怪的是,如果我在更新 DB 函数之前删除了await,则 lambda 会返回成功,但更新函数不会继续。创建子栈 lambda 函数是在我的主栈创建完成后调用的,它的状态可以从 SNS 中检索。
我能做些什么来实现我的目标?
我的代码如下所示:
public async createMyStack(dataId) {
let stackId = \'\';
let data = this.dbService.getData(dataId);
if (!data.StackId) {
const cfn = new AWS.CloudFormation({
region: \'us-east-1\'
});
let stackInput: AWS.CloudFormation.Types.CreateStackInput = [
// Some stack input here
];
// create the stack
await cfn.createStack(stackInput, (err, data) => {
if (err) {
console.error(err);
throw err;
}
stackId = data.StackId ?? \'\';
}).promise();
// write stack id to DB
if (stackId) {
try {
await this.dbService.update(\'StackId\', stackId);
} catch (error) {
console.error(error);
throw error;
}
}
}
return stackId;
}
-
什么是堆栈重复异常?
-
@Lasek 准确地说是
AlreadyExistsException。我会编辑帖子 -
您提供的信息太少,dbservice 是什么?
-
@Lasek 那是我使用 DynamoDB 的自定义服务,到目前为止它运行良好,因此无需担心
标签: amazon-web-services aws-lambda amazon-cloudformation