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

如何将app仓库的Table添加至infra仓库的BackupPlan?

解决AWS CDK跨仓库将DynamoDB表添加到现有备份计划的问题

核心原因

通过BackupPlan.fromBackupPlanId导入的是只读的IBackupPlan接口实例,该接口仅用于引用已存在的备份计划,不提供addSelection这类修改方法。要实现将表加入备份计划,需通过创建独立的BackupSelection资源来关联。

解决方案1:修改infra仓库导出备份计划ARN(推荐)

在infra仓库中,除了导出备份计划ID,额外导出其ARN(创建BackupSelection需要ARN):

// infra仓库代码
import { BackupPlan, CfnOutput } from 'aws-cdk-lib/aws-backup';

const backupPlan = new BackupPlan(this, 'backup-plan', {/*...*/});

// 导出备份计划ARN
new CfnOutput(this, `backupPlanArnOutput`, {
  value: backupPlan.backupPlanArn,
  exportName:`backupPlanArn`,
});

在app仓库中,导入ARN并创建BackupSelection关联你的DynamoDB表:

// app仓库代码
import { BackupSelection, BackupPlan } from 'aws-cdk-lib/aws-backup';
import { Fn } from 'aws-cdk-lib';
import { Table } from 'aws-cdk-lib/aws-dynamodb';

const myTable = new Table(this, 'my-table', { /* ... */ });

// 通过ARN导入备份计划
const backupPlan = BackupPlan.fromBackupPlanArn(this, 'imported-backup-plan', Fn.importValue('backupPlanArn'));

// 创建备份选择器,将表加入备份计划
new BackupSelection(this, 'table-backup-selection', {
  backupPlan: backupPlan,
  resources: [
    BackupSelection.dynamoDbTable(myTable)
  ],
  selectionName: 'MyTableBackupSelection' // 可选:自定义选择器名称
});

解决方案2:通过ID拼接ARN(无需修改infra仓库)

如果无法修改infra仓库的输出,可以利用AWS备份计划ARN的固定格式,通过导入的ID拼接出ARN:

ARN格式:arn:aws:backup:${region}:${account-id}:backup-plan/${backup-plan-id}

// app仓库代码
import { BackupSelection, BackupPlan } from 'aws-cdk-lib/aws-backup';
import { Fn, Stack } from 'aws-cdk-lib';
import { Table } from 'aws-cdk-lib/aws-dynamodb';

const myTable = new Table(this, 'my-table', { /* ... */ });
const currentStack = Stack.of(this);

// 拼接备份计划ARN
const backupPlanId = Fn.importValue('backupPlan');
const backupPlanArn = `arn:aws:backup:${currentStack.region}:${currentStack.account}:backup-plan/${backupPlanId}`;

// 通过ARN导入备份计划并创建选择器
const backupPlan = BackupPlan.fromBackupPlanArn(this, 'imported-backup-plan', backupPlanArn);

new BackupSelection(this, 'table-backup-selection', {
  backupPlan: backupPlan,
  resources: [BackupSelection.dynamoDbTable(myTable)]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:40:11