似乎无法在使用 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。每个 Stack
或 Construct
中的第一个参数是范围。
您可以在 App 范围内创建堆栈,但不能在 App 范围内创建构造 - 它们必须在 Stack 范围内创建。
您需要将导入移动到堆栈中,并将堆栈用作导入的范围(传递 this
而不是 app
)。
所以你会改变
nonProdAccountId: StringParameter.fromStringParameterName(app, "nonProdAccountId", "nonProdAccountId").stringValue,
到
nonProdAccountIdParamName: "nonProdAccountId",
并用
导入栈内的参数
const nonProdAccountId = new StringParameter.fromStringParameterName(this, "nonProdAccountId", nonProdAccountIdParamName).stringValue;
我目前正在尝试通过 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。每个 Stack
或 Construct
中的第一个参数是范围。
您可以在 App 范围内创建堆栈,但不能在 App 范围内创建构造 - 它们必须在 Stack 范围内创建。
您需要将导入移动到堆栈中,并将堆栈用作导入的范围(传递 this
而不是 app
)。
所以你会改变
nonProdAccountId: StringParameter.fromStringParameterName(app, "nonProdAccountId", "nonProdAccountId").stringValue,
到
nonProdAccountIdParamName: "nonProdAccountId",
并用
导入栈内的参数const nonProdAccountId = new StringParameter.fromStringParameterName(this, "nonProdAccountId", nonProdAccountIdParamName).stringValue;