├── .gitignore ├── Gemfile ├── handler.rb ├── Gemfile.lock ├── Dockerfile └── Makefile /.gitignore: -------------------------------------------------------------------------------- 1 | deploy.zip 2 | vendor/ 3 | .bundle/ 4 | lib/ 5 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "pg" 4 | gem "nokogiri" 5 | -------------------------------------------------------------------------------- /handler.rb: -------------------------------------------------------------------------------- 1 | require 'pg' 2 | require 'nokogiri' 3 | 4 | def main(event:, context:) 5 | { 6 | postgres_client_version: PG.library_version, 7 | nokogiri_version: Nokogiri::VERSION 8 | } 9 | end 10 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | mini_portile2 (2.4.0) 5 | nokogiri (1.9.1) 6 | mini_portile2 (~> 2.4.0) 7 | pg (1.1.3) 8 | 9 | PLATFORMS 10 | ruby 11 | 12 | DEPENDENCIES 13 | nokogiri 14 | pg 15 | 16 | BUNDLED WITH 17 | 1.17.2 18 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM lambci/lambda:build-ruby2.5 2 | 3 | RUN yum install -y \ 4 | https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-redhat10-10-2.noarch.rpm 5 | RUN sed -i "s/rhel-\$releasever-\$basearch/rhel-6.9-x86_64/g" "/etc/yum.repos.d/pgdg-10-redhat.repo" 6 | RUN yum install -y postgresql10-devel 7 | RUN gem update bundler 8 | 9 | CMD "/bin/bash" 10 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | image: 2 | docker build -t lambda-ruby2.5-postgresql10 . 3 | 4 | shell: 5 | docker run --rm -it -v $$PWD:/var/task -w /var/task lambda-ruby2.5-postgresql10 6 | 7 | install: 8 | docker run --rm -it -v $$PWD:/var/task -w /var/task lambda-ruby2.5-postgresql10 make _install 9 | 10 | test: 11 | docker run --rm -it -v $$PWD:/var/task -w /var/task lambda-ruby2.5-postgresql10 make _test 12 | 13 | zip: 14 | rm -f deploy.zip 15 | zip -q -r deploy.zip . -x .git/\* 16 | 17 | clean: 18 | rm -rf .bundle/ 19 | rm -rf vendor/ 20 | rm -rf lib/ 21 | 22 | deploy: 23 | aws lambda create-function \ 24 | --region ap-southeast-2 \ 25 | --function-name RubyLambdaPostgreSQLNokogiri \ 26 | --zip-file fileb://deploy.zip \ 27 | --runtime ruby2.5 \ 28 | --role arn:aws:iam::000000000000:role/lambda-execution-role \ 29 | --timeout 20 \ 30 | --handler handler.main 31 | 32 | update: 33 | aws lambda update-function-code \ 34 | --region ap-southeast-2 \ 35 | --function-name RubyLambdaPostgreSQLNokogiri \ 36 | --zip-file fileb://deploy.zip 37 | 38 | delete: 39 | aws lambda delete-function \ 40 | --region ap-southeast-2 \ 41 | --function-name RubyLambdaPostgreSQLNokogiri 42 | 43 | invoke: 44 | aws lambda invoke \ 45 | --region ap-southeast-2 \ 46 | --function-name RubyLambdaPostgreSQLNokogiri /dev/stdout 47 | 48 | # Commands that start with underscore are run *inside* the container. 49 | 50 | _install: 51 | bundle config --local build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config 52 | bundle config --local silence_root_warning true 53 | bundle install --path vendor/bundle --clean 54 | mkdir -p /var/task/lib 55 | cp -a /usr/pgsql-10/lib/*.so.* /var/task/lib/ 56 | 57 | _test: 58 | ruby -e "require 'handler'; puts main(event: nil, context: nil)" 59 | --------------------------------------------------------------------------------