Мне нужно проверить список aws_vpc_endpoint_service_allowed_principal из определенного aws_vpc_endpoint_service.
Источник данных aws_vpc_endpoint_service не возвращает список allowed_principals.
Кто-нибудь знает, как я могу получить эту информацию?
У нас есть служба endpoint_service с Allow_Principals для нескольких разных учетных записей. В основном мне нужно проверить, разрешена ли текущая учетная запись или нет, и продолжить эту информацию.
Продолжить куда? Вам это нужно как выход? Поскольку вы упоминаете источник данных, он вам нужен в другом модуле? Другой аккаунт?
Если уже был создан allow_principal (вручную), terraform ничего не сделает. Если он не был добавлен, он добавит его.
Извините, не хватает контекста. Без примера кода в вопросе очень сложно сказать, чего вы хотите достичь.





Поскольку источник данных для этого ресурса не существует, вы можете использовать внешний источник данных со специальным скриптом для запроса необходимой информации.
Вот пример скрипта (get_vpc_endpoint_service_permissions.sh), который извлекает необходимую информацию:
#!/bin/bash
sep=$(aws ec2 describe-vpc-endpoint-service-permissions --service-id vpce-svc-03d5ebb7d9579a2b3 --query 'AllowedPrincipals')
jq -n --arg sep "$sep" '{"sep":$sep}'
и вот как вы его потребляете в terraform:
data "external" "vpc_endpoint_service_permissions" {
program = ["bash", "get_vpc_endpoint_service_permissions.sh"]
}
output "vpc_endpoint_service_permissions" {
value = data.external.vpc_endpoint_service_permissions.result.sep
}
data.external.vpc_endpoint_service_permissions.result.sep содержит вывод скрипта bash, который представляет собой массив JSON, к которому вы можете обращаться/манипулировать по мере необходимости.
Спасибо! это действительно хорошая идея. Раньше я не использовал внешние источники данных.
@ Лео Не за что. Я использую их всякий раз, когда мне нужно запросить что-то, что не поддерживается определенным источником данных, или когда источник данных вообще не существует.
Помимо очевидного указания ссылки на атрибут ресурса, я предполагаю, что это нужно где-то еще? Если бы вы могли привести пример кода, который у вас есть, и сказать, где и как вы планируете его использовать, возможно, вы найдете способ ответить.