ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

terraform-provider-aws 数据源指南:aws_backup_plan 备份计划查询详解

terraform-provider-aws 数据源指南:aws_backup_plan 备份计划查询详解 terraform-provider-aws 数据源指南aws_backup_plan 备份计划查询详解【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws导读aws_backup_plan是 terraform-provider-aws 中用于读取而非创建现有 AWS Backup 备份计划的数据源。在需要将已有的 AWS Backup 计划接入 Terraform 状态、实现跨模块引用、或在配置中动态引用计划 ARN、版本号与规则详情时它是把存量云资源与基础设施即代码衔接起来的关键工具。读完本文你将掌握aws_backup_plan的完整参数与导出属性、plan_id的获取方式、region覆盖机制以及它与aws_backup_plan资源website/docs/r/backup_plan.html.markdown之间的关联与配合用法。数据源概览与适用场景数据源Data Source在 Terraform 中只读地查询云上已有资源不产生任何创建、更新或删除动作。aws_backup_plan数据源对应 AWS Backup 服务中的备份计划Backup Plan其核心用途是获取已有备份计划的 ARN、显示名称、版本 ID供 IAM 策略、告警、其他资源配置引用读取计划内的规则rule、扫描设置scan_setting与标签tags用于审计、可视化或生成衍生配置在拆分模块或迁移存量架构时把 AWS 控制台/CLI 中手工创建的备份计划纳入 Terraform 的引用体系。从源码结构看该数据源位于 internal/service/backup/plan_data_source.go通过SDKDataSource(aws_backup_plan, namePlan)注册属于 AWS Provider 的 Backup 子服务subcategory: Backup。数据源的读取逻辑使用 SDK v2 的ReadWithoutTimeout模式无超时写操作与纯查询定位一致。基本用法文档给出的最小可用配置如下data aws_backup_plan example { plan_id tf_example_backup_plan_id }plan_id是唯一必填参数值为备份计划的 ID。备份计划 ID 是一个字符串形式的唯一标识例如1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d通常可通过以下途径获得aws_backup_plan.name.id当备份计划由同仓库的aws_backup_plan资源创建时直接引用AWS CLI 的aws backup list-backup-plans/aws backup get-backup-plan输出AWS 控制台备份计划详情页 URL 中携带的 ID。更贴近真实项目的推荐写法是与资源配套使用直接引用资源的id而无需硬编码resource aws_backup_vault test { name tf_acc_test_backup_vault_example } resource aws_backup_plan test { name tf_acc_test_backup_plan_example rule { rule_name tf_acc_test_backup_rule_example target_vault_name aws_backup_vault.test.name schedule cron(0 12 * * ? *) } tags { Name Value1 Key2 Value2b Key3 Value3 } } data aws_backup_plan test { plan_id aws_backup_plan.test.id }这段配置与仓库中数据源接受测试 internal/service/backup/plan_data_source_test.go 的testAccPlanDataSourceConfig_basic完全一致先创建备份库aws_backup_vault与备份计划aws_backup_plan再通过aws_backup_plan.test.id驱动数据源从而确保plan_id永远有效。测试还通过TestCheckResourceAttrPair逐一断言数据源导出的name、arn、version、tags、rule、scan_setting与资源本身完全一致验证了数据源的读取正确性。参数Argument Referenceaws_backup_plan数据源支持以下参数参数类型必填说明plan_idstring是要查询的备份计划 ID。regionstring否管理该资源的区域默认使用 provider 配置中设置的区域。region 参数说明region是可选参数用于指定读取备份计划所在的 AWS 区域。当备份计划与当前 Provider 默认区域不同或需要在多区域场景下动态切换查询目标时可在数据源块内单独覆盖例如data aws_backup_plan example { plan_id 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d region eu-west-1 }该参数不参与数据源 Schema 的强制校验而是作为 Provider 层面对 API 调用区域的分发依据从源码结构看region属于 Provider 通用的区域管理机制docs/enhanced-region-support.md被多个资源与数据源共享。仓库中还提供了区域覆盖的测试样例 internal/service/backup/testdata/Plan/region_override/main_gen.tf可以看到region与name一样以var.region形式注入资源验证了跨区域部署时该参数的实际作用。导出属性Attribute Reference除参数本身外数据源还会导出以下属性可直接通过data.aws_backup_plan.example.arn等方式引用属性类型说明arnstring备份计划的 ARN。namestring备份计划的显示名称。ruleset备份计划的规则集合每个规则包含调度、生命周期、复制动作等详细信息详见下节。scan_settingset备份规则的扫描配置包含恶意软件扫描器与扫描资源类型。tagsmap用于组织备份计划的元数据标签。versionstring备份计划的版本 ID为随机生成的 Unicode UTF-8 编码字符串。rule 的嵌套导出结构rule是嵌套类型每个元素包含以下子属性与资源侧 website/docs/r/backup_plan.html.markdown 的rule结构对应rule_name— 规则显示名称target_vault_name— 备份存储的目标备份库名称schedule— 触发备份任务的 CRON 表达式schedule_expression_timezone— 调度表达式所在时区资源侧默认Etc/UTCstart_window— 开始备份前的宽限分钟数资源侧默认 60completion_window— AWS Backup 尝试完成备份的最长分钟数超时取消任务并报错资源侧默认 180enable_continuous_backup— 是否为受支持的资源启用连续备份recovery_point_tags— 附加到恢复点的标签lifecycle— 生命周期配置包含cold_storage_after— 恢复点创建多少天后转入冷存储delete_after— 恢复点创建多少天后删除opt_in_to_archive_for_supported_resources— 是否将受支持资源转入归档冷存储层级copy_action— 复制动作集合包含destination_vault_arn— 副本目标备份库的 ARNlifecycle— 与上述相同的生命周期嵌套结构scan_action— 规则级扫描动作包含malware_scanner— 使用的恶意软件扫描器当前仅支持GUARDDUTYscan_mode— 扫描模式可取FULL_SCAN或INCREMENTAL_SCANtarget_logically_air_gapped_backup_vault_arn— 逻辑气隙备份库 ARN须与备份计划同账号同区域。scan_setting 的嵌套导出结构scan_setting同样为嵌套集合包含malware_scanner— 扫描设置使用的恶意软件扫描器当前仅支持GUARDDUTYresource_types— 应用扫描设置string 集合可取EBS、EC2、S3、ALLscanner_role_arn— AWS Backup 执行资源扫描所用 IAM 角色的 ARN。源码级实现原理数据源的读取流程可以拆解为三步全部集中在 internal/service/backup/plan_data_source.go构造读取函数dataSourcePlanRead通过meta.(*conns.AWSClient).BackupClient(ctx)获取 AWS Backup 客户端SDK v2并从plan_id参数取得目标 ID调用查找逻辑findPlanByID封装了backup.GetBackupPlanAPI见 internal/service/backup/plan.go当 API 返回ResourceNotFoundException时归一化为retry.NotFoundError当响应为空output nil || output.BackupPlan nil时返回tfresource.NewEmptyResultError()——这意味着若数据源指向不存在的计划读取会明确失败并报错reading Backup Plan (id): ...而不是静默返回空结果回填状态将 API 响应中的BackupPlanId设为数据源 ID并通过flattenBackupRules、flattenScanSettings等扁平化函数plan.go把 AWS 侧的BackupRule、ScanSetting、CopyAction、Lifecycle、ScanAction结构逐字段映射到 Terraform Schema最终写入arn、name、rule、scan_setting、version等属性。值得注意的实现细节规则与扫描设置等嵌套结构在数据源侧全部声明为Computed: true只读与资源侧plan.go 中大量OptionalDefault的可写结构形成清晰对比同时recovery_point_tags使用tftags.TagsSchema()tags使用tftags.TagsSchemaComputed()并通过Tags(identifierAttributearn)标注以 ARN 为标签标识这与资源侧tags/tags_all的划分逻辑一致。与其他备份资源的配合数据源通常与以下仓库内资源搭配使用形成完整的备份编排aws_backup_plan 资源用于创建/更新/删除备份计划是数据源最常见的上游来源提供id、arn、versionaws_backup_vault备份库rule.target_vault_name与copy_action.destination_vault_arn均指向它aws_backup_selection相关资源将需要备份的 AWS 资源与备份计划关联起来。一个典型的引用示例data aws_backup_plan existing { plan_id 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d } # 将已有备份计划的 ARN 写入 SSM 参数供其他系统消费 resource aws_ssm_parameter backup_plan_arn { name /backup/plan-arn type String value data.aws_backup_plan.existing.arn }使用注意与限制只读语义数据源不会创建备份计划若plan_id指向的计划不存在读取会直接报错而非返回空数据多区域默认使用 Provider 区域跨区域查询务必显式声明region属性一致性数据源导出的rule、scan_setting等为集合类型引用子属性时需要使用展开表达式如data.aws_backup_plan.example.rule[*].rule_name或配合for表达式提取标签读取数据源只导出tags计划自身标签而资源侧额外的tags_all含 Providerdefault_tags继承是资源专属属性数据源场景下以tags为准。参考资源数据源文档website/docs/d/backup_plan.html.markdown资源文档website/docs/r/backup_plan.html.markdown数据源实现internal/service/backup/plan_data_source.go底层查找与扁平化逻辑internal/service/backup/plan.go数据源接受测试internal/service/backup/plan_data_source_test.go区域覆盖测试模板internal/service/backup/testdata/Plan/region_override/main_gen.tf区域管理机制说明docs/enhanced-region-support.md【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表