티스토리 뷰
[Steampipe] 사용시 주의할 점(Error: relation '...' does not exist)
Turtle1000 2022. 1. 9. 23:13Steampipe 자체에 대한 자세한 설명은 추후에 하도록 하자.
아마 대부분 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
- defaulttheme
- .get()
- IAM
- scp
- Cloud
- ControlTower
- temlate
- 계정정보저장
- AWS #CIS
- CIS
- ViaAWSService
- compliance
- platform
- conftest policy
- REACT
- opensource
- security
- 2xx
- fleet manager
- steampipe
- 4xx
- JavaScript
- 우주와컴퓨터
- teplate
- web
- cloudsecurity
- findinglatestversion
- terraform
- stateType
- aws
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |