You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何先删除复制区域Secret再删除主区域Secret(Node.js实现)

AWS跨区域复制Secret删除实现(Node.js)

前置依赖

  • 安装AWS Secrets Manager SDK v3:npm install @aws-sdk/client-secrets-manager
  • 运行身份的IAM权限需包含两个区域的secretsmanager:DeleteSecret操作权限

核心逻辑

AWS Secrets Manager限制已配置跨区域复制的主Secret,必须先删除所有关联的副本Secret,才能删除主Secret。因此实现逻辑为:先调用复制区域(us-west-1)的删除接口,再调用主区域(us-east-1)的删除接口。

完整代码示例

const { SecretsManagerClient, DeleteSecretCommand } = require("@aws-sdk/client-secrets-manager");

// 初始化两个区域的客户端
const replicaClient = new SecretsManagerClient({ region: "us-west-1" });
const primaryClient = new SecretsManagerClient({ region: "us-east-1" });

// 替换为你的Secret名称或完整ARN
const SECRET_ID = "your-secret-name";

async function deleteCrossRegionSecret() {
  try {
    // 1. 删除复制区域的副本Secret
    await replicaClient.send(new DeleteSecretCommand({
      SecretId: SECRET_ID,
      // 需立即永久删除则开启该参数,否则默认进入30天恢复期
      ForceDeleteWithoutRecovery: true
    }));
    console.log("us-west-1副本Secret删除完成");

    // 2. 删除主区域的原始Secret
    await primaryClient.send(new DeleteSecretCommand({
      SecretId: SECRET_ID,
      ForceDeleteWithoutRecovery: true
    }));
    console.log("us-east-1主Secret删除完成");
  } catch (error) {
    console.error("删除操作失败:", error);
    throw error;
  }
}

// 执行删除
deleteCrossRegionSecret();

注意事项

  • 若不确定Secret关联的所有复制区域,可先调用主区域的DescribeSecretCommand接口,从返回结果的ReplicationStatus字段获取所有副本区域,遍历批量删除即可,无需硬编码区域信息
  • 生产环境建议在两次删除操作之间添加状态校验,轮询调用复制区域的DescribeSecret接口确认副本完全删除后,再执行主区域删除,避免跨区域同步延迟导致的报错
  • 若不需要立即永久删除,移除ForceDeleteWithoutRecovery参数即可,Secret会进入预设的可恢复周期

内容的提问来源于stack exchange,提问作者theBeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:10