Terraform概览

更新时间:
复制为 MD 格式

Terraform是一款开源的基础设施即代码(Infrastructure as Code,IaC)工具,支持通过声明式配置文件定义和管理云资源。日志服务已接入Terraform,你可以使用Terraform自动化创建和管理项目(Project)、日志库(LogStore)、告警规则、采集配置等资源。

前提条件

  • 开通日志服务

  • 已准备Terraform运行环境。可以选择以下任一方式:

    • Terraform Explorer中使用Terraform:阿里云提供的Terraform在线运行环境,无需安装即可在线使用和体验Terraform。适用于零成本、快速体验和调试Terraform的场景。

    • Cloud Shell中使用Terraform:阿里云Cloud Shell中预装了Terraform组件,并已配置好身份凭证,可直接运行Terraform命令。适用于低成本、快速访问和使用Terraform的场景。

    • 在本地安装和配置Terraform:适用于网络连接较差或需要自定义开发环境的场景。

Terraform Registry

Terraform RegistryTerraform官方的组件仓库,也是获取和使用Terraform资源的主要途径。日志服务相关的Terraform资源通过以下两个核心组件提供:

  • Provider(提供程序):Terraform的插件,用于与阿里云API进行交互。日志服务的资源由阿里云Provider(alicloud)提供支持。

  • Module(模块):一组Terraform配置文件的集合,用于封装可复用的基础设施代码。你可以使用Module快速部署常见的日志服务架构。

使用流程

使用Terraform管理日志服务资源的基本流程如下:

  1. 安装Terraform

    在本地或CI/CD环境中安装Terraform CLI。如果使用Terraform ExplorerCloud Shell,可以跳过此步骤。

  2. 编写配置文件

    创建.tf配置文件(例如main.tf),声明所需的Provider和资源。Terraform使用声明式语法,你只需描述资源的目标状态,Terraform会自动计算达到该状态所需的操作。以下为一个创建日志服务项目(Project)的配置示例:

    provider "alicloud" {
      region = "cn-hangzhou"
    }
    
    resource "alicloud_log_project" "example" {
      project_name = "my-sls-project"
      description  = "日志服务项目示例"
    }
  3. 初始化工作目录

    运行terraform init命令。Terraform会读取配置文件,下载指定的Provider插件,并初始化工作目录。

  4. 预览变更

    运行terraform plan命令。Terraform会对比当前状态与配置文件的差异,生成执行计划(execution plan),展示将要执行的操作(创建、修改或删除),但不会实际执行。

  5. 执行变更

    运行terraform apply命令。Terraform会根据执行计划,调用ProviderAPI在阿里云上实际创建或修改资源。

说明

当不再需要通过Terraform创建的资源时,可以运行terraform destroy命令释放资源。

阿里云 Provider 与 V4 签名使用方法

阿里云 Terraform Provider 支持使用 V4 签名(Signature Version 4)进行身份验证。V4 签名相比 V1 提供了更严格的请求验证机制,增强了安全性。

说明:阿里云某些新开服的地域(Region)可能仅支持 V4 签名。

配置步骤:

第一步:准备凭证 (Credentials)
你需要获取阿里云的 Access Key ID 和 Access Key Secret。建议在阿里云 RAM (资源访问管理) 中创建具有最小权限的子账号 AccessKey。

第二步:配置 Provider
在你的 Terraform 配置文件(如 provider.tf)中,指定 alicloud Provider 并设置 sign_version 参数(说明:不配置sign_version时,sign_version默认为v1签名)。

provider "alicloud" {
  # 指定区域
  region = "cn-beijing"

  # 启用 V4 签名
  sign_version {
    sls = "v4"
  }

  # 配置认证信息(推荐通过环境变量 ALICLOUD_ACCESS_KEY 设置,而非硬编码)
  # access_key = "your-access-key-id"
  # secret_key = "your-secret-access-key"
}

参数名

说明

是否必需

默认值

region

指定操作的阿里云地域

sign_version

指定签名版本

{ sls = "v1"} (设为 v4 即启用 V4)

access_key

阿里云 Access Key ID

否 (推荐用环境变量)

secret_key

阿里云 Secret Key

否 (推荐用环境变量)

security_token

临时安全令牌 (STS)

第三步:设置环境变量
为了安全起见,建议不要将密钥写死在代码中,而是通过环境变量传递。

在终端执行(Linux/Mac):

export ALICLOUD_ACCESS_KEY="LTAI5tQZd1Kq2Yzd1J3xxxx"
export ALICLOUD_SECRET_KEY="MOY0d5Zxxxxxx"
export ALICLOUD_REGION="cn-beijing"

第四步:运行 Terraform
配置完成后,按照标准的 init -> plan -> apply 流程执行。