Terraform AWS Provider 中查询私有证书颁发机构:aws_acmpca_certificate_authority 数据源详解
Terraform AWS Provider 中查询私有证书颁发机构aws_acmpca_certificate_authority 数据源详解【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-awsAWS Provider 通过aws_acmpca_certificate_authority数据源让 Terraform 配置能够读取 AWS Certificate Manager Private Certificate AuthorityACM PCA私有证书颁发机构的完整元信息包括证书内容、证书链、CSR、吊销配置、有效时间与标签。本篇以 官方数据源文档 为核心结合 数据源实现 与验收测试完整讲解其参数、导出属性及底层 API 调用行为帮助你在跨资源引用私有 CA如导入 CA 证书、构建信任链、配置 CRL/OCSP 依赖时写出稳定可复用的 HCL。适用场景典型用法是在一个 Terraform 模块中用aws_acmpca_certificate_authority资源创建私有 CA含根 CA 或子 CA在另一个模块或另一个 Terraform 工作区中仅凭 CA 的 ARN 就需要拿到该 CA 的证书内容、证书链和吊销配置而不必重新导入 CA 证书或手工复制这些值。数据源还支持通过 RAM 共享的 CA 做跨账户读取权限允许时以及读取尚未导入证书的 CA 的基本状态信息。示例用法官方文档给出的最小用法只需传入 CA 的 ARNdata aws_acmpca_certificate_authority example { arn arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012 }仓库验收测试中则展示了更完整的实践先声明 CA 资源再让数据源直接引用资源输出的arn并对所有关键属性做“数据源 vs 资源”的成对一致性校验见 数据源验收测试resource aws_acmpca_certificate_authority test { permanent_deletion_time_in_days 7 certificate_authority_configuration { key_algorithm RSA_4096 signing_algorithm SHA512WITHRSA subject { common_name example.com } } } data aws_acmpca_certificate_authority test { arn aws_acmpca_certificate_authority.test.arn }参数说明该数据源支持以下参数与官方文档 Argument Reference 一致参数是否必填说明arn必填证书颁发机构的 ARN形如arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/uuidregion可选该资源所属的 Region默认继承 provider 配置中的 Region从源码看arn在 dataSourceCertificateAuthority 的 Schema 定义 中为Required字符串region是 Terraform 数据源内置的通用参数由 provider 客户端的 Region 解析机制处理实现代码中并不单独声明。属性说明数据源导出以下属性完整继承官方文档 Attribute Reference并结合实现补充取值细节id- 证书颁发机构的 ARN。源码中直接以入参 ARN 调用d.SetId(certificateAuthorityARN)读取逻辑因此id与arn相同。certificate- Base64 编码的 CA 证书本身。仅在 CA 证书已导入imported后才可用未导入时为空字符串。certificate_chain- Base64 编码的证书链包含所有中间证书并链向你用于签名私有 CA 证书的根证书链中不包含你的私有 CA 证书本身。同样仅在证书导入后可用。certificate_signing_request- 私有 CA 证书的 Base64 PEM 编码 CSR。usage_mode- 说明该 CA 签发的是通常需要吊销机制的通用证书还是可省略吊销的短生命周期证书。key_storage_security_standard- CA 密钥存储端点的安全等级。not_after- CA 证书失效时间RFC 3339 格式。实现中对 API 返回的时间执行aws.ToTime(...).Format(time.RFC3339)格式化代码仅在证书导入后可用。not_before- CA 证书生效时间RFC 3339 格式仅在证书导入后可用。revocation_configuration- 嵌套属性包含吊销配置见下文。serial- CA 证书序列号仅在证书导入后可用。status- CA 状态如ACTIVE、PENDING_CERTIFICATE、FAILED、DELETED等对应 SDK 的types.CertificateAuthorityStatus枚举可从 资源状态等待逻辑 看到状态取值。tags- CA 上用户自定义的键值标签映射。type- CA 类型如ROOT或SUBORDINATE。revocation_configurationcrl_configuration- 证书吊销列表CRL配置见下文。ocsp_configuration- 在线证书状态协议OCSP配置见下文。嵌套结构由 flattenRevocationConfiguration 等函数 从 API 响应扁平化而来当 CA 未配置对应项时相应嵌套列表为空。crl_configurationcustom_cname- 插入证书 CRL 分发点CRL Distribution Points扩展中的名称允许为 CRL 分发点使用别名。custom_path- CRL 在 S3 中的自定义路径。enabled- 布尔值指定是否启用 CRL。expiration_in_days- 证书CRL过期前的天数。s3_bucket_name- 存放 CRL 的 S3 桶名。s3_object_acl- CRL 在 S3 桶中是否公开可读对应 ACL 取值。ocsp_configurationenabled- 布尔值指定是否启用自定义 OCSP 响应器。ocsp_custom_cname- 自定义 OCSP 域名的 CNAME。底层读取流程与容错行为数据源的读取函数 dataSourceCertificateAuthorityRead 依次完成三步 API 调用理解这些行为对排错很有帮助DescribeCertificateAuthority通过 findCertificateAuthority 发起DescribeCertificateAuthority请求。若 API 返回ResourceNotFoundException会转换为retry.NotFoundError最终向 Terraform 呈现为“资源不存在”类错误返回空结果时抛出EmptyResultError。这也是为什么用不存在的 ARN 查询时会得到ResourceNotFoundException或无权限时的AccessDeniedException——验收测试 TestAccACMPCACertificateAuthorityDataSource_basic 的第一个步骤正是断言这一错误正则(AccessDeniedException|ResourceNotFoundException)。GetCertificateAuthorityCertificate获取 CA 证书与证书链。当 CA 处于PENDING_CERTIFICATE状态证书尚未导入时API 会返回InvalidStateException实现中对该错误静默容忍容忍逻辑此时certificate与certificate_chain属性保持为空字符串读取不会失败。GetCertificateAuthorityCsr获取 CSR容错处理更精细switch 分支AccessDeniedException被静默忽略——这是为 RAM 共享的 CA 场景设计的共享权限AWSRAMDefaultPermissionCertificateAuthority不包含acm-pca:GetCertificateAuthorityCsr跨账户读取共享 CA 时不应因 CSR 无权限而整体失败InvalidStateExceptionPENDING_CERTIFICATE状态同样忽略其他错误则作为读取失败上报。也就是说读取一个“存在但尚未导入证书”的 CA数据源会成功返回仅证书相关属性为空读取一个“不存在或无权限”的 ARN 则会以ResourceNotFoundException/AccessDeniedException报错。验收测试覆盖的属性矩阵数据源验收测试验证了它与资源端属性的逐项一致性可作为你引用数据源属性的可靠性依据TestAccACMPCACertificateAuthorityDataSource_basic校验arn、certificate、certificate_chain、certificate_signing_request、key_storage_security_standard、not_before/not_after、revocation_configuration含crl_configuration.enabled、serial、tags、type、usage_mode与资源属性完全一致。TestAccACMPCACertificateAuthorityDataSource_s3ObjectACL额外校验crl_configuration下的custom_cname、expiration_in_days、s3_bucket_name、s3_object_acl。标签测试由生成器产出使用 testdata/CertificateAuthority/data.tags/main_gen.tf 配置校验数据源tags的精确映射要求 Terraform ≥ 1.1.0。小结与注意事项该数据源是只读的它按 ARN 查询 CA 并填充属性不会创建或修改任何 AWS 资源CA 本体应由aws_acmpca_certificate_authority资源管理。依赖“证书已导入”的属性certificate、certificate_chain、serial、not_before、not_after在PENDING_CERTIFICATE状态下会为空字符串而非报错跨模块引用这些属性时建议先确保 CA 证书导入完成例如通过aws_acmpca_certificate_authority_certificate资源或导入流程。RAM 共享 CA 场景下CSR 属性可能因权限缺失而为空属预期行为AccessDeniedException只针对 CSR 调用被静默处理Describe调用仍要求基本的读取权限。错误排查时优先核对 ARN 是否正确区域、账户 ID、CA UUID以及当前凭证是否具备对应 Region 中acm-pca:DescribeCertificateAuthority、acm-pca:GetCertificateAuthorityCertificate、acm-pca:GetCertificateAuthorityCsr权限。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →