Версия SDK, указанная поставщиком Terraform для извлечения / Невозможно использовать схему типа validation.StringInSlice.SchemaValidateFunc as type SchemaValidateDiagFunc
Из-за этой проблемы провайдеры должны получить текущую версию SDK (2.4.4 на момент публикации). В этом посте много информации о том, как импортировать конкретную версию пакета, но, конечно же, каждый автор провайдера вручную не загружает самую последнюю версию SDK (или они)?
Я новичок в Go/Terraform, поэтому, возможно, я упускаю что-то очевидное, но у поставщиков, которых я нашел (включая официальный пример), есть что-то вроде:
import(
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)
Текущая версия не 2 - это
2.4.4
. Теперь я знаю, что это локальные пути, но меня смущает, когда я запускаю что-то вроде этого и вытаскиваю их для себя. Я пытался сделать:
"github.com/hashicorp/terraform-plugin-sdk/v2.4.4/helper/schema"
но очень не нравится. Как найти эти версии пакетов? Есть ли синтаксис импорта, который просто дает мне последнюю сборку или обеспечивает большую степень детализации? Я не нашел хорошего способа узнать, какая у меня версия SDK после запуска
go get
но на основе этого сообщения об ошибке:
похоже, что у меня 2.0, потому что эта ошибка, как я понимаю, исправлена в более новых версиях SDK.
1 ответ
Я понял. Поведение управляется файлом go.mod .
Там вы найдете:
require (
github.com/hashicorp/terraform-plugin-sdk v1.14.0 // indirect
github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.1
Как упоминал @JimB, v2 является основной версией плагина.
v2.0.1
являются тегами GitHub. Изменение этого на
v2.4.4
получает желаемое поведение.