ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Terraform AWS Provider 数据源 aws_quicksight_user:查询 Amazon QuickSight 用户信息

2026/9/19 16:30:35 拓冰建站 浏览量
Terraform AWS Provider 数据源 aws_quicksight_user:查询 Amazon QuickSight 用户信息 Terraform AWS Provider 数据源 aws_quicksight_user查询 Amazon QuickSight 用户信息【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本指南围绕 Terraform AWS Provider 的aws_quicksight_user数据源展开说明如何在配置中按用户名、命名空间与账号维度检索 Amazon QuickSight 用户并将其 ARN、邮箱、角色、身份类型等属性直接注入到其他资源或输出中从而避免硬编码 ARN 或唯一 ID。读完本文你将掌握该数据源的全部参数、导出属性、底层实现原理DescribeUser 调用链以及与之配套的aws_quicksight_user资源的最佳实践。数据源概述aws_quicksight_user是 Terraform AWS Provider 中用于读取而非管理Amazon QuickSight 用户信息的数据源。它位于 QuickSight 服务分类下核心价值在于通过用户名等声明式属性引用用户无需在配置中硬编码 ARN 或唯一 ID读取到的属性邮箱、角色、身份类型等可以被其他 Terraform 资源、数据源引用或在outputs.tf中对外输出与aws_quicksight_user资源internal/service/quicksight/user.go共享同一套 API 读取逻辑保证数据一致。该数据源的完整实现位于 internal/service/quicksight/user_data_source.go其 Schema 定义了 10 个字段其中user_name为必填其余均是可计算或可选字段。基本用法最简单的配置只需要指定用户名其余参数均使用默认值data aws_quicksight_user example { user_name example }执行terraform plan时Provider 会调用 QuickSight 的DescribeUserAPI 读取该用户信息随后可在其他位置引用output user_arn { value data.aws_quicksight_user.example.arn } output user_role { value data.aws_quicksight_user.example.user_role }与资源配套的完整示例数据源更常见的用法是配合aws_quicksight_user资源一起使用。参考仓库中的验收测试 internal/service/quicksight/user_data_source_test.go标准写法如下resource aws_quicksight_user test { user_name example email userexample.com identity_type QUICKSIGHT user_role READER } data aws_quicksight_user test { user_name aws_quicksight_user.test.user_name }测试通过resource.TestCheckResourceAttrPair断言数据源的user_name、arn与资源保持一致并验证了custom_permissions_name空字符串、email、namespace默认default、identity_typeQUICKSIGHT、principal_id、user_roleREADER等属性这些正是数据源对外暴露的字段集合。参数Argument Reference必填参数参数说明user_name要匹配的 QuickSight 用户名字符串。这是数据源定位用户的唯一必填维度对应DescribeUserAPI 的UserName参数。可选参数参数默认值说明aws_account_idTerraform AWS Provider 自动确定的账号 ID目标 AWS 账号 ID。若省略则使用当前 Provider 会话的账号。对应DescribeUser的AwsAccountId参数。namespacedefaultQuickSight 命名空间。非默认命名空间如_namespace自定义空间需在此显式指定。regionProvider 配置中设置的 Region数据源请求发送的目标区域。QuickSight 是区域性服务跨区域查询需显式指定。默认值与校验规则源码依据上述默认行为并非文档约定而是实现在源码中的命名空间默认值在 internal/service/quicksight/schema/stdattributes.go 中定义了常量DefaultNamespace default数据源与资源的 Namespace 字段均以该常量作为Default命名空间格式校验同一文件中的namespaceRegex()规定命名空间只能由字母、数字、连字符、下划线和点号组成正则^[0-9A-Za-z_.-]*$长度限制为 164 个字符账号 ID 校验aws_account_id通过verify.ValidAccountID校验schema/stdattributes.go确保是合法的 12 位 AWS 账号格式。导出属性Attribute Reference除上述参数本身可读回外该数据源还导出以下属性属性类型含义active布尔用户的激活状态。若用户不是 IAM 用户或 Active Directory 用户即 QuickSight 本地身份创建后处于未激活状态直到首次登录并设置密码才变为激活。arn字符串用户的 ARN格式形如arn:aws:quicksight:region:account-id:user/namespace/user-name。custom_permissions_name字符串与该用户关联的自定义权限配置Custom Permissions Profile名称未配置时为空字符串。email字符串用户的邮箱地址。identity_type字符串用户的身份认证类型常见取值为QUICKSIGHTQuickSight 本地身份、IAMIAM 用户或IAM_IDENTITY_CENTER。principal_id字符串用户的主体 IDQuickSight 内部用于标识该用户的唯一值。user_role字符串用户在 Amazon QuickSight 中的角色取值如下。user_role 可选值详解READER只读访问仪表盘dashboard的用户可查看但不具备数据创作能力AUTHOR可以创建数据源data source、数据集dataset、分析analysis与仪表盘的用户ADMIN具备 AUTHOR 全部能力并可管理 Amazon QuickSight 账号设置的用户。在源码中user_role字段是Computed: true的计算属性user_data_source.go读取值来自DescribeUser返回的User.Role。而配套资源的user_role参数则通过enum.Validate[awstypes.UserRole]()进行枚举校验internal/service/quicksight/user.go非法角色会在计划阶段直接报错。底层实现原理DescribeUser 读取链路数据源的读取逻辑全部集中在 user_data_source.go 的dataSourceUserRead函数中其核心流程如下构造客户端通过meta.(*conns.AWSClient).QuickSightClient(ctx)获取 QuickSight SDK v2 客户端确定账号 ID优先取配置中的aws_account_id否则回退到 Provider 会话账号meta.(*conns.AWSClient).AccountID(ctx)读取命名空间与用户名从配置中取出namespace与user_name生成唯一 ID调用userCreateResourceID(awsAccountID, namespace, userName)将三者以/拼接即 ID 格式为AWS_ACCOUNT_ID/NAMESPACE/USER_NAMEinternal/service/quicksight/user.go该 ID 同时被写入 Terraform 状态调用 AWS APIfindUserByThreePartKey构造quicksight.DescribeUserInput并调用DescribeUserinternal/service/quicksight/user.go异常处理findUser中将ResourceNotFoundException转换为retry.NotFoundError空响应转换为tfresource.NewEmptyResultError()其余错误向上传递internal/service/quicksight/user.go回写状态将User.Active、User.Arn、User.CustomPermissionsName、User.Email、User.IdentityType、User.PrincipalId、User.UserName、User.Role逐一写入 State。一个细节active 属性的含义文档特别指出active为false通常发生在 QuickSight 本地身份identity_type QUICKSIGHT场景下——这类用户由aws_quicksight_user资源创建后需要用户通过邀请链接资源中的user_invitation_url属性首次登录激活。若你的自动化流程依赖用户处于激活状态可在创建后结合该属性判断是否需要人工介入。实战跨账号 / 跨命名空间查询当用户不在默认命名空间、或需要查询其他账号下的用户时需显式指定参数data aws_quicksight_user prod_reader { user_name analystexample.com aws_account_id 123456789012 namespace production region us-east-1 }注意region应与用户所在 QuickSight 区域一致否则将触发区域不匹配错误跨账号查询要求运行 Terraform 的凭证具备对目标账号调用quicksight:DescribeUser的权限若查询的用户不存在数据源会报错reading QuickSight User (...) ...该错误信息直接来自 user_data_source.go 的错误封装便于在日志中定位。权限要求使用该数据源需要 IAM 权限quicksight:DescribeUser。最小权限策略示例{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: quicksight:DescribeUser, Resource: * } ] }如需更精细的授权可将 Resource 限定为arn:aws:quicksight:region:account-id:user/*。延伸阅读数据源实现internal/service/quicksight/user_data_source.go资源实现与 API 封装internal/service/quicksight/user.go命名空间 / 账号 ID 默认值与校验internal/service/quicksight/schema/stdattributes.go数据源验收测试含完整资源配套写法internal/service/quicksight/user_data_source_test.go资源验收测试覆盖激活、命名空间、IAM 身份等场景internal/service/quicksight/user_test.go若需管理而非查询用户创建、更新、删除请直接使用aws_quicksight_user资源其与本文数据源共享同一套读取函数二者配合可构建完整的 QuickSight 用户生命周期管理方案。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考