공부하기싫어
article thumbnail

dev 와 prod 를 위한 dynamoDB Table 을 만들고

메인 트레이드 서버인 EC2 를 띄운 후 EC2 에서 dynamoDB 테이블 항목을 읽어오는 작업을 할 예정

 

DynamoDB

테스트용 항목과 실제 사용할 항목으로 2개 만들어줬다

RCU/WCU 는 각각 1개씩으로 프로비저닝 해 줬다.

 

 

EC2

ec2 instance

t3a.micro 유형으로 생성해줬다.

보안그룹도 따로 생성해줬고

dynamoDB table 참조를 위한 역할은 추후 생성해줄 예정이다.

ubuntu 22.04 LTS 를 이미지로 사용했다

EIP 는 할당하지 않았다 - 서버 안끌 예정

인스턴스 시작 후 아래 명령을 통해 필요한 종속성을 설치하고 시간을 한국 시간으로 바꿔줬다

sudo apt update && sudo apt-get update
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
sudo apt install python3-pip -y
pip3 install pyupbit

 

 

EC2 에서 DynamoDB 항목 불러오기

메인으로 동작할 python 스크립트에서 boto3 를 이용해 dynamoDB 의 속성을 변수에 담아볼 예정

 

boto3, aws-cli 설치

pip3 install boto3
sudo apt install awscli

이후 aws configure 설정

 

역할 연결

dynamoDB Read Only Access 정책을 연결해줫다

 

테스트

dynamoDB table

현재 테이블 값

 

test.py

import boto3

global best_k, predicted_end_price

def read_dynamoDB_table() :
    global best_k, predicted_end_price

    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('table-for-Ethereum-Autotrade')

    response = table.get_item(
        Key={
            'Env': 'Dev'
        }
    )

    item = response['Item']
    best_k = item['k-value']
    predicted_end_price = item['endprice']

read_dynamoDB_table()
print(best_k)
print(predicted_end_price)

 

결과

ubuntu@ip-172-31-41-145:~$ python3 ethereum_autotrade.py 
0.2
2385718.230331

 

잘 불러와졌다

 

 

 

EC2 에서 SSM parameter Store 의 파라미터 불러오기

SSM에 저장된 파라미터를 가져와서 변수에 담아 활용할 예정이다.

upbit access key 와 secret key 를 미리 저장해놨다

 

EC2 역할에 정책 연결

AmazonSSMReadOnlyAccess

 

 

테스트

parameters

 

test.py

import pyupbit
import boto3

def get_parameter_fromSSM() :
    ssm = boto3.client('ssm')

    parameters=['/ethereum-autotrade/upbit-key/access-key',
                '/ethereum-autotrade/upbit-key/secret-key']
    upbit_keys=list()

    for i in parameters:
        response = ssm.get_parameter(
            Name=i,
            WithDecryption=True
        )
        upbit_keys.append(response['Parameter']['Value'])
    
    return upbit_keys[0],upbit_keys[1]


def login(access_key, secret_key) :
    # login
    try:
        upbit = pyupbit.Upbit(access_key, secret_key)
        print("upbit login : success")
    except :
        print("upbit login : failure")

upbit_access_key, upbit_secret_key = get_parameter_fromSSM()
login(upbit_access_key, upbit_secret_key)

 

결과

ubuntu@ip-172-31-41-145:~$ python3 ethereum_autotrade.py 
upbit login : success

 

 

 

한시간컷 굿

chatGPT 는 신이야!