1. Background
➜ AWS Batch는 AWS의 클라우드 기반 서비스 중 하나로, 대규모의 계산 작업을 쉽게 처리할 수 있는 관리형 서비스
➜ 이 서비스를 사용하면 컴퓨팅 자원을 효율적으로 활용하여 대규모 작업을 분산 처리할 수 있음
➜ 배치 작업을 편리하게 할 수 있는 서비스
➜ 작동 원리

✅ 작업을 특정 작업 대기열에 제출하면, 작업은 컴퓨팅 환경에 스케줄링될 때까지 해당 대기열에 남아 있음, 작업 대기열에 연결된 컴퓨팅 환경과 작업 대기열 자체에 우선순위 값을 할당 가능
✅ 작업 정의에서 지정한 매개변수를 사용하여 AWS Fargate 또는 Amazon EC2 리소스에서 컨테이너화된 애플리케이션으로 작업을 실행
✅ 실행 중인 작업의 상태를 모니터링하고 완료된 작업의 결과를 보고, AWS batch 콘솔에서 최근 작업/작업 대기열 및 컴퓨팅 환경을 확인할 수 있음
✅ 작업은 다른 작업의 이름이나 ID를 참조하고, 다른 작업의 성공적인 완료에 의존 가능
2. ubuntu
➜ aws, docker 설치 확인
➜ aws configure로 접속
3. 실습
➜ AWS Amazon Elastic Container Registry 접속
✅ 생성 (모두 default 값) : 970547362503.dkr.ecr.ap-northeast-2.amazonaws.com/shinjuhee-repo [url]
✅ 아래 명령 Linux에 복붙

✅ nano simple_math_batch_job.py
# simple_math_batch_job.py
import math
# 파이 값(π)을 소수점 10자리까지 계산
pi_value = round(math.pi, 10)
# 결과 출력
print(f"Calculated value of Pi to 10 decimal places: {pi_value}")
✅ nano Dockerfile
FROM python:3.8-slim
WORKDIR /app
COPY simple_math_batch_job.py /app/
CMD ["python", "simple_math_batch_job.py"]
➜ 이미지 올라간 것 확인

➜ 컴퓨팅 자원 생성
✅ 컴퓨팅 환경 > 생성 > EC2 > 관리형 > 이름 [batch-ec2-computing] > 인스턴스 역할 생성 [IAM > role > EC2 > AmazonEC2ContainerServiceforEC2Role 권한 선택 > 이름 주기 [ecs-role]

✅ 비용 절감을 위해 스팟 인스턴스 사용을 활성화 : 옵션들은 default, 추가 구성 [ 할당 전략 정보 : Spot capacity optimized ]
✅ 배치만 관리하는 거라 EC2에 나타나진 않음
➜ 작업 정의
✅ 생성 : EC2 > 이름 : batch-job-definition99 > 실행 시간 : 60
✅ 컨테이너 구성 : 위의 ECR image url 복붙하여 이미지에 넣기

➜ 대기열 생성
✅ 생성 : EC2 > 이름 : batch-job-queue999 > 연결된 컴퓨팅 환경 : batch-ec2-computing

➜ 작업 생성
✅ 새 작업 제출 > 이름 : job-test-by-shin-0905 > 작업 정의 : batch-job-definition99 > 작업 대기열 : batch-job-queue999
✅ 컨테이너 재정의 : ["python", "simple_math_batch_job.py"]

➜ 대시보드에서 Succeed 된 것 확인

➜ 로그 스트림 이름 > Cloudwatch로 넘어감 > 확인

3. AWS athena, glue
➜ AWS glue
✅ amazon web services의 일부로 이벤트 중심의 서버리스 컴퓨팅 플랫폼\
✅ 분석 사용자가 여러 소스의 데이터를 쉽게 검색, 준비, 이동, 통합할 수 있도록 하는 서버리스 데이터 통합 서비스 ✅ 간단하게 여러 데이터 스토어 및 스트림 간에 원하는 데이터를 분류, 정리, 보강, 이동
✅ 서버리스이므로 설정하거나 관리할 인프라가 없음
➜ AWS athena
✅ 표준 SQL을 사용하여 Amazon S3에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스
➜ 버킷 만들기 (데이터가 저장될 곳) > 이름 : shinjuhee0906, 나머지는 default > 파일 업로드 [ inventory.csv ] > IAM ROLE : AWSGlueServiceRole-crawler-role > Set output and scheduling : Create a database : aws-crawler-db > 새로고침하여 db 추가 > Crawler schedule : on demand > Run crawler

➜ 버킷 만들기 (쿼리가 저장될 곳) > 이름 : athena-output-storage-0906
➜ Amazon Athena > 작업 그룹 생성 > 이름 : athena-0906, 쿼리 결과 구성 : 생성한 S3 선택 (무조건 뒤에 / 추가하기) > 쿼리당 데이터 사용량 컨트롤 : 10GB
➜ 쿼리 편집기 [ 작업 그룹 위에서 생성한 것으로 선택 ] > 생성 > set crawler properties > 이름 : aws-glue-crawler > Add data source [ S3, browse : S3 연결 (s3://shinjuhee0906/) ]

✅ 자동으로 세팅된 데이터 확인

✅ 테이블 미리 보기

➜ 버킷에 폴더 Inventory 생성
✅ 파일 다 올리기 (excel 파일) : 폴더 하나에 자료 하나씩 만들기

➜ AWS Glue > Crawlers > aws-glue-crawler > running
✅ AWS athena에서 쿼리 결과 확인

➜ 쿼리 편집
SELECT * FROM "aws-crawler-db"."inventory" inv
join "aws-crawler-db"."inventory_updated" inv_v
on inv.quality - inv_u_quality
** 참고 **
https://docs.aws.amazon.com/ko_kr/batch/latest/userguide/what-is-batch.html
AWS Batch란 무엇입니까? - AWS Batch
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다. AWS Batch란 무엇입니까? AWS Batch를 사용하면 AWS 클라우드에서 배치 컴퓨팅 워
docs.aws.amazon.com
'AWS' 카테고리의 다른 글
| [ 4 ] (0) | 2024.09.13 |
|---|---|
| [ 3 ] (0) | 2024.09.12 |
| [ 2 ] (0) | 2024.09.11 |
| [ 1 ] - 기본 Setting (0) | 2024.09.10 |
| [ AWS Architecture Diagram ] (0) | 2024.09.05 |