CodeBuild를 사용하여 DocumentDB 작업

개요



CodeBuild를 사용하여 DocumentDB 작업(추출, 삽입, 삭제)

방법 개요
1. DocumentDB와 동일한 VPC 내에서 CodeBuild 생성
2. buildspec.yml 에 DocumentDB를 조작하기 위한 명령을 작성한다
3. CodeBuild 실행

사전 준비



  • public/private subnet이 있는 VPC와 DocumentDB를 준비
  • NAT 게이트웨이 만들기
  • private subnet에서 NAT 게이트웨이로의 경로 설정
  • private subnet 내에 DcoumentDB 만들기



  • CodeBuild가 읽을 코드의 위치를 ​​준비
  • 일반적으로 CodeCommit이 자주 이용된다


  • 해보자



    1. DocumentDB와 동일한 VPC 내에서 CodeBuild 생성



    VPC에 CodeBuild 프로젝트를 만듭니다.
    작성할 때는 다음 사항에 주의한다.
  • 반드시 private subnet에 작성
  • (참고: Amazon Virtual Private Cloud에서 AWS CodeBuild 사용 )

  • 보안 그룹을 올바르게 설정

  • 2. buildspec.yml에 DocumentDB를 조작하기위한 명령 작성



    buildspec.yml
    version: 0.2
    
    phases:
      install:
        commands:
          # mongo-shellをインストールする
          - echo -e "[mongodb-org-4.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc" | tee /etc/yum.repos.d/mongodb-org-4.0.repo 
          - yum install -y mongodb-org-shell
      build:
        commands:
          # SSL接続のために公開鍵をダウンロードしておく
          - wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
          # 対話シェルが使えないので、script.jsを読み込ませてる
          # TODO: ${}にはそれぞれ適当な値を入れること
          - mongo --ssl --host ${HOST} ${DB_NAME} --sslCAFile rds-combined-ca-bundle.pem --username ${USERNAME} --password ${PASSWORD} < script.js
    

    script.js의 코드 예 (자세한 설명은 다른 기사에서)

    script.js
    /* --------------------------------- */
    /* コレクション一覧 */
    /* --------------------------------- */
    db.getCollectionNames();
    
    /* --------------------------------- */
    /* ドキュメント内容 */
    /* --------------------------------- */
    // collectionを参照。存在しない場合は勝手に作成される。
    collection = db.getCollection(<collection_name>);
    collection.find();
    
    /* --------------------------------- */
    /* データを挿入 */
    /* --------------------------------- */
    collection = db.getCollection(<collection_name>);
    
    doc_1 = {
        name: "bar",
        favarite: "foo"
    };
    collection.insert(doc_1);
    
    /* --------------------------------- */
    /* データを削除 */
    /* --------------------------------- */
    collection = db.getCollection(<collection_name>);
    
    collection.remove({name: "bar"});
    

    일단 CodeCommit의 폴더 구성
    ./
     - buildspec.yml
     - script.js
    

    3. CodeBuild 실행


    buildspec.yml 의 내용이 실행됨
    그런 다음 DocumentDB에 대해 script.js

    좋은 웹페이지 즐겨찾기