Alibaba Cloud CLI を使って ECS のバックアップを取る

こんにちは。クララオンラインの吉村です。

前回は云が「1分間バックアップ! ――Alibaba CloudにおけるECSのバックアップ方法」をご紹介しました。

今回は、同じことを Alibaba Cloud CLI を使った方法でやってみましょう。

 

Alibaba Cloud CLI のインストール

ECSのバックアップについて書きたいので、Alibaba Cloud CLI のインストール方法は割愛します。

リクエストあれば別途記事にします。

 

ECSを操作するRAMを作成

Alibaba Cloud をなんでも操作できる権限のRAMユーザを作っても良いですが、今回はECSだけフル権限のRAMユーザを作ります。

1.コンソールよりResource Access Management (RAM)を選択

ram_001

コンソール画面

 

2.左メニュー「ユーザー」を選択して画面遷移後に、右上の「新規ユーザー」をクリック

コンソール画面

 

3.ユーザ作成です。以下のようになってます。

項目 説明
 ログイン名 必須項目

ユーザーのログイン名を入力しましょう。

1 ~ 64 文字で指定する必要があります。使用できる文字は、大小文字の英字、数字、”.”、”_”、”-” です

表示名 Alibaba Cloud で見える表示名です。

必要に応じて分かりやすい表示名をつけましょう。

文字数は 1 ~ 128 文字で、漢字、平仮名、片仮名または、小文字の英字、数字、”@”、”.”、”_”、”-” を使用できます。

補足 Alibaba Cloud で見える説明文です。メモ代わりに。
チェックボックス AccessKeyを自動生成するかどうかのチェック

 

コンソール画面

 

4.AccessKeyを保存

Alibaba Cloud CLI でこちらのAccessKeyを利用するので、必ず保存しておきましょう。

(AKと略すのか!)

コンソール画面

 

5.作成した「ecs-user」にアクセス権限を付与

許可をクリック

コンソール画面

今回は「AliyunECSFullAccess」権限を付与します。右側の窓にポリシーを移動したら「OK」

コンソール画面

 

これでRAMの準備完了です。

 

ECSを操作するCLIを設定

Alibaba Cloud CLI とRAMの設定が終わったので、CLIで先ほど作った ecs-user を操作しましょう。

ちなみに、私の CLI 操作環境は

  • CentOS 6
  • python 2.7 (pyenv 利用)
  • Aliyun CLI 2.1.9 (pip インストール)

となります。

 

まずは、ecs-user のプロファイルを設定します。

リージョンの選択はこちらを参考にしてください。

https://jp.alibabacloud.com/help/doc-detail/40654.htm


$ aliyuncli configure --profile ecs-user
Aliyun Access Key ID [None]: YOUR_ACCESS_KEY
Aliyun Access Key Secret [None]: YOUR_ACCESS_KEY_SECRET
Default Region Id [None]: ap-northeast-1
Default output format [None]: json

# 確認

$ cat ~/.aliyuncli/configure
[profile ecs-user]
output = json
region = ap-northeast-1

次に ecs を操作するSDKをインストールします。

Alibaba Cloud CLI の場合には、最初からすべてのSDKをインストールしている場合と、必要なものを後からインストールする場合があります。

今回私はpipでインストールしているため、後からインストールするパターンでした。


$ pip install aliyun-python-sdk-ecs

# 確認

$ aliyuncli ecs help
usage: aliyuncli <command> <operation> [options and parameters]
[ecs] valid operations as follows:

# 操作できること一覧がずらーっと表示されます。省略。

 

 

CLIでスナップショットを作成

それでは、操作していきます。

これからの操作全てに、–profile ecs-user をつけますが、これは別のRAMユーザとの操作を明示的に分けるためです。


# Snapshot の一覧を表示

$ aliyuncli ecs DescribeSnapshots --profile ecs-user

# json形式で出てきます。

# json を整形する場合には、jq などを必要に応じて利用してください。


# Snapshot を作成する

$ aliyuncli ecs CreateSnapshot --DiskId YOUR_DISK_ID --SnapshotName Test-Aliyuncli-SnapShot --profile ecs-user
{
"SnapshotId": "s-6we8rr4go7cld0ea0g5t",
"RequestId": "FFE9C702-F548-419D-BEFB-55004D952F15"
}

# しばらくするとSnapshotが作成されています。

$ aliyuncli ecs DescribeSnapshots --profile ecs-user

"Snapshots": {
"Snapshot": [
{
"Status": "accomplished",
"ProductCode": "",
"Description": "",
"Tags": {
"Tag": []
},
"SnapshotName": "Test-Aliyuncli-SnapShot",
"SourceDiskType": "system",
"CreationTime": "2018-04-03T03:05:32Z",
"SnapshotId": "xxxxxxxxxxxx",
"SourceDiskId": "xxxxxxxxxxxx",
"SourceDiskSize": 40,
"SourceStorageType": "disk",
"Encrypted": false,
"Usage": "none",
"Progress": "100%"
},

 

CLIでイメージを作成

続いて、スナップショットから イメージを作ってみましょう。


# カスタムイメージを確認

$ aliyuncli ecs DescribeImages --profile ecs-user | jq '.Images.Image[] | select (.ImageOwnerAlias == "self")'

 

# Snapshotからイメージを作成

$ aliyuncli ecs CreateImage --SnapshotId YOUR_SNAPSHOT_ID --ImageName Test-Aliyuncli-Image --profile ecs-user

{
"RequestId": "xxxxx-xxxx-xxxx-xxxxxxxx",
"ImageId": "xxxxxx"
}

# しばらく待つと、カスタムイメージが出来ています。

$ aliyuncli ecs DescribeImages --profile ecs-user | jq '.Images.Image[] | select (.ImageOwnerAlias == "self")'

 

それでは以上です。

 

次回もお楽しみに。

あわせて読みたい