배포를 하는도중, pre-compille이 안되는 Gem이 존재해서 위와같이 배포가 안됐다는 경험담 및 해결방법을 풀겠습니다. 정말 아주 간단한 해결법은 해다 Gem의 버전을 바꾸는겁니다. : ex : [before] gem "pg", "~> 1.3.4" [after] gem "pg", "~> 1.2.3" 실제로 gem의 버전에 변화를 주고 다시 bundle install 및 배포를 하니 잘 되는것을 확인할 수 있었습니다.
과거에 Ruby on Jets를 다룰 때 당시, Cloud9을 기준으로 설치법에 대해 소개했었는데, 이번에는 Mac OS을 기준으로 설치법을 설명해보겠습니다. 본문에서는 Ruby on Jets에 대한 자세한 설명은 생략합니다. rbenv 설치 및 Ruby 설치 Jets를 설치 전, AWS Lamba에서 지원되는 Ruby를 설치해줘야 할 필요가 있습니다. 20. 8. 2 기준 Ruby 버전은 2.5버전을 지원하고 있습니다. 본격적인 Ruby 설치 전에 앞서, Ruby 버전을 관리해주는 rbenv를 설치해보겠습니다. 1. homebrew를 이용해서 rbenv를 설치합니다. brew install rbenv 2. 이제 앞으로 터미널을 킬 때 마다 rbenv가 설치된 Path를 인식해줘야 합니다. (초기화) 터..
AWS Lambda에서는 파일 압축을 하는 zip 명령어(unzip package)에 대한 지원을 하지 않습니다. 그렇다보니 Zip 명령어를 쓰고싶을 경우 Rails에서 zip을 지원하는 Gem을 활용해야 합니다. 1. Gemfile 에 다음 두 줄의 코드를 입력합니다. gem 'rubyzip', '>= 1.0.0' gem 'zip-zip' 그리고 Gem 설치를 진행합니다. bundle install 2. 간단하게 저는 AWS Cloud9 환경에서 사전에 Jets 환경이 준비된 상태에서 파일압축을 진행해보겠습니다. 우선 Job 파일을 생성해주세요. ## jets g job [Job 이름] jets g job compression_test 3. 생성된 Job 파일을 열람 후, 모듈(Gem)을 정의하는 re..
AWS Lambda에서 간혹 파일을 임시적으로 등록해야 할 경우가 있습니다 : Path를 가리켜서 이미지 분석을 해야할 때 Path가 가리키는 파일을 FTP 서버에 업로드 해야할 때 ... 위와같은 용도로서 AWS Lambda에 임시적으로 파일 생성을 하려 하면 일반적인 디렉터리에는 파일 생성/보관이 안됩니다. 이는 디렉터리 권한 때문입니다. 하지만 다행히도 서버에 있어서 한가지 암묵적인 규칙이 있습니다. 다양한 프로그램의 개발 Process를 보면 프로그램 내에서 임시적으로 파일을 생성을 해야 할 경우, /tmp 파일에 등록을 하는 방향으로 개발이 이루어집니다. AWS Lambda 역시 위 규칙을 참고하여, /tmp 한 디렉터리에 대해서만 파일 생성/보관이 되게 했습니다. 직접 한번 /tmp 폴더에 파..
간혹 Ruby on Jets에서 작업을 해낸 후, AWS Lambda로 프로젝트를 배포하려 하면 다양한 사유 이름 때문에 오류가 발생하거나, 배포는 됐는데 기능이 작동하지 않는 경우가 있습니다. 개인적으로 오류를 겪은 사례에 대해 해당 글에 계속 업데이트를 해나갈 예정입니다. 1. '1분'과 같은 단수 표현 시, 's' 를 붙여선 안됨. class CrawlJob < ApplicationJob rate "1 minute" def dig Post.create(title: "[#{Time.now.in_time_zone("Asia/Seoul").strftime('%Y-%m-%d %H:%M')}] 저는 일하고 있습니다.", content: "화이팅") end end 2분과 같이 복수시간 표현일 경우엔 minut..
" unable to sign request without credentials set " 최근, AWS Cloud9을 통해 배포를 하면서 위와 같은 에러 이슈로 인해 배포가 안되는 사례가 있어 해결법에 대해 공유하고자 합니다. Ruby on Jets에서는 credentials에 적인 AWS ID와 Secret Key 정보를 토대로 자동으로 Region 판별 및 자동으로 Jets 프로젝트를 Deploy 하는 개념입니다. 해당 원인은 위 사진 속 메세지에 언급된 것과 같이 ~/.aws 폴더에 credentials 파일이 없어서 발생하는 원인입니다. credentials 파일에는 원래 아래와같이 AWS ID와 Secret Key가 적혀있습니다. 결국은 Credentials 파일이 누락되었다는 건데, Cred..
최근, AWS Cloud9을 통해 배포를 하면서 위와같은 이슈로 인해 피해를 본 사례가 있어 해결법에 대해 공유하고자 합니다. 해당 문제점 같은 경우는 byebug Gem이 AWS Lambda에 제대로 컴파일이 되지 않아서 발생되는 문제인 것 같습니다. 원래는 어떻게해서든 byebug Gem 설치와 함께 해결하는 방향으로 하고 싶었으나, 구글에서 위와같은 사례로 해결된 글을 발견하지 못했습니다. 그래서 저는 Gemfile 에서 byebug Gem을 지워버리고 해결하는 방향으로 했습니다. 1. Gemfile 파일을 열람 후, byebug Gem을 주석처리 혹은 내용을 지워주세요. 2. Ruby on Jets 내 터미널에서 아래 명령어를 입력해서 gem 설치파일 자체를 없애줍니다. gem uninstall ..
Jets에서 환경변수 설정에 있어 Figaro Gem과 연동해서 쓰려 할 경우 이상하게 Jets에서는 Figaro Gem을 제대로 설치했음에도 불구하고 인식을 못합니다. 하지만 다행스럽게도 Jets에는 기본적으로 환경변수를 지원을 합니다. 이번 시간에서는 Jets에서 기본적으로 지원하는 기능을 통해 환경변수를 등록하는 법에 대해 알아보겠습니다. 환경변수 개념 환경변수는 쉽게 말하면 "치환" 입니다. 만약 코드 내 중요한 정보에 있어 숨겨야할 경우 정보의 표현을 치환을 통해 은닉처리할 때 많이 쓰입니다. 예를들어, Jets 내 데이터베이스를 설정하는 database.yml 파일을 살펴보겠습니다. ## config/database.yml default: &default adapter: postgresql e..