使用CodeBuild来操作DocumentDB

总结

使用 CodeBuild 操作 DocumentDB(提取、插入、删除)的方法。

在以下的步骤中,对方法进行简述:
1. 在与DocumentDB相同的VPC内创建CodeBuild。
2. 在buildspec.yml文件中编写用于操作DocumentDB的命令。
3. 执行CodeBuild。

预先准备

image.png

我试一试

在与DocumentDB相同的VPC内创建CodeBuild。

在VPC上创建CodeBuild项目时,请注意以下事项。

    • 必ずprivate subnetに作成する

(参考:Amazon Virtual Private Cloud で AWS CodeBuild を使用する)

セキュリティグループを適切に設定

在buildspec.yml 文件中编写用于操作DocumentDB的命令。

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文件中的代码示例(详细说明在其他文章中)。

/* --------------------------------- */
/* コレクション一覧 */
/* --------------------------------- */
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的操作。

广告
将在 10 秒后关闭
bannerAds