新しくなった ConoHa を使用してみる【登録編】

GMOインターネット株式会社の「ConoHa」が5月にリニューアルしたということで、登録してみました。

リニューアル前の ConoHa (以下、旧 ConoHa)ユーザーであり、これまでも活用術などを紹介してきましたが、新 ConoHa と旧 ConoHa は全く違うシステムのため、新規登録が必要になります。
VPS やオブジェクトストレージも、自動で移行はされません。旧 ConoHa もこれまで通り利用することができます。

キャラクターの美雲このはちゃん(@MikumoConoHa)のデザインだけでなく、サービスもいろいろ変わったことがあるのですが、詳しいことはプレスリリースや ConoHa のページをご覧ください。

ストレージが全て SSD になり高速になった一方、容量が全プラン 50GB 固定と少なくなっています。
大きくて変更のないファイルはオブジェクトストレージの利用も考えた方がいいですね。

登録

早速登録してみました。
ブログの読者の方は、こちらのリンクから ConoHa に登録すると、1000円分のクーポンがもらえます。

メールアドレスとパスワードを入力。

[H27.06.03] ConoHa パスワード

9~70文字で半角英数と記号を混在させてくださいとのこと。
以前のConoHaのパスワードは半角英数だけで良かったので、セキュリティも向上しているようです。

なお、登録後のログインは「ログイン」画面でログインしてください。
こちらは「ConoHaをはじめる」と書いてあるように登録画面となります。

登録時に、クレジットカードか ConoHa チャージで 500 円の入金が必要です。

本人確認は、電話か SMS が選べます。
美雲このはちゃん(上坂すみれさん)から電話がかかってきますので、ここでは電話認証を選ぶことをおすすめします。

サーバーリスト画面
ここからサーバーを追加できますが、左側のメニューにも「DNS」や「API」といった新しいメニューも表示されていますね。

[H27.06.13] ConoHa サーバーリスト

今回は、ここまでにします。
これからいろいろ試してみたいと思います。

公式サイトから登録は可能ですが、現在友達の紹介キャンペーンを実施しているとのことで、こちらのリンクから ConoHa に登録していただくと、1000円分のクーポンがもらえますので是非こちらから登録してみてください。

ConoHaでWindows 10 Technical Preview 動作検証 ~その2・ベンチマーク

2018/04/25 追記

この記事は、2014年時点の ConoHa のサービス内容となります。
2018/04/24 リリースされた Windows Server 2016 については下記の記事をご確認ください。

ConoHa for Windows Server がリリースされたので、Windows Server 2016 の動作検証をしてみた

追記終わり


先日、VPSサービスのConoHaにWindows 10 Technical Previewをインストールしたところまで紹介しました。
今回はスペックについて調査してみました。

標準で提供されているWindows Server以外のOSを利用することはライセンス的にできませんが、技術的な確認を行うためインストールしています。
Techinal Preview版のため、今後のバージョンアップにより仕様・動作等が変更になる可能性があります。

“ConoHaでWindows 10 Technical Preview 動作検証 ~その2・ベンチマーク” の続きを読む

ConoHaでWindows 10 Technical Preview 動作検証 ~その1・インストール

2018/04/25 追記

この記事は、2014年時点の ConoHa のサービス内容となります。
2018/04/24 リリースされた Windows Server 2016 については下記の記事をご確認ください。

ConoHa for Windows Server がリリースされたので、Windows Server 2016 の動作検証をしてみた

追記終わり


IDCFクラウドにWindows 10 Technical Previewをインストールしたという話を紹介しましたが、今回はConoHaでも動作検証してみたいと思います。

最初の会員登録や、推奨する使い方(Linux)については公式サイトや公式ブログで公開されている記事をご覧ください。

OSの決定

クラウド環境におけるWindowsライセンスの扱いについてですが、よくあるお問い合わせよりライセンスは持ち込めないことが明記されています。

なお、お客様にてWindowsをご用意いただきインストールする場合、技術的には動作いたしますが、
Windowsの提供元である Microsoft社のライセンス違反となってしまう場合がございますご利用は
お控えいただきますようお願い致します。
※一部体験版などライセンス違反とならない場合があります。
詳細につきましては、 Microsoft社へお問い合わせください。
Windowsは利用可能ですか?

ConoHaのWindowsプランではWindows Server 2008 R2、2012 R2が選べますのでそちらを使えば全く問題はありませんが、今回は動作検証ということでWindows 10 Technical Previewを導入したいと思います。

システム要件は以下の通りです。

  • CPU: 1 GHz 以上
  • メモリ: 1 GB (32 ビット) または 2 GB (64 ビット)
  • ハード ディスクの空き容量: 16 GB
  • グラフィックス カード: Microsoft DirectX 9 グラフィックス デバイス (WDDM ドライバー付き)
  • Microsoft アカウントとインターネット アクセス

本来ならWindows Server Technical Previewを導入したいところですが、64bit版しかなく、メモリ容量が1GBである最安プランでは利用できないので、Windows 10の32bit版を使用しました。

今回は動作検証であり、有効期限が来年の4月までと制限されているため、このOSにおいて長期的な運用の予定はありません。

仮想マシンの作成

CPU 2コア、メモリ 1GB、ディスク 100GBのプランです。
ディスクの構成については、初期設定に従い基本ディスクは20GB、追加ディスクは80GBに設定しました。

ISOファイルのアップロード

以下の二つのISOファイルをダウンロードし、「ISOイメージのアップロード」の説明に従いFileZillaでアップロードします。

Virtio(準仮想化)を無効(完全仮想化)にすると、Virtioのドライバーはインストールしなくていいのですが、WindowsプランはVirtuoが有効から変更できないということでVirtioはONに設定します。
参考:VPSの準仮想化(Virtio)とはなんですか?

前回の記事である「ConoHaにFileZillaで接続できない問題の解決法」で紹介しましたが、ppkファイルを日本語を含むフォルダに保存してしまったため、ここで何日間か足止めしてしまいました。

インストール

マウスも利用できるため、インストール作業自体はスムーズにできますが、Virtioのドライバがないため、インストールするディスクが選択できません。

[H26.11.05]Installing Windows 10 TP on ConoHa

D:\WIN8\X86フォルダを選択し、「Red Hat VirtIO SCSI controller」を選択することでドライが場インストールされ、ディスクが表示されるようになりました。ここでWindows 10のISOファイルに戻し、インストールを続行します。

また、ネットワークのドライバも読み込まれないため、Microsoft アカウントではなく、ローカルアカウントの作成となります。

デスクトップ画面

デスクトップ画面が表示された後、デバイスマネージャより認識されていないドライバのインストールを行いました。
Unknown Deviceが一つ残っていますが、結局よく分からないのでインストールしていません。

ビルドの更新も行いました。現時点でISOファイルの9841から9860にバージョンアップできます。

[H26.11.05]Windows 10 TP on ConoHa

このは通信室よりダウンロードした壁紙を表示しています)

ConoHaにFileZillaで接続できない問題の解決法

err

このブログでは最近、IDCFクラウドについて紹介してきましたが、それより前からConoHaユーザーでもあります。

今回、公式サイトの「ISOイメージのアップロード」の説明に従いFileZillaをインストールし、ダウンロードしたkeyファイルをppkファイルに変換し、ISOイメージアップロード用の接続先に接続を試みたところ
Disconnected: No supported authentication methods available (server sent: publickey,keyboard-interactive)
というエラーが表示されてしまいました。

“ConoHaにFileZillaで接続できない問題の解決法” の続きを読む

ConoHaのオブジェクトストレージをPowerShellで使ってみた ~その2・ファイルの送受信

はじめに

前回の記事では、PowerShellとC#を用いてトークンを含むJSONデータの取得まで出来ました。
今回は、PowerShellにおいて、JSONデータからのトークンの抽出、コンテナリストの確認、オブジェクトリストの確認、オブジェクトのアップロード、オブジェクトのダウンロードについて紹介します。

今回のサンプルから、PowerShell 3.0以降で動作します。Windows 8以降の方は問題ありませんが、Vistaや7でバージョンが古い場合は最新版をインストールしてください。(Windows 7→4.0、Vista→3.0

参考リンク

まず、公式サイトでの概要や説明のページを紹介します。

次に、ConoHaのオブジェクトストレージ利用者のブログです。

前回の記事のコメント

前回の記事にTonghyun Kim様よりコメントをいただきました。

Powershellなら、Invoke-RestMethodはどうでしょう。

今回は、今後更新するであろうC#のコードと同じHttpWebRequestを利用していますが、Invoke-RestMethodを使用するとシンプルになりそうなので、そちらを使ったサンプルも公開したいなと思います。

サンプルコード

※予めコンテナ「test」を作成してください。
今回、PowerShellのfunctionを使用したり、echoではなく正式なWrite-Outputを使用するなど、追加した機能以外においても変化しています。
ConvertFrom-JsonはJSONを扱うことがあれば、覚えておいて損は無いと思います。

トークンは24時間有効なので、デバッグなどであればコード中に書き込み、トークン取得を省略することも出来ます。

# 関数の定義

# API認証をおこないトークンを取得します
function getToken([string] $tenantname, [string] $username, [string] $password, [string] $authurl){
    $req = [Net.HttpWebRequest]::Create($tokensurl)
    $req.Method = "POST"
    $req.ContentType="application/json";
    $req.Accept = "application/json";
    # 認証情報の送信
    $datastr = "{""auth"": {""tenantName"": """ + $tenantname + """, ""passwordCredentials"": {""username"": """ + $username + """, ""password"": """ + $password + """}}}";
    $data = [System.Text.Encoding]::ASCII.GetBytes($datastr);
    $reqStream = $req.GetRequestStream();
        $reqStream.Write($data, 0, $data.Length);
    $reqStream.Close();
    # トークンの受信
    $res = $req.GetResponse();
        $resStream = $res.GetResponseStream();
            $sr = new-object System.IO.StreamReader($resStream, [System.Text.Encoding]::ASCII);
                $result = $sr.ReadToEnd();
            $sr.Close();
        $resStream.Close();
    $res.Close();
    # JSONからTokenの取得
    $tokens = $result | ConvertFrom-Json
    $token  = $tokens.access.token.id;
    return $token
}

# コンテナリストの確認
function getContainer([string]$token, [string] $endpoint){
    $req = [Net.HttpWebRequest]::Create($endpoint)
    $req.Method = "GET"
    $req.Headers.Add("X-Auth-Token: "+$token)
    $res = $req.GetResponse();
        $resStream = $res.GetResponseStream();
            $sr = new-object System.IO.StreamReader($resStream, [System.Text.Encoding]::ASCII);
                $result = $sr.ReadToEnd();
            $sr.Close();
        $resStream.Close();
    $res.Close()
    Write-OutPut "コンテナリスト"
    Write-OutPut $result
}

# オブジェクトリストの確認
function getObjectList([string]$containerName, [string]$token, [string] $endpoint){
    $req = [Net.HttpWebRequest]::Create($endpoint+"/"+$containerName)
    $req.Method = "GET"
    $req.Headers.Add("X-Auth-Token: "+$token)
    $res = $req.GetResponse()
        $resStream = $res.GetResponseStream()
            $sr = new-object System.IO.StreamReader($resStream, [System.Text.Encoding]::ASCII)
                $result = $sr.ReadToEnd()
            $sr.Close()
        $resStream.Close()
    $res.Close()
    Write-OutPut "ttt のオブジェクトリスト"
    Write-OutPut $result
}

# オブジェクトのアップロード
function putObject([byte[]]$data, [string]$fileName, [string]$containerName, [string]$token, [string]$endpoint){
    $req = [Net.HttpWebRequest]::Create($endpoint+"/"+$containerName+"/"+$fileName)
    $req.Method = "PUT"
    $req.Headers.Add("X-Auth-Token: "+$token)
    $req.SendChunked = "true" # Content-Length 省略のため
    $reqStream = $req.GetRequestStream();
        $reqStream.Write($data, 0, $data.Length);
    $reqStream.Close();
}

# オブジェクトのダウンロード
function getObject([string]$fileName, [string]$containerName, [string]$token, [string]$endpoint){
    $req = [Net.HttpWebRequest]::Create($endpoint+"/"+$containerName+"/"+$fileName)
    Write-OutPut $req.RequestUri
    $req.Method = "GET"
    $req.Headers.Add("X-Auth-Token: "+$token)
    $res = $req.GetResponse()
        $resStream = $res.GetResponseStream()
            $sr = new-object System.IO.StreamReader($resStream, [System.Text.Encoding]::ASCII)
                $result = $sr.ReadToEnd()
            $sr.Close()
        $resStream.Close()
    $res.Close()
    Write-OutPut "ファイルの内容"
    Write-OutPut $result
}

# Public
function postContainerReadPublic([string]$containerName,[string]$token, [string] $endpoint){
    $req = [Net.HttpWebRequest]::Create($endpoint+"/"+$containerName)
    $req.Method = "POST"
    $req.Headers.Add("X-Auth-Token: "+$token)
    $req.Headers.Add("X-Container-Read: .r:*,.rlistings")
    $res = $req.GetResponse();
        $resStream = $res.GetResponseStream();
            $sr = new-object System.IO.StreamReader($resStream, [System.Text.Encoding]::ASCII);
                $result = $sr.ReadToEnd();
            $sr.Close();
        $resStream.Close();
    $res.Close()
    Write-OutPut "Result "
    Write-OutPut $result
}

# ユーザー設定
# 入力するAPI情報は https://www.conoha.jp/guide/guide.php?g=46
$authurl = "API Auth URL"
$tokensurl = $authurl + "/tokens"
$tenantname = "テナント名"
$username =  "ユーザー名"
$password = "パスワード"
$endpoint = "オブジェクトストレージエンドポイント"
# 24時間有効なので、デバッグ時はこちらに入力すると良いかも
$token = ""

# トークンの取得
if($token -eq "") {
    $token = getToken $tenantname $username $password $authurl
    Write-OutPut "getToken"
    Write-OutPut $token
}
# コンテナリストの確認
getContainer $token $endpoint
# オブジェクトリストの確認
getObjectList "test" $token $endpoint
# オブジェクトのアップロード
[byte[]]$upData = 0x43,0x6f,0x6e,0x6f,0x48,0x61
putObject $upData "conoha.txt" "test" $token $endpoint
# オブジェクトのダウンロード
getObject "conoha.txt" "test" $token $endpoint

# Public
#postContainerReadPublic "test" $token $endpoint

バイナリ形式のデータもアップロードできるかの確認のため、あえてbyte[]で書いています。

このサンプルコードにおいて、Publicと書かれた部分は、コンテナの属性を変更して誰でも読み取り可能にするコードです。
通常ならコードにあるとおり、ダウンロードにも認証が必要ですが、コンテナ単位で一般公開用、プライベート用が変更可能です。
ConoHaなら転送量の制限がないので、気にせずに公開することが出来ます。