我正在创建一个 QLDB 分类帐作为我的堆栈的一部分。我不想提供分类帐名称(否则由于名称冲突,我无法创建多个环境)。
我还需要知道分类帐名称作为我的堆栈的输出/返回值,因为稍后一些 lambda 函数需要知道它才能使用 QLDB SDK。
使用以下代码,ledger.name 始终未定义
import * as qldb from '@aws-cdk/aws-qldb';
const ledger = new qldb.CfnLedger(this, 'Ledger', {
deletionProtection,
permissionsMode: 'STANDARD',
});
console.log(ledger.name)
这是有道理的,因为在 AWS 中创建分类帐之前,分类帐似乎不会获得其生成的名称(尽管它似乎确实是从堆栈中派生的)。
仅供参考,一旦创建它并且我知道它的名称,在cdk.out
文件夹中搜索名称什么也找不到,所以我不相信它包含在 CFN 模板中。
现在,我正在使用以下代码使用 CDK 生成一个唯一名称,但我只是想知道是否有更简洁的方法。
const name = cdk.Names.uniqueId(ledger);
ledger.name = name;
编辑
此代码生成的名称通常比账本名称的 32 个字符限制长,因此我还在其上运行了一个正则表达式来获取唯一名称的最后一部分。
const name = cdk.Names.uniqueId(ledger);
ledger.name = name;