Атрибуты только для записи
Атрибуты только для записи можно использовать только в OpenTofu v1.11 и более поздних версиях.
Этот атрибут встречается только в managed resources, предназначенных для приема временных значений, которые никогда не будут сохранены в состоянии или плане. Например, секрет можно прочитать с помощью эфемерного ресурса, а затем передать в атрибут только для записи password_wo управляемого ресурса.
Жизненный цикл этих атрибутов существенно отличается от жизненного цикла других типов атрибутов:
- Атрибут только для записи существует только в разделе конфигурации ресурса
- Атрибут только для записи всегда будет записан в состояние и план со значением null
- Провайдер всегда будет возвращать null для атрибута только для записи, даже если в конфигурации ему было задано фактическое значение
- Атрибут только для записи может ссылаться на обычные и эфемерные значения (обычные атрибуты не могут ссылаться на эфемерные значения)
Отображение
Если атрибут присутствует в выводе CLI при выполнении команд plan/apply, он всегда будет отображаться как (write-only attribute).
Обновление атрибута только для записи
Поскольку OpenTofu не может узнать, какое значение сейчас задано в удаленном ресурсе (то есть в состоянии указано значение null), и не знает, какое значение было (или будет) сохранено удаленно (то есть провайдер возвращает для этих атрибутов значение null), он не может сформировать изменение для таких атрибутов. Рекомендуется, чтобы авторы провайдеров вместе с атрибутом только для записи добавляли также обычный атрибут, предназначенный для указания провайдеру, что для обновления ресурса следует использовать значение, заданное в конфигурации атрибута только для записи.
Например, ресурс aws_secretsmanager_secret_version предоставляет для этого 2 поля: secret_string_wo — атрибут только для записи, а secret_string_wo_version — обычный атрибут. Если изменить значение secret_string_wo_version по сравнению со значением, сохраненным в состоянии, провайдер запустит обновление атрибута secret_string_wo, используя значение из конфигурации.
Пример
Подробный пример использования атрибутов только для записи см. в этом примере.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/language/ephemerality/write-only-attributes/