柴犬 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 init -y
[/]
そのフォルダで npm プロジェクトフォルダとして初期化します。
npm i axios
[/]
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! が出てきて無事動作しました。