невозможно проанализировать JSON с использованием внешних данных terraform - PullRequest
0 голосов
/ 13 октября 2018

USE CASE

Я хотел предоставить EFS в заданном регионе с экземпляром EC2, а затем смонтировать этот экземпляр с EFS, а если EFSв этом регионе я не могу предоставить альтернативу EFS.

ПРОБЛЕМЫ

  1. Amazon не предлагает EFS услуги в каждомрегион.
  2. Нет способа определить доступность услуги, используя aws-cli.Уже спросил, но еще не получил ответ ссылка

ЧТО Я ПОПРОБОВАЛ

Это тот случай, когда Amazon предоставляет услугу, Если я запускаю эту команду curl -ls https://elasticfilesystem.us-east-1.amazonaws.com, система возвращает следующий вывод.

<MissingAuthenticationTokenException>
  <Message>Missing Authentication Token</Message>
</MissingAuthenticationTokenException>

И если я изменяю регион на eu-west-3 (Париж) и запускаю систему команд, ничего не возвращается.

Итак, это WORKAROUND , который я имею в виду, чтобы проверить доступность сервиса в любом конкретном регионе.Но если я напишу для этого сценарий bash и запусту ту же команду, используя источник данных terraform external, он выдаст сообщение об ошибке unable to parse a JSON error pasring '<'.Я понятия не имею, почему bash-script рассматривает этот возвращенный XML, хотя вместо этого я проверяю exit code.

bash script

function check_efs() {
curl -ls https://elasticfilesystem.us-east-1.amazonsaws.com
if [ $? -eq 0 ]; then
        output=1
else:
        output=0
}

function produce_output() {
value=$(output)

jq -n \
    --arg is_efs_exist "$value" \
    '{"is_efs_exist":$is_efs_exist}'
}

check_efs
produce_output

main.tf

provider external {}

data "external" "this" {
program = ["bash", "${path.module}/scripts/efschecker.sh"]
} 
...