gpt4 book ai didi

aws-cloudformation - 有没有办法从 AWS CDK 中的 qldb.CfnLedger 获取生成的 QLDB 分类帐名称?

转载 作者:行者123 更新时间:2023-12-03 07:41:03 26 4
gpt4 key购买 nike

我正在创建一个 QLDB Ledger 作为我的堆栈的一部分。我不想提供分类帐名称(否则由于名称冲突我无法创建多个环境)。

我还需要知道账本名称作为堆栈的输出/返回值,因为稍后一些 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;

最佳答案

考虑到您的要求不是硬编码创建 cfnLedger 的分类帐名称,并且您希望在其他 cfn 资源中引用它的名称,您有以下两个选项

  1. 将账本名称作为引用
    const ledger = new qldb.CfnLedger(this, 'Ledger', {
deletionProtection,
permissionsMode: 'STANDARD',
});
const ledgerName = ledger.ref

// Create CloudFormation output.
new cdk.CfnOutput(this, 'QldbLedgerName', {
value: ledger.ref,
description: 'Qldb Ledger Name',
});

注意:console.log(ledger.ref) 不会生成名称,而是生成 token 引用。例如${Token[TOKEN.#]}

  • 生成账本名称作为唯一 ID 并将其传递给账本创建。您所采取的方法。
  • 我们建议您选择选项#1。

    关于aws-cloudformation - 有没有办法从 AWS CDK 中的 qldb.CfnLedger 获取生成的 QLDB 分类帐名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68221278/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com