Terraform AWS Provider 数据源 `aws_iam_outbound_web_identity_federation` 完整使用指南
Terraform AWS Provider 数据源aws_iam_outbound_web_identity_federation完整使用指南【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-awsaws_iam_outbound_web_identity_federation是 Terraform AWS Provider 中 IAMIdentity Access Management服务提供的数据源Data Source用于检索当前 AWS 账户的 Outbound Web Identity Federation出站 Web 身份联合配置信息。该功能是账户级的单例能力每个 AWS 账户只能存在一份配置启用后 AWS 会为你的账户分配一个唯一的 OpenID ConnectOIDCIssuer URL用于承载 OIDC discovery endpoints。读完本文你将掌握该数据源的使用方法、导出属性、底层实现原理以及它与同名管理资源配合使用的完整实战方案。数据源定位账户级单例的只读查询入口Outbound Web Identity Federation 是 IAM 在账户维度提供的出站信任能力它允许你的 AWS 账户对外发布一个 OIDC Issuer让外部依赖方relying party通过该 Issuer 的 discovery 文档来信任并验证来自你账户的身份令牌。由于这一能力在账户内唯一Terraform Provider 将其建模为单例Singleton资源——在源码注解中通过SingletonIdentity标识见 internal/service/iam/outbound_web_identity_federation.go即账户内只允许存在一个实例因此本数据源同样不接受任何标识参数直接返回当前账户的联合配置信息。与通常按名称或 ID 检索的数据源不同本数据源的使用前提是账户已经启用了 Outbound Web Identity Federation。若账户尚未启用该功能底层查询会抛出FeatureDisabledExceptionProvider 会将其转换为资源不存在NotFound语义处理详见下文底层实现原理一节。基础用法零参数的账户级查询由于是单例数据源配置极其简洁无需指定任何参数data aws_iam_outbound_web_identity_federation example {}执行terraform plan/terraform apply后即可通过data.aws_iam_outbound_web_identity_federation.example.issuer_identifier引用账户专属的 Issuer URL。值得说明的是官方文档示例与仓库中的验收测试配置完全一致测试数据源时先创建同名的管理资源确保账户已启用该功能再读取数据源并用depends_on保证执行顺序见 internal/service/iam/outbound_web_identity_federation_data_source_test.goresource aws_iam_outbound_web_identity_federation test {} data aws_iam_outbound_web_identity_federation test { depends_on [aws_iam_outbound_web_identity_federation.test] }这是推荐的生产实践用资源声明启用该能力用数据源读取并消费系统分配的身份标识。参数参考Argument Reference本数据源不支持任何参数。这与单例模型的语义一致——无需提供名称、ID、ARN 或过滤器因为账户内只有唯一一份配置。若账户未启用该功能数据源的Read操作会因底层 API 返回FeatureDisabledException而报错报告中会包含 reading IAM Outbound Web Identity Federation 的诊断信息参见 internal/service/iam/outbound_web_identity_federation_data_source.go。因此在实际配置中务必先通过下文所述的管理资源确保功能已启用。属性参考Attribute Reference除参数外数据源导出以下属性属性类型说明issuer_identifierString你的 AWS 账户专属的 Issuer URL用于承载 OpenID ConnectOIDCdiscovery endpoints该属性在数据源的 Schema 中被声明为Computed: true计算属性由 Provider 在读取时填充见 internal/service/iam/outbound_web_identity_federation_data_source.go。在资源侧issuer_identifier同样由系统生成创建启用时从EnableOutboundWebIdentityFederationAPI 响应中读取并写入状态。一个典型的下游消费场景是将该 Issuer URL 输出为模块输出值供其他配置如外部依赖方应用的 OIDC 配置引用data aws_iam_outbound_web_identity_federation example {} output iam_oidc_issuer { value data.aws_iam_outbound_web_identity_federation.example.issuer_identifier }底层实现原理从数据源到 AWS API 的调用链数据源的实现基于 Terraform Plugin Frameworkterraform-plugin-framework通过注解FrameworkDataSource声明注册源码见 internal/service/iam/outbound_web_identity_federation_data_source.go。其核心结构如下Schema 定义仅声明issuer_identifier一个Computed字符串属性数据模型outboundWebIdentityFederationDataSourceModel结构体通过tfsdk:issuer_identifier标签与 Schema 属性绑定Read 实现调用共享的查找函数findOutboundWebIdentityFederation将 AWS SDK for Go v2 返回的IssuerIdentifier转换为 Framework 类型后写入 State。实际的数据读取发生在共享查找函数中见 internal/service/iam/outbound_web_identity_federation.go调用链为Read (数据源/资源) └── findOutboundWebIdentityFederation(ctx, conn) └── iam.GetOutboundWebIdentityFederationInfo (AWS SDK for Go v2) └── 返回 GetOutboundWebIdentityFederationInfoOutput.IssuerIdentifier值得注意的错误处理细节当账户未启用该功能时AWS API 会返回FeatureDisabledException。Provider 将该异常显式转换为retry.NotFoundError资源不存在错误空响应则转换为tfresource.NewEmptyResultError。这意味着在未启用场景下数据源与资源对缺失状态的处理是统一的便于上层依赖retry.NotFound语义进行判断。与同名管理资源配套使用虽然本文主题是数据源但 Outbound Web Identity Federation 在 Provider 中同时提供管理资源aws_iam_outbound_web_identity_federation二者共享底层findOutboundWebIdentityFederation查找逻辑文档见 website/docs/r/iam_outbound_web_identity_federation.html.markdown。理解资源行为有助于正确使用数据源创建即启用创建资源时调用EnableOutboundWebIdentityFederationAPI 启用账户级能力并记录系统返回的issuer_identifier见 internal/service/iam/outbound_web_identity_federation.go删除即禁用删除资源时调用DisableOutboundWebIdentityFederationAPI且FeatureDisabledException会被静默吞掉视为已禁用幂等删除见同文件 L106-L118不支持任何配置参数资源同样没有可配置的入参所有属性均由 AWS 系统分配导入方式该资源支持以 AWS 账户 ID 作为导入标识terraform import aws_iam_outbound_web_identity_federation.example 123456789012在 Terraform v1.12.0 及以上版本还可通过identity { account_id ... }语法导入。由于该能力是账户级单例数据源读取到的issuer_identifier与资源管理的是同一份配置——仓库的验收测试对此有直接验证数据源测试通过CompareValuePairs断言数据源的issuer_identifier与资源的issuer_identifier取值完全一致见 internal/service/iam/outbound_web_identity_federation_data_source_test.go。实际场景示例启用并导出账户级 OIDC Issuer将上述知识组合成一个端到端的实战配置先声明资源启用能力再用数据源读取 Issuer 并输出同时记录到本地文件供下游使用# 1. 启用 IAM Outbound Web Identity Federation账户级单例 resource aws_iam_outbound_web_identity_federation this {} # 2. 读取当前账户的 Outbound Web Identity Federation 配置 data aws_iam_outbound_web_identity_federation this { depends_on [aws_iam_outbound_web_identity_federation.this] } # 3. 输出账户专属 Issuer URL output outbound_oidc_issuer { value data.aws_iam_outbound_web_identity_federation.this.issuer_identifier } # 4. 写入本地文件供外部依赖方获取 discovery 地址 resource local_file issuer { filename issuer.txt content data.aws_iam_outbound_web_identity_federation.this.issuer_identifier }运行terraform apply后terraform output outbound_oidc_issuer即可展示账户专属的 OIDC Issuer URL其/.well-known/openid-configurationdiscovery 端点由 AWS 托管。常见问题与注意事项必须先启用才能查询若账户从未启用该能力数据源查询会因FeatureDisabledException失败。请确保数据源依赖depends_on管理资源或确认账户已在 AWS 控制台启用该功能。账户级单例该功能在整个 AWS 账户全局范围内唯一不区分区域。声明第二个同名资源或数据源不会产生多份配置Provider 通过SingletonIdentity注解建模这一约束相关设计说明可参考 docs/resource-identity.md。属性全部为计算值issuer_identifier由 AWS 系统生成不可在配置中手动指定也不可通过配置覆盖。删除资源即关闭能力删除aws_iam_outbound_web_identity_federation资源会禁用整个账户的 Outbound Web Identity Federation任何依赖该 Issuer 的外部系统将受影响请谨慎操作。测试覆盖充分Provider 仓库为数据源与资源提供了完整的验收测试基础场景、消失场景、导入场景、identity 场景分布在 internal/service/iam/outbound_web_identity_federation_test.go 与 internal/service/iam/outbound_web_identity_federation_identity_gen_test.go可作为理解行为边界的参考。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考