FJCT Tech blog

富士通クラウドテクノロジーズ公式エンジニアブログです

富士通クラウドテクノロジーズ

FJCT/Tech blog

10分で出来る!ニフクラ上でニフクラ操作を簡単に自動化してみる (dockerによるニフクラCLI実行環境とサンプルコード)

この記事は 富士通クラウドテクノロジーズ Advent Calendar 2019 の8日目の記事です。

昨日は @tunakyonn さんの 「M3DBの知見をまとめてみた」 でした。
なぜM3DB?と思ったのですが、prometheusの監視データ保存先として考えているんですね。
自分も、若くて勢いのあるプロダクトをサービスへ取り入れる際は、改変頻度やクオリティに苦労しながらも、ワクワクしながら取り組んでいます。
是非上手くいって欲しいです。

はじめに

仕事では、ITインフラストラクチャサービスの企画・設計・開発・運用を担当している @ysaotome です。

最近、サービス利用者より「 ニフクラCLI の使い方を説明して欲しい」とご相談頂く事が何度かありましたので、改めてPhotonやdockerを使った簡単な使い方を纏められればと思います。

f:id:ysaotome:20191208003808p:plain

「自動化」という言葉が叫ばれて久しいですが、国内の実態として、様々な理由により中々進んでない様に感じています。要因の一つとして、いきなり高度な自動化にチャレンジして挫折してしまう。といった事が挙げられると思います。そんな要因の対策として、先ずはCLIを用いたコマンドベースで手軽に手作業の簡略化から体感してみるのは如何でしょうか。

今回は「ニフクラ上でニフクラCLI実行環境を作る」方法と「ニフクラCLIを使った自動化サンプル」をステップ・バイ・ステップで紹介出来ればと思います。
特に躓かなければ10分程度でニフクラCLIが実行出来る様になります。

  • 本記事は 2019/12/07記載時点の情報です。

構築環境

実行環境としてdockerホストとdockerイメージを利用します。
※環境構築してCLI実行するだけならば、特にdocker自体の知識は不要です。

ニフクラ上でニフクラCLI実行環境を作る

ニフクラコントロールパネルへログイン

VMware Photon 3.0イメージでサーバーを作成

  • 「コンピューティング」の左メニューから「サーバー」を選択し「サーバー作成」ボタンを押下

    f:id:ysaotome:20191208004611p:plain
    「サーバー作成」を押下

  • 「サーバー作成」ウィザードの「01 イメージ選択」にて、検索ボックスに photon os 3.0 と入力して表示される「VMware Photon OS 3.0」を選択

    f:id:ysaotome:20191207212355p:plain
    VMware Photon OS 3.0イメージを選択

  • 「サーバー作成」ウィザードの「02 サーバータイプ選択」にて、配備する「ゾーン」を選択、タイプは「c-small」を選択

    • ゾーンは特に拘り等無ければ、現在は east-11 か east-12 へ作成すると良い。
    • e-miniでも良いが、c-smallの方がストレス無く実行出来ます。
      f:id:ysaotome:20191207220134p:plain
      配備するゾーンとタイプを選択
  • 「サーバー作成」ウィザードの「03 サーバー設定」にて、「サーバー名」に clitest 、「メモ」に NIFCLOUD CLI TEST を入力、「料金プラン」は 従量 を選択、「SSHキー」と「ファイアウォール」は必要に応じて新規作成(作成時はそれぞれウィザード画面内で「SSHキー作成」「ファイアウォールルール作成」を忘れずに押下する事)、「ネットワーク」は特似変更せず、「確認」ボタンを押下

    • ファイアウォールは「INルール」で SSH (22/TCP)が開いていれば必要十分
    • ここで作成してダウンロードされる [SSHキー名]_private.pem というキーファイルと、設定した パスフレーズ は接続時に利用するので記憶しておきます

f:id:ysaotome:20191207221819p:plain
SSHキーとファイアウォールも必要に応じて作成

  • 「サーバー作成」ウィザードの「04 確認」にて、内容に問題無い事を確認したら、「作成する」ボタンを押下

    f:id:ysaotome:20191207222538p:plain
    作成するサーバーの最終確認

  • サーバー作成が開始されます。

    • 作成するゾーンによりますが、2~3分程度で作成されます。
      f:id:ysaotome:20191207222936p:plain
      VMware Photon 3.0がセットアップされたサーバーを作成中
  • サーバー作成後の情報を確認

    • サーバーに割り当てられたグローバルIPアドレスを確認(キャプチャ上マスクしていますが、 27.133.xxx.xxx となっている所です)
      f:id:ysaotome:20191207223640p:plain
      サーバー作成後の画面

SSHクライアント(RLogin)で作成したサーバーへ接続

  • SSHクライアント(RLogin)を起動
    • 「ファイル」メニューの「サーバーに接続」から「新規」を選択
    • 接続設定画面を次の通り設定
      • 「エントリー」に設定名として clitest 、「ホスト名(サーバーIPアドレス)」に先ほど確認した サーバーに割り当てられたグローバルIPアドレス(27.133.xxx.xxx) 、「ログインユーザー名」に root 、 「ユーザー認証の方式によりパスワード or パスフレーズ」に SSHキー作成時の パスフレーズ を入力
      • SSH認証鍵」ボタンを押下して、SSHキー作成時にダウンロードされた [SSHキー名]_private.pem ファイルを選択
      • 全て選択したら「OK」を押下して保存
        f:id:ysaotome:20191207224300p:plain
        VMware Photon 3.0へ接続する設定を入力
    • 「Server Select」画面で「clitest」を選択して「OK」を押下
    • 最初の接続時のみ「公開鍵の確認」画面が表示されるので、内容に問題なければ「接続する」を押下
      • 内容の確認方法は気になる人は別途調べると良いです
        f:id:ysaotome:20191207225528p:plain
        公開鍵の確認
  • 設定に問題無ければログインしてコマンドプロンプトが表示されます。
    f:id:ysaotome:20191207225813p:plain
    ログイン後のコマンドプロンプト

ニフクラCLI環境構築済dockerイメージを利用可能にする

  • dockerホストを利用出来る様に設定する
    • systemctl enable dockersystemctl start docker を実行してdockerを利用出来る様にします
root@photon-machine [ ~ ]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
root@photon-machine [ ~ ]# systemctl start docker
  • 実行確認の docker version コマンドでdockerのバージョン確認。下記の様に表示されれば問題なし。
root@photon-machine [ ~ ]# docker version
Client:
 Version:           18.06.1
 API version:       1.38
 Go version:        go1.10.7
 Git commit:        e68fc7a
 Built:             Mon Feb  4 16:35:01 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.7
  Git commit:       e68fc7a
  Built:            Mon Feb  4 16:36:56 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  • ニフクラコントロールパネルへ戻り、API実行に必要な「アクセスキー」と「シークレットキー」を入手する

    • ニフクラコントロールパネル上部メニューの自分のIDを押下し、メニューから「アカウント管理」を押下
      f:id:ysaotome:20191207230537p:plain
      アカウント管理を表示する
    • 自分のアカウントを押下して「アクセスキー」を表示してメモ
      f:id:ysaotome:20191207230749p:plain
      アクセスキー表示
    • さらに自分のアカウント枠内の「表示」ボタンを押下して「シークレットアクセスキー」を表示してメモ
      f:id:ysaotome:20191207231128p:plain
      シークレットアクセスキー表示
  • SSHクライアント(RLogin)へ戻りメモした「アクセスキー」と「シークレットアクセスキー」を入れた設定ファイルを作成する

  • cat コマンドにてファイル名 nifcloud-cli.env で下記内容のファイルを作成する
NIFTY_CLOUD_URL=https://jp-east-1.computing.api.nifcloud.com/api/
NIFTY_ACCESS_KEY_ID=メモした「アクセスキー」
NIFTY_SECRET_KEY=メモした「シークレットアクセスキー」
  • 実行例
root@photon-machine [ ~ ]# cat <<ENV > nifcloud-cli.env
> NIFTY_CLOUD_URL=https://jp-east-1.computing.api.nifcloud.com/api/
> NIFTY_ACCESS_KEY_ID=XXXXXXXXXXXX
> NIFTY_SECRET_KEY=XXXXXXXXXXXXXXXXXXX
> ENV
  • NIFCLOUD CLIをテストで実行してみる
    • nifty-describe-regions で利用可能なリージョン一覧を取得してみる
    • 最初の実行時のみ、dockerイメージの取得後に実行される
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions 
Unable to find image 'tily/niftycloud-computing-cli:latest' locally
latest: Pulling from tily/niftycloud-computing-cli
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
5b816da257b4: Pull complete 
c19b88db8f77: Pull complete 
040817bae98e: Pull complete 
a30bb200c4e6: Pull complete 
Digest: sha256:1740dd1d9519f2e2a04dbccb3d20c249fefcfe65a365ccc59b0c27809636e88c
Status: Downloaded newer image for tily/niftycloud-computing-cli:latest
REGION  east-1     jp-east-1.computing.api.nifcloud.com    true 
REGION  east-2     jp-east-2.computing.api.nifcloud.com    false
REGION  east-3     jp-east-3.computing.api.nifcloud.com    false
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com    false
REGION  west-1     jp-west-1.computing.api.nifcloud.com    false
  • 2回目の実行はdockerイメージの取得処理が無いのでシンプル
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions 
REGION  east-1     jp-east-1.computing.api.nifcloud.com    true
REGION  east-2     jp-east-2.computing.api.nifcloud.com    false
REGION  east-3     jp-east-3.computing.api.nifcloud.com    false
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com    false
REGION  west-1     jp-west-1.computing.api.nifcloud.com    false
  • 以上でニフクラCLIが利用可能になりました

ニフクラCLIを使った簡単なサンプル

  • 利用可能なCLI API一覧
  • オススメ引数
    • --headers 出力形式が表形式または区切り文字による区切り形式の場合、カラムヘッダーを出力します。

リージョン一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-regions --headers
IdType  Name       Endpoint                              Messages  Default
REGION  east-1     jp-east-1.computing.api.nifcloud.com            false  
REGION  east-2     jp-east-2.computing.api.nifcloud.com            true   
REGION  east-3     jp-east-3.computing.api.nifcloud.com            false  
REGION  jp-east-4  jp-east-4.computing.api.nifcloud.com            false  
REGION  west-1     jp-west-1.computing.api.nifcloud.com            false 

ゾーン一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-availability-zones --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-availability-zones --headers
IdType            Name     State      Region  Messages  SecurityGroupSupported  Default
AVAILABILITYZONE  east-11  available  east-1            true                    false  
AVAILABILITYZONE  east-12  available  east-1            true                    true   
AVAILABILITYZONE  east-13  available  east-1            true                    false  
AVAILABILITYZONE  east-14  available  east-1            true                    false 

ファイアウォールグループの設定情報を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --headers
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxDB     applied      メモ         100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxDB     TCP         22        22      IN     CIDR        0.0.0.0/0
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxWEB    applied                        100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         22        22      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         80        80      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         443       443     IN     CIDR        0.0.0.0/0

ファイアウォールグループ名「SSHxWEB」配下のルールを取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
IdType  GroupName  GroupStatus  GroupDescription  GroupRuleLimitUpdate  GroupLogLimitUpdate  GroupLogFilterNetBios  AvailabilityZone
GROUP   SSHxWEB    applied                        100                   1000                 false                  east-13         
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         22        22      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         80        80      IN     CIDR        0.0.0.0/0
IdType      GroupName  IpProtocol  FromPort  ToPort  InOut  SourceType  CidrIp   
PERMISSION  SSHxWEB    TCP         443       443     IN     CIDR        0.0.0.0/0

ファイアウォールグループを新規作成する

  • ゾーン「east-13」配下に、ファイアウォールグループ名「SSHxWEB」で新規作成する
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
GROUP SSHxWEB east-13

ファイアウォールグループへルールを追加する

  • ルール追加前にファイアゥオールグループを作成しておく必要があります
  • ファイアウォールグループ名「SSHxWEB」へ以下のルールを追加する
インターネット(0.0.0.0/0)からの「80/TCP(http)」「443/TCP(https)」「22/TCP(ssh)」通信許可
ファイアウォールグループ「SSHxDMZ」からの全て(ANY)の通信許可
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"

docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  80  80  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  443  443  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  TCP  22  22  IN  CIDR  0.0.0.0/0

root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
GROUP  SSHxWEB
PERMISSION  SSHxWEB  ANY      IN  GRPNAME  SSHxDMZ

OSイメージ一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "all" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "all" --headers

IdType  ImageID  Name                     Owner       OwnerAlias                          State      Accessibility  ProductCodes  Architecture  ImageType  KernelId  RamdiskId  Platform  RootDeviceType  Description  Redistributable  AvailabilityZone
IMAGE   89       Ubuntu Server 16.04 LTS  niftycloud  FUJITSU CLOUD TECHNOLOGIES LIMITED  available  public                       x86_64        machine                         ubuntu    disk                         true                             
DetailDescription
                 
IdType  ImageID  Name                     Owner       OwnerAlias                          State      Accessibility  ProductCodes  Architecture  ImageType  KernelId  RamdiskId  Platform  RootDeviceType  Description  Redistributable  AvailabilityZone
IMAGE   157      Windows Server 2016 Std  niftycloud  FUJITSU CLOUD TECHNOLOGIES LIMITED  available  public                       x86_64        machine                         windows   disk                         true                             
DetailDescription
・
・
・
・

自分が作成したOSイメージ一覧を取得する

  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers
IMAGE   12350    CentOS5LVM  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         linux     disk                         true             east-1.east-12  
IMAGE   16378    Ubuntu1310x8664  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         ubuntu    disk                         true             east-1.east-13  
・
・
・
・

OSイメージを指定してサーバーを作成する

  • OSイメージを指定するため、事前に対象OSイメージの「ImageID」を取得しておく必要があります
  • SSHキーを指定するため、事前に設定するSSHキー名を取得しておく必要があります
  • プライベートなOSイメージ「Ubuntu1310x8664」からサーバーを作成する(コピーする)
    • 「Ubuntu1310x8664」の 「ImageID」を取得
    • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers  | grep Ubuntu1310x8664
  • 実行結果例
    • 以下の実行結果からイメージ「Ubuntu1310x8664」の「ImageID」は 16378 である事が判る
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-images --owner "self" --headers  | grep Ubuntu1310x8664
IMAGE   16378    Ubuntu1310x8664  self   ニフティクラウドユーザーブログライター  available  private                      x86_64        machine                         ubuntu    disk                         true             east-1.east-13  
  • SSHキーの一覧を取得する
    • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-keypairs --headers
  • 実行結果例
    • 以下の実行結果からSSHキー名が niftycloudTest である事が判る
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-describe-keypairs --headers
IdType   KeyPair         Fingerprint                                                
KEYPAIR  niftycloudTest  88:7b:e4:19:94:6b:a7:89:91:52:6f:95:c2:00:09:6b:f0:ab:4c:57
  • 「ImageID」が 16378 のOSイメージ名 「Ubuntu1310x8664」からサーバーを作成する
    • 引数の意味
      • --instance-id 作成するサーバー名
      • --group 所属するファイアウォールグループ
      • --key 設定するSSHキー名
      • --instance-type 作成するサーバタイプ
      • --accounting-type 課金タイプ 1 (月額課金) | 2 (従量課金)
      • --availability-zone 作成するゾーン名
      • --disable-api-termination APIからのサーバー削除の可否 true (削除不可) | false (削除可)
  • コマンド
docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13"  --disable-api-termination "true" --headers
  • 実行結果例
root@photon-machine [ ~ ]# docker run --env-file nifcloud-cli.env --rm tily/niftycloud-computing-cli nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13"  --disable-api-termination "true" --headers

IdType  GroupId
GROUP   SSHxWEB
IdType    InstanceId   ImageId          DnsName  PrivateDnsName  State    KeyName  LaunchIndex  ProductCodes  InstanceType  LaunchTime                 AvailabilityZone  KernelId  RamdiskId  MonitoringState      IpAddress  PrivateIpAddress  IpAddressV6  PrivateIpAddressV6  SubnetId  VpcId  RootDeviceType  Admin  AccountingType  IpType  PrivateIpType  Architecture  Platform
INSTANCE  UbuntuTest  Ubuntu1310x8664                           pending                                      double-large32          2014-09-12T19:34:30+09:00  east-13                                monitoring-disabled                                                                                 disk                   2               static  static         x86_64        ubuntu 

まとめ

改めて「ニフクラ上でニフクラCLI実行環境を作る」方法と「ニフクラCLIを使った自動化サンプル」をステップ・バイ・ステップで紹介させて頂きました。
最初のステップとしてコマンドラインで手作業を自動化してみるのは如何でしょうか。

また、 GitHubのニフクラプロジェクト では、より複雑な処理を自動化するためのツールを多数公開しています。 例えば nifcloud-sdk-python を利用する事で、よりプログラミングに近い形で実装する事が可能です。

スキルや実現したい事に合わせて選択為ていただければと思います。

参考資料