似乎无法在使用 CDK 部署时获取 SSM 参数

Cannot seem to fetch SSM Parameter at deploy with CDK

我目前正在尝试通过 CDK SSM 参数库为我的管道获取一个参数,但是我似乎遇到了一个奇怪的问题:

CfnParameter at 'nonProdAccountId.Parameter' should be created in the scope of a Stack, but no Stack found

但是,我非常有信心在堆栈范围(BackendPipelineStack)中获取我的参数值。

//cdk.ts aka my entrypoint
const app = new cdk.App()
...
new BackendPipelineStack(app, "BackendPipelineStack", {
  nonProdAccountId: StringParameter.fromStringParameterName(app, "nonProdAccountId", "nonProdAccountId").stringValue,
  apiStack,
  commonInfraStack,
  deploymentStack,
})

我是不是漏掉了什么?

TIA

现在,您正在应用范围内导入 StringParameter。每个 StackConstruct 中的第一个参数是范围。

您可以在 App 范围内创建堆栈,但不能在 App 范围内创建构造 - 它们必须在 Stack 范围内创建。

您需要将导入移动到堆栈中,并将堆栈用作导入的范围(传递 this 而不是 app)。

所以你会改变

  nonProdAccountId: StringParameter.fromStringParameterName(app, "nonProdAccountId", "nonProdAccountId").stringValue,

  nonProdAccountIdParamName: "nonProdAccountId",

并用

导入栈内的参数
const nonProdAccountId = new StringParameter.fromStringParameterName(this, "nonProdAccountId", nonProdAccountIdParamName).stringValue;