티스토리 뷰

Steampipe 자체에 대한 자세한 설명은 추후에 하도록 하자.

아마 대부분 steampipe를 이용하게 되면 웹을 만드는 작업을 하게 될 것이다.

나를 예시로 들면 현재 진행중인 프로젝트의 도커 이미지 구조는 아래와 같다.

turbot/steampipe + cspw2s(node 기반) + mongo(db)

그런데 이렇게 구성을 하고 나서 pg를 이용해 steampipe에 연결을 하고 질의를 하면 계속 relation이 없다고 나왔다.

예를 들면,

steampipe query "select * from aws_iam_user"

라는 쿼리를 날리면 로컬머신에서는 정상적으로 결과를 주는데, 이상하게 도커로 만든 이미지에서는 relation이 없다고 나오는 것이다.

한참 여기저기 뒤져보다가 결국 알게된 원인은

postgresql search_path 였다. 젠장 역시 DB 자체도 열심히 공부해야한다 이렇게 삽질하지 않으려면 ㅠ

암튼 다시 설명해보면 기본적으로 postgresql에서는 schema.table 과 같은 방식으로 질의를 하게 된다.

그리고 위 그림과 같이 스키마는 information_schema에서 찾아볼 수 있다.

steampipe plugin install aws 와 같은 방식으로 플러그인을 설치하게 되면, 설치가 완료되고 아래와 같이 search_path가 등록된다.(재시작 후 다음 세션부터 적용됨)

하지만 내 기존 코드에서는 dockerize를 통해 steampipe 포트가 올라오면 바로 연결을 맺다보니 플러그인이 설치되기 전 search_path를 기준으로 쿼리를 날리게 된 것이다.

그러니 오류 없이 사용하려면 아래와 같은 순서로 사용하자.

[로컬머신]

steampipe 설치 -> plugin 설치 -> steampipe query (미리 steampipe query로 접근하고서 플러그인 설치하면 앞에 플러그인명.table로 질의를 해야된다 -> 귀찮)

[이미지 생성시]

steampipe 설치 -> plugin 설치 -> postgresql에 커넥션 맺기

 

일단 현재 내 프로젝트에서는 dockerize -> sleep 30(....) -> npm start 와 같이 임시방편으로 해결해두었다.

이걸 아름답게 근본적으로 해결 가능한 방안이 있을까 고민해보자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함