繁体   English   中英

在秘密堆栈上保留 removalPolicy,这样它就不会在 synth 上被删除

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM