USE CASE
Я хотел предоставить EFS
в заданном регионе с экземпляром EC2
, а затем смонтировать этот экземпляр с EFS
, а если EFS
в этом регионе я не могу предоставить альтернативу EFS
.
ПРОБЛЕМЫ
- Amazon не предлагает
EFS
услуги в каждомрегион. - Нет способа определить доступность услуги, используя
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"]
}