Версия 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получает желаемое поведение.

Другие вопросы по тегам