動かざることバグの如し

近づきたいよ 君の理想に

AWS Lambda RubyとAPI GatewayでSlackへ投稿するAPI作る

完成コード

require 'json'
require 'slack-notifier'

def hello(event:, context:)
  begin
    if event.dig('queryStringParameters', 'message').nil?
      raise "require message"
    end
    notifier = Slack::Notifier.new(
      "HOOK_URL",
      channel: "#speed_test",
      username: "notifier"
    )
    notifier.post text: event['queryStringParameters']['message']
  rescue => e
    {
      statusCode: 500,
      body: JSON.generate({message: "#{e.class} #{e.message}"})
    }
  else
    {
      statusCode: 200,
      body: JSON.generate({message: 'ok'})
    }
  end
end

# ローカルテスト用
# hello(event: {message: Time.now}, context:{})

Gemfile

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "slack-notifier"

zip化するシェルスクリプト

zip -r slack.zip . -x *.git*

参考リンク