일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws s3
- log
- Operating System
- docker
- java
- Python
- OS
- helm
- kubectl
- Spring
- Vision
- kubernetes
- Kafka
- ip
- EC2
- jvm
- tcp
- Network
- kubeadm
- AWS
- PostgreSQL
- CVAT
- airflow
- Trino
- JavaScript
- grafana
- MAC address
- Packet
- CSV
- zookeeper
- Today
- Total
JUST WRITE
따릉이 대여소 정보 Dashboard 구성(2) - AWS S3 파일 업로드 본문
AWS Cloud 실습을 위해 진행한 개인 프로젝트를 정리한 글입니다.
서울 공공데이터에서 따릉이 대여소 정보를 정제하여 CSV 파일로 만들었다.
이번 글에서는 CSV 파일을 AWS S3에 업로드하는 작업을 정리해보려 한다.
Python Code로 CSV 파일을 AWS S3에 업로드하였다.
AWS IAM 사용자 추가
Amazon S3 작업을 진행하기 전에 S3에 접근 가능한 IAM 사용자를 추가해줘야 한다.
AWS IAM에서 사용자 추가를 한다.
적절한 사용자 이름을 지정해준 다음 AWS 자격 증명 유형을 액세스 키 방식으로 한다.
Python으로 S3에 접근하기 위해서이다.
다음은 권한 선택 부분이다.
기존 정책 직접 연결 방식으로 해서 기존에 있는 AmazonS3FullAccess 정책을 선택해준다.
권한과 적절한 태그까지 설정해주면 IAM 사용자 추가가 완료된다.
액세스 키 ID와 비밀 액세스 키가 나오는데 2가지 잘 보관해야 한다.
아래 csv 파일로 다운로드가 할 수 있다.
중요한 설정 정보이니 잘 보관해야 한다.
AWS S3 Bucket 생성
따릉이 대여소 정보 CSV 파일을 업로드할 S3 Bucket을 생성해줘야 한다.
S3에 대한 자세한 설명은 아래 게시물을 참고 바랍니다.
S3 Bucket 생성은 기본 설정값으로 생성해준다.
개인 프로젝트라 버전 관리와 암호화 기능은 설정하지 않았다.
Python S3 파일 업로드
Python Code로 CSV 파일을 S3에 업로드하려 한다.
Python boto3 Package를 통해서 AWS S3에 업로드 가능하다.
EC2 AWS configure
boto3로 AWS Service에 접근하려면 AWS 설정을 해줘야 한다.
Python Code를 EC2에서 실행하니 EC2에 AWS 설정을 진행한다.
AWS 설정을 하려면 AWS CLI가 설치되어 있어야 한다.
일반적으로 EC2에는 AWS CLI가 설치되어 있다.
(AWS CLI 설치에 대한 자세한 사항은 링크 참고)
AWS 설정은 아래 command로 가능하며 4가지 정보를 입력해주면 끝이 난다.
액세스 키 ID와 비밀 액세스 키는 IAM에서 생성한 액세스 키를 입력해준다.
$ aws configure
AWS Access Key ID [None]: accesskey
AWS Secret Access Key [None]: secretkey
Default region name [None]: ap-northeast-2
Default output format [None]: json
Python S3 파일 업로드
따릉이 대여소 정보를 일자별로 특정 시간에 수집하여 CSV 파일을 만들었다.
일자별로 수집한 Data를 기준으로 Dashboard를 생성할 예정이다.
주기적으로 Data를 수집하고 CSV 파일을 만드는 작업을 진행하기 위해 schedule package를 사용하였다.
import schedule
schedule.every().day.at('08:25').do(make_seoul_rent_bike_info_csv)
while True:
schedule.run_pending()
time.sleep(1)
boto3 pakcage로 CSV 파일을 생성한 Bucket에 업로드한다.
import boto3
from botocore.exceptions import ClientError
def upload_file(file_name, bucket, object_name=None):
# If S3 object_name was not specified, use file_name
if object_name is None:
object_name = '{}/{}'.format(g_collection_date.strftime('%Y/%m'), file_name)
# Upload the file
s3_client = boto3.client('s3')
try:
response = s3_client.upload_file(file_name, bucket, object_name)
except ClientError as e:
log.error(e)
nohup 명령어로 Python 소스를 Daemon Process로 실행하였다.
nohup python3 request_api.py &
주기적으로 S3 Bucket에 CSV 파일을 업로드하는 것을 확인할 수 있다.
다음에는 S3에 업로드한 CSV 파일을 AWS Redshift 테이블에 Insert 하는 작업을 진행하겠습니다.
'Cloud' 카테고리의 다른 글
What is AWS Lambda? (0) | 2022.02.18 |
---|---|
What is Redshift? (0) | 2022.02.15 |
따릉이 대여소 정보 Dashboard 구성(1) - Python으로 데이터 정제 (0) | 2022.02.14 |
따릉이 대여소 정보 Dashboard 구성(0) - 시작 (0) | 2022.02.13 |
What is Amazon EC2? (0) | 2022.02.12 |