柴犬 API からデータを取得して画像 URL から画像を取得する Lambda (Node.js v16.x + index.js)をつくるメモ
柴犬 API からデータを取得して画像 URL から画像を取得する Lambda (Node.js v16.x + index.js)をつくるメモです。
バージョン情報とか条件
- Windows 10 環境で作業
- 手元の環境 Node.js v16.18.1
- Lambda のランタイムバージョン Node.js 16.x
- HTTP リクエストは単純な OK のみで、内部で柴犬 API からデータを取得して画像 URL から画像を取得
柴犬 API
shibe.online - the shiba inu api
使う柴犬 APIはこちらです。
https://shibe.online/api/shibes でアクセスすると、
[
"https://cdn.shibe.online/shibes/9c8278e20288fcb33eaa70c2b45f01d1e379bcc9.jpg"
]
といった形で、配列に 1 つ柴犬が入った形で画像 URL が入ってきます。
Lambda をつくる

Lambda の関数の作成です。
- 関数名
- 今回は blog-sample-shiba-inu-api-get-node-v16 にしました
- ランタイム
- Node.js 16.x
- アーキテクチャ
- x86_64

関数の作成ボタンをクリックします。

できあがりました。
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
index.js でファイルが作成されています。これを調整していきます。
関数のエクスポートをして axios を使えるようにする
axios を使うために、関数のエクスポートをしたものに手元で axios を加えてインポートして使えるようにします。

関数の概要画面で アクション > 関数のエクスポート をクリックします。

デプロイパッケージのダウンロードをクリックします。

デスクトップに ZIP ファイルをダウンロードしたので解凍します。ダウンロードできたら閉じるをクリックします。

index.js ファイルだけあるフォルダが展開されました。
そのフォルダで npm プロジェクトフォルダとして初期化します。
axios をインストールします。

このように準備ができました。このファイル群を選択して ZIP 圧縮します。

index.zip として保存できました。
関数のインポート

関数の概要ページでアップロード元というボタンをクリックして .zip ファイルをクリックします。

アップロードをクリックして先ほどの index.zip を選択して、保存ボタンをクリックします。

このようにコードソースのファイルリストに node_modules や package.json が追加されます。
プログラムの反映
コードソースの index.js をすべて選択して、以下のプログラムを貼り付けます。完全上書きということです。
const AWS = require('aws-sdk');
const axios = require('axios');
exports.handler = async (event) => {
// 柴犬 API へのアクセス
const configShibaAPI = {
url:'https://shibe.online/api/shibes',
method:'get'
}
//// 柴犬 API にアクセス ////
const responseShibaAPI = await axios.request(configShibaAPI);
// 画像の URL リストの 0 番目から実際の URL を取得
const urlSAhibaImage = responseShibaAPI.data[0];
console.log('Shiba API Access OK!');
console.log(urlSAhibaImage);
//// 画像を取得 ////
const configGetImage = {
url:urlSAhibaImage,
responseType:'arraybuffer'
}
const responseGetImage = await axios.request(configGetImage);
const data = responseGetImage.data;
console.log('Shiba API GetImage OK!');
// 結果
return {
statusCode: 200,
body: JSON.stringify({
result: 'OK'
}),
};
};
反映できたら、

Deploy ボタンをクリックしてデプロイします。
テストしてみる

Test ボタンをクリックします。

イベント名を Test と仮に設定して保存ボタンをクリックします。
Test ボタンをクリックしてテストしてみます。

待っていると、このように Shiba API Access OK! や Shiba API GetImage OK! が出てきて無事動作しました。