![](/img/trans.png)
[英]cdk synth with stack name provided still synths all the stacks in the project
[英]RETAIN removalPolicy on secret stack so it doesn't get deleted on synth
我有一个 cdk 堆栈,包括一个秘密堆栈,我目前正在尝试部署我的应用程序,并且我最近从 ecr 中删除了一个秘密堆栈和容器。 但是,由于当前部署的应用程序依赖于此,因此我在部署时得到以下信息
Export <redacted>-*******-secrets-stack:ExportsOutputRefoauth2proxysecret66696FAADBFA07E9 cannot be deleted as it is in use by <redacted>-*******-ecs-stack
所以我加回了秘密堆栈
import { Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager";
interface SecretsStackProps extends StackProps {
namespace: string;
}
export class SecretsStack extends Stack {
public oauth2ProxySecrets: secretsmanager.Secret;
public appSecrets: secretsmanager.Secret;
constructor(scope: Construct, id: string, props: SecretsStackProps) {
super(scope, id, props);
// added this back
this.oauth2ProxySecrets = new secretsmanager.Secret(this, `oauth2-proxy-secret`, {
secretName: `${props.namespace}/<redacted>/oauth2-proxy`
}
);
//
this.appSecrets = new secretsmanager.Secret(this, `app-secret`, {
secretName: `${props.namespace}/<redacted>/app`
});
}
}
我 go 如何保留这个堆栈,据我所知,因为这个容器/堆栈没有被使用,它试图删除堆栈,但由于当前的部署不能。
这里的任何帮助都会很棒。
发生这种情况是因为它首先尝试使用秘密更新堆栈,然后是用于导入它们的堆栈。
这失败了,因为无法在导入之前删除导出。
移除堆栈的解决方案是使其成为一个两步过程。 首先,这是主要部分,我们需要确保即使没有在任何地方进口也能保留出口。 为此,存在一个辅助方法: Stack.exportValue
。
因此,您需要将以下内容添加到导出堆栈:
this.exportValue(oauth2ProxySecrets.secretArn);
this.exportValue(appSecrets.secretArn);
执行此操作后,部署将通过 go。 部署后,您可以自由地完全删除堆栈代码,因为它不会与其他堆栈解耦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.