読者です 読者をやめる 読者になる 読者になる

DBXX エンジニアブログ

中国・大連でふわっとITしています

【阿里云】AliyunCLIをはじめよう

阿里云には、阿里云命令行工具(aliyuncli)というものがあります。
AWSにおけるAWS CLIに相当するものです。
これを使うと阿里云の設定変更などがコマンドラインで可能になるのでしょうか。
早速、試してみましょう。

1. pipでaliyuncliをインストール

安装阿里云命令行工具_快速开始_命令行工具 CLI-阿里云产品文档

こちらを見るとWindows,Mac,Linux/Unixに対応しているようです。
今回、私はMac OS X(El Capitan)にインストールしてみました。
pipで一発でインストールできました。

~ $ sudo pip install aliyuncli
Password:
You are using pip version 6.0.3, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting aliyuncli
  Downloading aliyuncli-2.1.2.tar.gz (59kB)
    100% |################################| 61kB 19kB/s 
Requirement already satisfied (use --upgrade to upgrade): colorama<=0.3.3,>=0.2.5 in /Library/Python/2.7/site-packages (from aliyuncli)
Collecting jmespath<=0.7.1,>=0.7.0 (from aliyuncli)
  Downloading jmespath-0.7.1-py2.py3-none-any.whl
Installing collected packages: jmespath, aliyuncli
  Found existing installation: jmespath 0.6.1
    Uninstalling jmespath-0.6.1:
      Successfully uninstalled jmespath-0.6.1

  Running setup.py install for aliyuncli
    changing mode of build/scripts-2.7/aliyun_zsh_complete.sh from 644 to 755
    changing mode of /usr/local/bin/aliyun_zsh_complete.sh to 755
    Installing aliyun_completer script to /usr/local/bin
    Installing aliyuncli script to /usr/local/bin
Successfully installed aliyuncli-2.1.2 jmespath-0.7.1

これでaliyuncliコマンドが使えるようになりました。

~ $ aliyuncli --version
2.1.2

2. AccessKeyの作成

2-1. AccessKeysメニューをクリックします。

f:id:jampm:20160412010557p:plain

2-2. 继续使用AccessKeyをクリックします。

f:id:jampm:20160412010608p:plain

今回はスルーしますが、安全のためにRAM(Resource Access Management)の使用をオススメされています。
RAMはAWSにおけるIAMに相当するものようです。

2-3. 创建Access Key(Access Keyを作成)をクリックします。

f:id:jampm:20160412010617p:plain

2-4. 同意并创建(同意して作成)をクリックします。

f:id:jampm:20160412010637p:plain

2-5. Access KeyとAccess Key Secretができました

f:id:jampm:20160412010647p:plain

3. aliyuncli configure

Access Keyの設定をします。

リージョンも選択する必要があるようです。 今回は深圳(cn-shenzhen)にします。

~ $ aliyuncli configure
Aliyun Access Key ID [None]: [****************]
Aliyun Access Key Secret [None]: [****************]
Default Region Id [None]: cn-shenzhen
Default output format [None]: json

ファイルができているのがわかります。

~ $ ls .aliyuncli/
configure   credentials oascredentials  osscredentials

4. pipでaliyun-python-sdk-ecsをインストール

既にaliyuncliをインストールし、リージョン情報、AccessKey、AccessKeySecretも設定しました。
これでawscliが使えそうな気がしますが、実際やってみると何も応答が来ません。
さらにPython SDKをインストールする必要があります。

help.aliyun.com

上記URLに載っていますが、例えばaliyuncliでECSを操作するには、aliyun-python-sdk-ecsをインストールする必要があります。

~ $ sudo pip install aliyun-python-sdk-ecs
Password:
You are using pip version 6.0.3, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting aliyun-python-sdk-ecs
  Downloading aliyun-python-sdk-ecs-2.1.0.tar.gz
Collecting aliyun-python-sdk-core>=2.0.2 (from aliyun-python-sdk-ecs)
  Downloading aliyun-python-sdk-core-2.0.26.tar.gz
Installing collected packages: aliyun-python-sdk-core, aliyun-python-sdk-ecs
  Running setup.py install for aliyun-python-sdk-core
  Running setup.py install for aliyun-python-sdk-ecs
Successfully installed aliyun-python-sdk-core-2.0.26 aliyun-python-sdk-ecs-2.1.0

5. aliyuncli Ecs

aliyuncli Ecsには、下記のサブコマンドがあります。

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

ActivateRouterInterface                     | AddTags   
AllocateEipAddress                          | AllocatePublicIpAddress
ApplyAutoSnapshotPolicy                     | AssociateEipAddress
AssociateHaVip                              | AttachDisk
AuthorizeSecurityGroup                      | AuthorizeSecurityGroupEgress
BindIpRange                                 | CancelAutoSnapshotPolicy
CancelCopyImage                             | CancelPhysicalConnection
CancelTask                                  | CheckAutoSnapshotPolicy
CheckDiskEnableAutoSnapshotValidation       | ConfigVersion
ConnectRouterInterface                      | CopyImage 
CreateAutoSnapshotPolicy                    | CreateDisk
CreateHaVip                                 | CreateImage
CreateInstance                              | CreatePhysicalConnection
CreateRouteEntry                            | CreateRouterInterface
CreateSecurityGroup                         | CreateSnapshot
CreateVSwitch                               | CreateVirtualBorderRouter
CreateVpc                                   | DeactivateRouterInterface
DeleteAutoSnapshotPolicy                    | DeleteDisk
DeleteHaVip                                 | DeleteImage
DeleteInstance                              | DeletePhysicalConnection
DeleteRouteEntry                            | DeleteRouterInterface
DeleteSecurityGroup                         | DeleteSnapshot
DeleteVSwitch                               | DeleteVirtualBorderRouter
DeleteVpc                                   | DescribeAccessPoints
DescribeAutoSnapshotPolicy                  | DescribeAutoSnapshotPolicyEx
DescribeClusters                            | DescribeDiskMonitorData
DescribeDisks                               | DescribeEipAddresses
DescribeEipMonitorData                      | DescribeHaVips
DescribeImageSharePermission                | DescribeImageSupportInstanceTypes
DescribeImages                              | DescribeInstanceAttribute
DescribeInstanceMonitorData                 | DescribeInstancePhysicalAttribute
DescribeInstanceStatus                      | DescribeInstanceTypeFamilies
DescribeInstanceTypes                       | DescribeInstanceVncPasswd
DescribeInstanceVncUrl                      | DescribeInstances
DescribeIntranetAttributeKb                 | DescribeIpRanges
DescribeLimitation                          | DescribePhysicalConnections
DescribeRegions                             | DescribeResourceByTags
DescribeRouteTables                         | DescribeRouterInterfaces
DescribeSecurityGroupAttribute              | DescribeSecurityGroups
DescribeSnapshots                           | DescribeTagKeys
DescribeTags                                | DescribeTaskAttribute
DescribeTasks                               | DescribeVRouters
DescribeVSwitches                           | DescribeVirtualBorderRouters
DescribeVirtualBorderRoutersForPhysicalConnection   | DescribeVpcs
DescribeZones                               | DetachDisk
EnablePhysicalConnection                    | ExportImage
ExportInstance                              | ImportImage
ImportInstance                              | JoinSecurityGroup
LeaveSecurityGroup                          | ModifyAutoSnapshotPolicy
ModifyAutoSnapshotPolicyEx                  | ModifyDiskAttribute
ModifyEipAddressAttribute                   | ModifyHaVipAttribute
ModifyImageAttribute                        | ModifyImageShareGroupPermission
ModifyImageSharePermission                  | ModifyInstanceAttribute
ModifyInstanceNetworkSpec                   | ModifyInstanceSpec
ModifyInstanceVncPasswd                     | ModifyInstanceVpcAttribute
ModifyIntranetBandwidthKb                   | ModifyPhysicalConnectionAttribute
ModifyRouterInterfaceAttribute              | ModifyRouterInterfaceSpec
ModifySecurityGroupAttribute                | ModifySnapshotAttribute
ModifyVRouterAttribute                      | ModifyVSwitchAttribute
ModifyVirtualBorderRouterAttribute          | ModifyVpcAttribute
ReInitDisk                                  | RebootInstance
RecoverVirtualBorderRouter                  | ReleaseEipAddress
ReleasePublicIpAddress                      | RemoveTags
RenewInstance                               | ReplaceSystemDisk
ResetDisk                                   | ResizeDisk
RevokeSecurityGroup                         | RevokeSecurityGroupEgress
ShowVersions                                | StartInstance
StopInstance                                | TerminatePhysicalConnection
TerminateVirtualBorderRouter                | UnassociateEipAddress
UnassociateHaVip                            | UnbindIpRange

試しにこの間作成したVPC情報を取得してみます。

~ $ aliyuncli Ecs DescribeVpcs
{
    "Vpcs": {
        "Vpc": [
            {
                "Status": "Available", 
                "VRouterId": "vrt-94mwlumg1", 
                "Description": "", 
                "UserCidrs": {
                    "UserCidr": []
                }, 
                "RegionId": "cn-shenzhen", 
                "CreationTime": "2016-04-05T14:35:54Z", 
                "VSwitchIds": {
                    "VSwitchId": [
                        "vsw-94qick519"
                    ]
                }, 
                "VpcId": "vpc-94xat46m5", 
                "VpcName": "vpc_test", 
                "CidrBlock": "192.168.0.0/16", 
                "IsDefault": false
            }
        ]
    }, 
    "TotalCount": 1, 
    "PageNumber": 1, 
    "RequestId": "EA39EDA4-71D0-46E5-BEFD-6190A6FB919F", 
    "PageSize": 10
}

おまけ、リージョンについて

aliyuncliを使えるようになると、下記コマンドでリージョン情報が取得できます。

~ $ aliyuncli Ecs DescribeRegions --output table
-------------------------------------------------------
|                   DescribeRegions                   |
+-----------+-----------------------------------------+
|  RequestId|  A35D47EE-7DEF-4617-A8C5-33B7CFFB87A9   |
+-----------+-----------------------------------------+
||                      Regions                      ||
|+---------------------------------------------------+|
|||                     Region                      |||
||+-------------------+-----------------------------+||
|||     LocalName     |          RegionId           |||
||+-------------------+-----------------------------+||
|||  亚太 (新加坡)         |  ap-southeast-1             |||
|||  华南 1 (深圳)        |  cn-shenzhen                |||
|||  华北 1 (青岛)        |  cn-qingdao                 |||
|||  华北 2 (北京)        |  cn-beijing                 |||
|||  华东 2 (上海)        |  cn-shanghai                |||
|||  美东 (弗吉尼亚)        |  us-east-1                  |||
|||  香港               |  cn-hongkong                |||
|||  华东 1 (杭州)        |  cn-hangzhou                |||
|||  美西 (硅谷)          |  us-west-1                  |||
||+-------------------+-----------------------------+||