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 Registry是Terraform官方的组件仓库,也是获取和使用Terraform资源的主要途径。日志服务相关的Terraform资源通过以下两个核心组件提供:
Provider(提供程序):Terraform的插件,用于与阿里云API进行交互。日志服务的资源由阿里云Provider(
alicloud)提供支持。Module(模块):一组Terraform配置文件的集合,用于封装可复用的基础设施代码。你可以使用Module快速部署常见的日志服务架构。
使用流程
使用Terraform管理日志服务资源的基本流程如下:
安装Terraform
在本地或CI/CD环境中安装Terraform CLI。如果使用Terraform Explorer或Cloud Shell,可以跳过此步骤。
编写配置文件
创建
.tf配置文件(例如main.tf),声明所需的Provider和资源。Terraform使用声明式语法,你只需描述资源的目标状态,Terraform会自动计算达到该状态所需的操作。以下为一个创建日志服务项目(Project)的配置示例:provider "alicloud" { region = "cn-hangzhou" } resource "alicloud_log_project" "example" { project_name = "my-sls-project" description = "日志服务项目示例" }初始化工作目录
运行
terraform init命令。Terraform会读取配置文件,下载指定的Provider插件,并初始化工作目录。预览变更
运行
terraform plan命令。Terraform会对比当前状态与配置文件的差异,生成执行计划(execution plan),展示将要执行的操作(创建、修改或删除),但不会实际执行。执行变更
运行
terraform apply命令。Terraform会根据执行计划,调用Provider的API在阿里云上实际创建或修改资源。
当不再需要通过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"
}参数名 | 说明 | 是否必需 | 默认值 |
| 指定操作的阿里云地域 | 是 | 无 |
| 指定签名版本 | 否 |
|
| 阿里云 Access Key ID | 否 (推荐用环境变量) | 无 |
| 阿里云 Secret Key | 否 (推荐用环境变量) | 无 |
| 临时安全令牌 (STS) | 否 | 无 |
第三步:设置环境变量
为了安全起见,建议不要将密钥写死在代码中,而是通过环境变量传递。
在终端执行(Linux/Mac):
export ALICLOUD_ACCESS_KEY="LTAI5tQZd1Kq2Yzd1J3xxxx"
export ALICLOUD_SECRET_KEY="MOY0d5Zxxxxxx"
export ALICLOUD_REGION="cn-beijing"第四步:运行 Terraform
配置完成后,按照标准的 init -> plan -> apply 流程执行。