関数の作成AWSダッシュボードからLambdaを開き、「関数の作成」を選択。なにやら「https-request」というテンプレートを発見。これを使うことにしましょう。「https-request」を選択し、次へ。このLambda関数を呼び出す条件を選択するようです。5分ごとに起動するように設定してみました。「日」と「曜日」のみOR条件になっていて、毎日にするならどちらかを指定なしにしないとバリデーションエラーで進めないので気をつけましょう。これは普通のcronでも同じ。最後の「年」はcronにはありませんね。ここは後からでも設定・追加できるので、よくわからなければスルーでおk。次ロールは適当に作っちゃいました。ロールについてはこちら。要するに、この関数を扱える権限の設定といったところ。カンケーない人にはカンケーない項目なのでサクッと進みましょう。APISlackに投稿するためのトークンを取得します。APIのTokenの取得・場所を参考にさせていただきました。一つ、投稿したいチャンネルのコードを取得します。任意のチャンネルのURLに含まれる、この赤枠の部分です。checkAlive(index);}使い方としては、生死を確認したい宛先の情報をparamListに追加するだけ。APIサーバだとアクセスを許可するドメインを制限したりする場合があると思うので、200が返ってくるパスを指定できるようにしています。ついでにbasic認証も通せるように。Node.jsとはいえただのJavaScriptで書けばいいのです。https.requestは非同期で実行されるので、そのままだとレスポンスを受け取る前に関数が終了してしまいます。checkAlive関数を再帰的に呼び出し、一つ一つ実行していくような形で実装。全てのホストを確認した後、context.success()を呼び関数を終了します。この方法にはホストの状態によっては関数がタイムアウトするというデメリットがあります。デフォルトでは1分になっている設定を増やせばタイムアウトしにくくはなりますが、まあ気持ち悪いですね。api.fugafuga.jp:443Slackexample.comは例示用ドメインとして実際にアクセスできますが、/aboutなんてパスはないので404。api.fugafuga.jpは存在しないドメインとしてエラーを吐きます。関数内でconsole.logを使って出力した部分はCloudWatchのロググループ(=Lambda関数名)で確認できます。