Aurora Severless Data API를 사용해 봅니다.

이 기사는 무엇입니까?



Aurora Severless Data API를 이용한 개발 활동 중에 눈치채는 것을 수시로 기재합니다.
Data API에 대해서는, 작년(2019년)에 도쿄 리전에서 방금 출시되었기 때문에, 일본어의 정보가 적은 상황입니다. 이 기사가 향후 이용하시는 분의 도움이 되면 다행입니다.

RDS 사용 환경


  • 지역: ap-northeast-1
  • 역할: 서버리스
  • 엔진: Aurora PostgreSQL

  • Aurora Severless (PostgreSQL 엔진)를 사용해 보는 것을 깨닫습니다.



    최소 용량을 1Aurora Capacity Unit (ACU) 에서 설정할 수 있는 것은 MySQL 엔진만.



    PostgreSQL 엔진의 최소 용량은 2ACU.
    Amazon Aurora Serverless가 단일 유닛 용량 및 새로운 스케일링 옵션에 대한 지원 시작 」라고 하는 발표를 듣고, 선택하는 엔진에 관계없이 1ACU로부터 설정할 수 있다고 생각하고 있었습니다만

    MySQL과 호환되는 Aurora Serverless DB 클러스터의 최소 용량을 1 Aurora Capacity Unit(ACU)으로 설정할 수 있습니다.

     라는 것입니다

    플레이스홀더에 건네주는 값의 데이터형이 적다. ARRAY형, JSON형은 2020년 5월 시점에서 비 서포트.



    ExecuteStatement 액션 의 공식 문서를 읽을 때, 요청 구문은 언뜻 보면 ARRAY 유형을 지원하는 것처럼 설명되어 있지만 다음주의 사항이있었습니다.

    Note
    Array parameters are not supported.

    걱정이 되었기 때문에 시도에 boto3에서 자리 표시자로 ARRAY 형식의 값을 전달하도록 ExecuteStatement를 실행했는데 "Array parameters are not supported"오류가 발생했습니다. 조사한 결과, GitHub에서도 Issues 으로 Open 되어 있어 AWS 엔지니어가 다음과 같이 코멘트하고 있기 때문에 향후 ARRAY 형식을 지원할 것으로 생각합니다.

    The SDK team has already things set up, its up-to the service team the time they take to implement it. Will update if they implement the feature.

    워크 어라운드인 대응이 됩니다만, 다음과 같은 기술을 하는 것으로 ARRAY형의 플레이스홀더에 값을 건네주는 것이 가능합니다.
    tags = ['tag1', 'tag2']
    
    rds_client = boto3.client('rds-data')
    parameters = {
        'secretArn': 'your_secret_arn',
        'resourceArn': 'your_resource_arn',
        'sql': INSERT INTO sample_tbl (id, tags) VALUES (:id, :tags::text[]),
        'parameters': [
            {'name':'id', 'value':{'stringValue': '001'},
            {'name':'tags', 'value':{'stringValue': '{' + ','.join(tags) + '}'}}
        ],
        'database': 'your_database_name',
    }
    
    response = rds_client.execute_statement(**parameters)
    

    트랜잭션의 타임 아웃치는 3분.



    BeginTransaction액션 의 공식 문서에 의하면, 발행한 트랜잭션(transaction) ID가 사용되지 않는 경우, 트랜잭션(transaction)는 3 분으로 타임 아웃 합니다. 커밋되기 전에 시간 초과하면 자동으로 롤백이 수행됩니다.
    또한 한 번 사용된 트랜잭션은 최대 24시간 유효하며, 24시간 후에 자동으로 종료되며 롤백이 실행됩니다.

    Important
    A transaction can run for a maximum of 24 hours. A transaction is terminated and rolled back automatically after 24 hours.
    A transaction times out if no calls use its transaction ID in three minutes. If a transaction times out before it's committed, it's rolled back automatically.

    좋은 웹페이지 즐겨찾기