data engineering basic(Unix환경 및 커맨드)

Pipes and Filters

cat : 해당 파일 전체를 print
head : 해당 파일 앞의 10줄 정도를 print
tail : 해당 파일 뒤의 20줄 정도를 print

command > file : 기존의 파일 내용은 지우고 현재 command한 결과 파일에 저장
command >> file : 기존의 파일에 덮붙여서 결과를 저장(python append같은 느낌!)

1
2
3
4
5
# example.py를 python3로 run하고 그 결과를 result.txt파일로 저장
python3 example.py > result.txt

# example.py를 python3로 run하고 그 결과를 result.txt파일에 덮붙여서 저장
python3 example.py >> result.txt

Shell script

  • terminal에서 바로 명령어를 여러개 사용하고 싶을때 shell script를 사용하면 된다.

  • 예를들어 아래의 example.py를 실행시켜 위에서 command를 한번에 실행시키고 싶다면 다음과 같이 먼저 example.py를 작성한 후에 command.sh 파일에는 command들을 작성한 후에 shell script 파일을 run하면 된다.

example.py

1
2
3
4
5
6
7
8
import sys

def main():
# command 뒤에 따라오는 첫번째 글자를 print
print(sys.argv[1])

if __name__=="__main__":
main()

command.sh

1
2
3
4
5
6
#!/usr/bin/env bash

python3 example.py 1 > result.txt
python3 example.py 2 >> result.txt
head result.txt
rm -rf result.txt example.py

terminal창

1
2
3
#권한을 설정
chmod +x command.sh
./command.sh

보통은 우리가 deploy.sh라는 파일로 만들어 그 안에서 작업을 한다. 예를 들어서,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# zip형식으로 되어있는 모든(*)파일을 삭제해라
rm *.zip

# 모든 파일을 lisztfever라는 이름으로 압축해라. -r 옵션은 파일이 있을 수 있으므로 붙여준다.
zip lisztfever.zip -r *

# aws s3라는 storage에 s3://areha/lisztfever/lisztfever.zip 에 해당 path의 파일을 삭제
aws s3 rm s3://areha/lisztfever/lisztfever.zip

# s3에게 다시 copy해라
aws s3 cp ./listzfever.zip s3://areha/lisztfever/listzfever.zip

# aws lambda function을 update해라.
aws lambda update-function-code --function-name listzfever --s3-buket areha --s3-key listzfever/listzfever.zip

AWS Cloud Service

먼저, IAM(Identity and Access Management)에 대해서 설명하겠다. 내가 누구이고 어떤 Access를 가지고 있는지를 관리하는 곳이라고 생각할 수 있다. 여기서 새로운 User를 등록 할 수 있다.

그림00

  • 위의 Add User를 통해서 새로운 User를 등록해보자.

그림01

  • Access type은 우리가 AWS cli를 통해서도 관리하므로 첫번째인 Programmatic access로 설정한다.

그림02

  • Permission을 주는 방식에 대한 설정하는 부분이다.

    • Add user to group : 한 Project를 여러명이 같이 진행하여 여러명이 관리할 경우 사용.

    • Copy permissions from existing user : 말 그대로 이미 존재하는 user의 permission들 중 하나를 선택하여 Copy할 경우 사용

    • Attach existing policies directly : AWS에 존재하는 정책들 중 하나를 선택하여 바로 사용하는 경우 사용

  • 예전에 있던 계정이 만료된걸 모르고 있다가 결제를 안해버려서…. ㅠㅠㅠ 새롭게 만든 계정으로 하느라 등록된 User들이 없다. 그러므로 3번째 설정으로 들어가서 모든 최상위 permission을 갖는 AdministratorAccess를 주었다.

  • 다음으로 넘어가게 되면, tag를 설정하게 되는데, 우선 넘어가겠다.(이 부분은 나중에 설정할 것이다.)

그림03

  • 앞에서 설정한 사항들을 확인하고, Create User를 누르게 되면 설정한대로 User를 생성하게 되는 것이다.

그림04

  • Access key ID, Secret access key가 생성되어 나오는데, 이 창이 닫히면, 볼수 없으므로 Download csv를 하는 것을 권장한다.
  • 설치 프로그램을 실행한다. /usr/local/aws에 AWS CLI를 설치하고 /usr/local/bin 디렉터리에 symlink aws를 생성한다. -b 옵션을 사용하여 symlink를 생성하면 사용자의 $PATH 변수에 설치 디렉터리를 지정할 필요가 없다. 이렇게 하면 모든 사용자가 임의 디렉터리에서 aws를 입력하여 AWS CLI를 호출 가능하게 한다.
1
2
3
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
  • 위의 설치가 다 끝나면, 이제 aws cli의 configure를 설정해 볼 것이다. 이를 통해 우리가 console에 접속하지 않고도 cli 환경에서도 aws를 조작할 수 있게 된다.
1
2
3
4
5
aws configure
AWS Access Key ID [None]: Access key ID
AWS Secret Access Key [None]: Secret access key
Default region name [None]: ap-northeast-2
Default output format [None]: