Skip to content

Commit 1a26d8a

Browse files
committed
docs: 스크립트를 사용하도록 가이드 변경
1 parent eda70a4 commit 1a26d8a

File tree

1 file changed

+31
-65
lines changed

1 file changed

+31
-65
lines changed

README.md

Lines changed: 31 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,58 @@
11
# TermLens_BE
2+
23
약관 요약과 중요 조항에 대한 평가를 제공합니다.
4+
35
# 아키텍처
4-
- AWS Lambda
5-
- AWS Bedrock
6+
7+
TermLens의 백엔드 아키텍처는 아래의 요소로 구성됩니다.
8+
9+
- AWS
10+
- Lambda
11+
- S3
12+
- DynamoDB
13+
- Bedrock (with Claude 3.5 Haiku)
14+
615
# 테스트
16+
717
LocalStack의 실행을 위해 docker 설치가 필요합니다.
18+
819
## LocalStack 설치
9-
```bash
10-
# pipx 설치
11-
sudo apt update
12-
sudo apt install pipx
13-
# 잘 설치되었는지 확인
14-
pipx --version
15-
16-
# LocalStack, awslocal 설치
17-
pipx install localstack --include-deps
18-
pipx install awscli-local[ver1] --include-deps
19-
source ~/.bashrc
20-
# 잘 설치되었는지 확인
21-
localstack --version
22-
awslocal --version
23-
```
2420

25-
wsl 환경에서 `pip install` 명령을 전역으로 쓸 수 없어 pipx를 사용합니다. 전역으로 localstack 및 awslocal을 설치하여 사용 가능한 경우 pipx의 설치가 필요하지 않습니다.
21+
`scripts/install.sh` 명령으로 pipx와, pipx를 통해 localstack, awslocal이 설치됩니다.
22+
23+
이후 `aws configure` 명령을 통해 가짜 aws credentials를 설정합니다. s3 및 DynamoDB 사용에 필요합니다. 각 요소는 다음과 같이 설정합니다.
2624

27-
이후 아래 명령을 통해 가짜 aws credentials를 설정합니다. s3 및 DynamoDB 사용에 필요합니다.
2825
```bash
29-
aws configure
3026
AWS Access Key ID [None]: test
3127
AWS Secret Access Key [None]: test
3228
Default region name [None]: us-east-1
3329
Default output format [None]: json
3430
```
31+
3532
## 로컬 테스트
33+
3634
**docker가 실행된 상태에서** `localstack start` 명령으로 LocalStack을 구동합니다. 이후 터미널에 `Ready`가 나타나면 다른 터미널 창을 열고, 프로젝트 디렉토리에서 아래 작업을 수행합니다.
3735

38-
우선, LocalStack에 업로드할 zip파일을 생성합니다.
39-
```bash
40-
pip install -r requirements.txt -t build/ --upgrade
41-
cp src/*.py build/
42-
cd build
43-
zip -r ../test-package.zip .
44-
cd ..
45-
```
36+
**스크립트들은 `scripts/스크립트_이름.sh`로 프로젝트 최상위 디렉토리에서 실행해주세요.**
4637

47-
ARM 환경에서는 `pip install...` 명령 대신 아래의 명령을 사용해주세요. LocalStack 및 AWS Lambda 환경에서는 amd64(x86-64)을 기반으로 작동하나, ARM 기반 기기에서 해당 명령으로 설치하게 되면 ARM용 바이너리를 받아와 LocalStack에서 실행하지 못합니다. 아래 명령으로 생성된 `build/` 디렉토리 및 `test-package.zip` 파일은 삭제 시 root 권한이 필요합니다.
48-
```bash
49-
docker run --platform linux/amd64 --rm -v "$(pwd)":/var/task --entrypoint "" public.ecr.aws/lambda/python:3.12 /bin/sh -c "pip install -r requirements.txt -t build/ --upgrade && cp src/*.py build/ && cd build && dnf install -y zip && zip -r ../test-package.zip . && cd .."
50-
```
38+
우선, LocalStack에 업로드할 `test-package.zip` 파일을 `scripts/make_zip.sh`을 사용해 생성합니다. docker를 사용해 arm 환경에서도 amd64용 바이너리를 받아오도록 했습니다.
5139

52-
그 다음 아래의 명령을 통해 람다 함수, S3 버킷, DynamoDB 테이블을 생성합니다.
53-
```bash
54-
awslocal lambda create-function \
55-
--function-name analyzeTermsOfServices \
56-
--runtime python3.12 \
57-
--timeout 120 \
58-
--zip-file fileb://test-package.zip \
59-
--handler lambda_function.lambda_handler \
60-
--role arn:aws:iam::000000000000:role/lambda-role \
61-
--environment Variables='{GEMINI_API_KEY=여기에_KEY값을_넣어주세요,LLM_PROVIDER=GEMINI}'
62-
63-
awslocal s3api create-bucket --bucket inha-capstone-20-tos-content
64-
65-
awslocal dynamodb create-table \
66-
--table-name inha-capstone-20-tos-analysis \
67-
--key-schema AttributeName=url,KeyType=HASH \
68-
--attribute-definitions AttributeName=url,AttributeType=S \
69-
--billing-mode PAY_PER_REQUEST \
70-
--region us-east-1
71-
```
40+
그 다음 `scripts/init.sh` 명령을 통해 람다 함수, S3 버킷, DynamoDB 테이블을 생성합니다. **localstack을 새로 실행할 때마다** 진행해 주셔야 합니다.
7241

73-
생성된 함수의 호출은 다음과 같이 할 수 있습니다.
74-
```bash
75-
awslocal lambda invoke --function-name analyzeTermsOfServices \
76-
--payload '{"queryStringParameters": {"url" : "www.example.com"}, "body" : "약관 텍스트" }' output.json
77-
```
78-
이후 `output.json` 파일에서 응답을 확인할 수 있습니다.
42+
생성된 함수의 호출은 `scripts/invoke.sh "www.test.com" "test_tos.txt"`와 같이 할 수 있습니다. 약관 텍스트 파일은 프로젝트 최상위 디렉토리(`.../TermLens/TermLens_BE`)에 넣어주세요.
43+
44+
localstack이 실행 중이고 함수가 만들어진 상태에서 **변경된 코드를 적용**하려면 다시 `test-package.zip` 파일을 만든 뒤 `scripts/update.sh` 명령으로 업데이트합니다.
7945

80-
함수가 생성된 상태에서 변경하기 위해서는 `update-function-code`를 사용합니다.
81-
```bash
82-
awslocal lambda update-function-code \
83-
--function-name analyzeTermsOfServices \
84-
--zip-file fileb://test-package.zip
85-
```
8646
## AWS 환경에서 테스트
47+
8748
로컬에서는 작동만을 확인하고, 답변 품질에 대한 테스트는 AWS Lambda에, 테스트용 함수에 배포하여 수행합니다.
49+
8850
# 컨벤션
51+
8952
## 커밋 메시지
53+
9054
커밋 메시지의 작성법은 [컨벤셔널 커밋](https://www.conventionalcommits.org/ko/v1.0.0/)을 따릅니다. `feat: `, `fix: `, `test: ` 등의 접두사 뒤에 설명을 덧붙이는 방식입니다. 한국어로 작성합니다.
55+
9156
## 브랜칭 전략
92-
[깃허브 플로우](https://docs.github.com/ko/get-started/using-github/github-flow)와 유사하게, 개별 작업마다 연관된 새로운 브랜치를 생성하고, 해당 브랜치에서 작업 후 main 브랜치에 병합하는 방식으로 개발을 진행합니다. 이때 브랜치의 이름은 `작업 종류/이슈번호-짧은-설명` 으로 합니다.
57+
58+
[깃허브 플로우](https://docs.github.com/ko/get-started/using-github/github-flow)와 유사하게, 개별 작업마다 연관된 새로운 브랜치를 생성하고, 해당 브랜치에서 작업 후 main 브랜치에 병합하는 방식으로 개발을 진행합니다. 이때 브랜치의 이름은 `작업 종류/이슈번호-짧은-설명` 으로 합니다.

0 commit comments

Comments
 (0)