AWS AmplifyのFunctionsでバッチ処理を実装していたところ、Lambda実行時に以下のエラーが発生しました。
TypeError: "Only absolute URLs are supported"
URLが絶対パスになっていないから怒られているようです。urlをハードコードしろということ??
原因を探ってみると、ソースコード上に記載の環境変数がLambdaコンソールに設定した環境変数と異なっていたことが分かりました。
const { GraphQLClient, gql } = require('graphql-request')
const graphqlClient = () => {
return new GraphQLClient(
process.env.API_GRAPHQLAPIENDPOINTOUTPUT,//LEARNIBOTAPI_が抜けている!!
{
headers: { 'x-api-key': process.env.API_LEATNBOTAPI_GRAPHQLAPIKEYOUTPUT },
}
)
}
Lambdaコンソール
ソースコードで存在しない環境変数を参照しているため、URLを取得できずエラーが発生していたということですね。
以下のようにソースコードを修正し、Lambdaコンソールの環境変数(Amplifyが自動で設定してくれた)を誤字脱字なく指定するとエラーは解消しました。
const { GraphQLClient, gql } = require('graphql-request')
const graphqlClient = () => {
return new GraphQLClient(
process.env.API_LEANRBOTAPI_GRAPHQLAPIENDPOINTOUTPUT,//抜けていたLEARNIBOTAPIを追加!!
{
headers: { 'x-api-key': process.env.API_LEATNBOTAPI_GRAPHQLAPIKEYOUTPUT },
}
)
}
あとがき
環境変数の指定ミスによるエラーが多いため、自戒の念も込めてメモを残しておきます。
コメント