Версия 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. Теперь я знаю, что это локальные пути, но меня смущает то, что когда я запускаю что-то вроде go get, он идет и вытаскивает их для меня. Я пытался сделать:

"github.com/hashicorp/terraform-plugin-sdk/v2.4.4/helper/schema"

но go get это очень не нравится. Как go get находит эти версии пакетов? Есть ли синтаксис импорта, который просто дает мне последнюю сборку или обеспечивает большую степень детализации? Я не нашел хорошего способа узнать, какая у меня версия SDK после запуска go get, но на основе этого сообщения об ошибке:

Ошибка

похоже, что у меня 2.0, потому что эта ошибка, как я понимаю, исправлена ​​​​в более новых версиях SDK.


person Grant Curell    schedule 07.03.2021    source источник


Ответы (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 приводит к желаемому поведению.

person Grant Curell    schedule 08.03.2021
comment
Суффиксы основных версий описаны в документации любого модуля, golang.org/ref/mod# суффиксы основной версии - person JimB; 08.03.2021
comment
Спасибо! Я обновил ответ, чтобы отразить это. - person Grant Curell; 08.03.2021