Curlがbash変数を受け取らず、jqエラーで終了しました。

Curlがbash変数を受け取らず、jqエラーで終了しました。

bashスクリプトでカールリクエストにbash変数を渡したいです。

#!/bin/sh
#request sshkey from do rebrain account
do_token=`echo "var.do-token" | terraform -chdir=/input console -var-file terraform.auto.tfvars`
echo $do_token
curl -X GET -s -H "Authorization: Bearer $do_token" -d '{ "job_run": {} }' "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'

echo $do_token 次のように適切なトークンを引用符で囲んで返します "token"。しかし、エラーが発生します"jq: error (at <stdin>:0): Cannot iterate over null (null)"

それからそれをmain.tfに渡します。

data "external" "fetchssh" {
  program = ["bash", "${path.module}/get_sshkey.sh"]
  query = {
    do_token = var.do-token
  }
}

Terraformでdata.external.fetchssh変数を使用する

エラーを防ぐにはどうすればよいですか?

ベストアンサー1

これは有効な "${do_token//"}" なので、渡すとcurl -X GET -s -H "Authorization: Bearer ${do_token//\"}" "https://api.digitalocean.com/v2/account/keys?page=1" | jq -r --arg queryname "User's key" '.ssh_keys[] | select(.name == $queryname).public_key'SSH キーが返されます。

おすすめ記事