Aurora Serverless 시도

13506 단어 AuroraServerlessAWS

1. 시작


나는 네트워크 장치의 로그 데이터를 DB에 저장했다. 아마존 RDS의Aurora Serverless를 시도했기 때문에 비망록으로 저장하고 싶었다.
Amazon RDS는 AWS의 서비스에서 데이터베이스 설정, 패치 응용, 백업, 고장 대응, 축소 등 설정 작업과 운용 작업을 실시하는 전면적인 데이터베이스 서비스이다.RDS 초기 설정 시 Aurora를 DB 엔진으로 선택하고 용량 유형을 Serverless로 설정하면 서버에서 데이터베이스가 실행되며 고객이 방문할 때 시작하고 방문하지 않으며 유휴 상태가 지속될 때 정지됩니다.
로그 데이터가 자꾸 생성되기 때문에 서버와 맞지 않는 것으로 여겨지지만, 설정 등을 확인하기 위해 아우라 Serverless를 시도하고 있다.기록할 때 Aurora Serverless는 IAM 데이터베이스 인증을 지원하지 않는 것 같습니다.
Aurora Serverless의 개요 및 해당되지 않는 기능 참조공식 블로그.

2. DB 클러스터 생성


공식 문서*1*2를 참조하여 DB 클러스터를 만듭니다.
VPC와 DB 서브넷 그룹, DB 클러스터 매개변수 그룹을 사전에 제작합니다.

2.1.GUI를 사용하여 생성


1. Aurora를 데이터베이스 엔진으로 선택하고 MysQL5로 편집합니다.6과의 호환성을 선택합니다.


2. DB 엔진의 용량 유형으로 Serverless를 선택합니다.

3. DB 클러스터 이름과 DB의 관리자 계정과 비밀번호를 지정합니다.DB 클러스터를 만든 후 이 계정으로 다른 DB 사용자를 만듭니다.

4. 최소 최대 용량 단위와 유휴 상태가 몇 분 동안 지속되면 집단이 정지됩니다.하중 상황에 따라 여기에 지정된 용량 단원으로 축소합니다.

5. DB 클러스터를 구성하는 VPC 및 보안 그룹을 지정합니다.

6. DB 클러스터 매개 변수 그룹이나 DB의 암호화 키(KMS) 등을 지정하여 DB 클러스터를 만듭니다.

7. 집단 단점을 확인하고 클라이언트로부터 연결한다.

2.2.CLI에서 생성


AWS CLI를 통해 Aurora Serverless의 DB 클러스터링을 만들 수도 있습니다.AWS CLI에서 위의 GUI 설정과 동일한 DB 클러스터를 만들 때 다음을 수행합니다.
aws rds create-db-cluster \
  --db-cluster-identifier [DBクラスター識別子] \
  --db-cluster-parameter-group-name [default.aurora5.6] \
  --vpc-security-group-ids [VPCのセキュリティグループID(sg-xxxxxxxx)] \
  --db-subnet-group-name [DBサブネットグループ] \
  --engine aurora \
  --master-username [DBマスターユーザ名] \
  --master-user-password [DBマスターユーザパスワード] \
  --storage-encrypted \
  --engine-mode serverless \
  --scaling-configuration MinCapacity=2,MaxCapacity=4,AutoPause=True,SecondsUntilAutoPause=300 \ 
  --deletion-protection
참조문서, 기타 옵션도 변경할 수 있습니다.
또한 aws rds describe-db-Clusters를 통해 제작된 DB 클러스터를 확인할 수 있습니다.
aws rds describe-db-clusters --db-cluster-identifier [DBクラスター識別子]

{
    "DBClusters": [
        {
            "Capacity": 4, 
            "MasterUsername": "DBマスターユーザ", 
            "ReadReplicaIdentifiers": [], 
            "VpcSecurityGroups": [
                {
                    "Status": "active", 
                    "VpcSecurityGroupId": "VPCのセキュリティグループID"
                }
            ], 
            "HostedZoneId": "xxxx", 
            "EngineMode": "serverless", 
            "Status": "available", 
            "MultiAZ": false, 
            "LatestRestorableTime": "YYYY-MM-DDThh:mm:ss.SSSZ", 
            "PreferredBackupWindow": "hh:mm-hh:mm", 
            "DBSubnetGroup": "DBサブネットグループ", 
            "AllocatedStorage": 1, 
            "BackupRetentionPeriod": 1, 
            "PreferredMaintenanceWindow": "date1:hh1:mm1-date2:hh2:mm2", 
            "Engine": "aurora", 
            "Endpoint": "クラスターエンドポイント", 
            "EarliestRestorableTime": "YYYY-MM-DDThh:mm:ss.SSSZ", 
            "IAMDatabaseAuthenticationEnabled": false, 
            "ClusterCreateTime": "YYYY-MM-DDThh:mm:ss.SSSZ", 
            "EngineVersion": "5.6.10a", 
            "DeletionProtection": true, 
            "ScalingConfigurationInfo": {
                "MinCapacity": 2, 
                "AutoPause": true, 
                "MaxCapacity": 4, 
                "SecondsUntilAutoPause": 300
            }, 
            "DBClusterIdentifier": "DBクラスター識別子", 
            "DbClusterResourceId": "cluster-xxxx", 
            "DBClusterMembers": [], 
            "DBClusterArn": "arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster:DBクラスター識別子", 
            "KmsKeyId": "arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:key/xxxx", 
            "StorageEncrypted": true, 
            "AssociatedRoles": [], 
            "DBClusterParameterGroup": "default.aurora5.6", 
            "AvailabilityZones": [
                "ap-northeast-1d", 
                "ap-northeast-1a", 
                "ap-northeast-1c"
            ], 
            "Port": 3306
        }
    ]
}

참조문서는 기타 rds 하위 명령을 확인할 수 있습니다.

3. 고객과의 연결


3.1.사전 준비


응용 프로그램에 연결하기 전에 DB 클라이언트 도구를 사용하여 테이블 또는 사용자를 만듭니다.
또한 mysql 명령을 통해 DB 클러스터에 연결하는 가상 시스템을 준비합니다.(mysiql 명령 등maridb-client 포장 등을 통해 획득)
DB 클러스터가 시작되지 않았을 때 시작 처리가 있기 때문에 연결에 시간이 좀 걸립니다.유휴 상태가 지속되자 DB 클러스터가 다시 중지되었습니다.
mysql -u DBマスターユーザ -p -h クラスターエンドポイント
데이터를 저장하는 데이터베이스를 정의합니다.(aws rds create-db-Cluster를 통해 DB 컬렉션을 만들 때도 데이터베이스를 만들 수 있음)
MySQL [none]> create database Database名 character set utf8;
MySQL [none]> show databases;
만든 데이터베이스에 접근할 수 있는 사용자를 만듭니다.
MySQL [none]> create user ユーザ名1 identified by 'パスワード';
MySQL [none]> grant all on Database名.* to ユーザ名1;
만든 사용자는 mysql 명령을 사용하여 표를 다시 연결하고 정의합니다.
MySQL [none]> use Database名
MySQL [Database名]> create table testTable (testText text, testValue int, time timestamp);
MySQL [Database名]> show tables;

3.2.애플리케이션에서 접속


이번엔 파이톤으로 해봐.Python에서 DB 그룹에 연결하기 위해 MySQL용 프로그램 라이브러리 (mysql-connector-python) 를 설치했습니다.
pip install mysql-connector-python -t .
간단한 DB 연결을 확인하기 위해 다음 코드를 만듭니다.이번에는 DB를 연결하는 데이터 저장과 제출 정도의 연결 간편 확인만 했고 이외에 필요한 설치도 했다.(AWS Lambda에서 코드를 실행할 때, Zip 형식으로 포장하여 lambda에 업로드하여 설정합니다. Lambda의 설정은 이번에 생략되었습니다.)
데이터베이스 연결 정보는 환경 변수에 의해 제공된다비밀번호 제대로 지정하는 방법 없나...
lambda_function.py
import os
import mysql.connector
from mysql.connector import errorcode
from datetime import datetime

host =  os.getenv("HOST_NAME")
dbname = os.getenv("DB_NAME")
username = os.getenv("USER_NAME")
password = os.getenv("PASSWORD")

config = {
    'host' : host,
    'user' : username,
    'password' : password,
    'database' : dbname
    }

def lambda_handler(event, context):
    write_table_mysql()
    return 'end of stream data'

def write_table_mysql():
    try:
        conn = mysql.connector.Connect(**config)
    except mysql.connector.Error as err:
        print(err)
    else:
        cursor = conn.cursor()

    cursor.execute('insert into testTable (testText, testValue, time) \
        values (%s, %s, %s)', ('test message', 1, datetime.now().strftime("%y-%m-%d %H:%M:%S")))
    conn.commit()
    cursor.close()
    conn.close()

#lambda_handler(None, None)

mysql-connector-python 참조MySQL 공식 문서.
Datetime 참조공식 문서.
의존 프로그램 라이브러리를 설치할 때 현재 디렉터리에서 mysql-connector와 의존 소프트웨어 패키지를 펼치기 때문에 lambda에 업로드할 때 제작된 코드와 함께 포장합니다.
zip -r lambda_function.zip *

4. 참고 보도


Aurora Serverless MySQL 시작
Amazon Aurora 환경 설정
Amazon Aurora를 사용하기 시작했습니다.
create-db-cluster
MySQL Connector/Python Developer Guide
8.1. 데이터 시간 - 기본 날짜 및 시간 유형

좋은 웹페이지 즐겨찾기