おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

EC2インスタンスを立てるのにハマった話

一昨日、アマゾンからメールが来ました。

曰く、ハード的に壊れたからもうすぐ止まるよ(もう止まってるかもしれないけど)。だから早く退避してね。

 

とおおよそこのような内容のメールでした。

 

それでインスタンスを立て直そうと思ったのですが、スムーズにいかなかったので書いておきます。

 

はまりどころは3カ所くらい。

 

1つ目に既存のスナップショットのアタッチが出来なかったこと

2つ目に、Ubuntu22からは、従前のRSA方式の鍵がデフォルトで使えなくなっていたこと

3つ目に、Ubuntu22では、Ruby2.xがビルドできなかったこと

 

まずスナップショットのアタッチが出来なかった理由。

デフォルトのまま/dev/sdbにつなごうとしたら、インスタンスが立ち上がりませんでした。

ググって出てきたのが、[[BSERV-8477] Bitbucket AMI: Launching with an existing snapshot on /dev/xvdf fails with "Launch failed: snapshotId can only be modified on EBS devices" - Create and track feature requests for Atlassian products.](https://jira.atlassian.com/browse/BSERV-8477)

ここでは/dev/xvdfにつながらないと言っているのですが、エラーメッセージが同じだったので、半信半疑で/dev/sdfにしてみました。

 

あっさり起動できました。

 

2番目。AMIにUbuntu22を選んでインスタンスを立てたのですが、今までつながってた鍵でteratermからつながらない。

1つ目のエラーで色々いじっててubuntu20+スナップショット無しの時はつながったので(その時はまだつながる/つながらない理由がわからなかった)、もっと混乱してた。

またググって出てきたのが、

[【AWS】【UbuntuUbuntu 22.04 LTSにSSH接続/ログインできない - 自由気ままに書いちゃおう](https://www.guri2o1667.work/entry/2022/06/21/%E3%80%90AWS%E3%80%91%E3%80%90Ubuntu%E3%80%91Ubuntu_22.04_LTS%E3%81%ABSSH%E6%8E%A5%E7%B6%9A/%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)

新しい鍵をED25519で作り直しました。

 

3番目。やっとこれで直るーと思って油断してたら、ruby2.7がビルドできない…なぜ…

またググって、[Failed to build ruby 2.7.5 on ubuntu 22.04 · rbenv/ruby-build · Discussion #1940](https://github.com/rbenv/ruby-build/discussions/1940)

これが出てきました。

Unfortunately, Ubuntu 22.04 only provides OpenSSL 3.0, which is supported only by Ruby versions 3.1+.

Older versions of Ruby need OpenSSL 1.1, which doesn't come with newer Ubuntu out of the box.

って言うことでした。

 

とりあえず3.2を入れました(アプリもそのまま動いたから良かった

 

2番目と3番目のことで自分の中ではUbuntu22は地雷と認定したのでした。

 

生活インフラ・ネットワークインフラ屋さんのみなさん、こんな疲れることを毎日ありがとうございます。

 

皆さんのおかげで家で仕事できます。

 

 

RubyでJSONの構造を出力する

Rustの勉強をはじめたのですが、要素を順番に全部確実に覚えていく…というやり方はつらいので、ある程度必要な事をさらっと読みつつ、作りたいものを作りながら、わからないところを探して埋めていく方法に切り替えました。

 

そして、WebAPIを使って、JSONを読み込んでみようというのをはじめたところ、Rustでは大変面倒で、JSONの構造をStructとVectorを使って定義しておかないといけないことがわかりました。(型言語なので当たり前ですね…)

 

そこで、使い慣れたRubyで、読み込みたいJSONの構造を書き出すプログラムを書いてみました。

 

ちょっとバグというか仕様というか、Arrayのが付いていません。もしも使う場合はそこだけ気をつけてください。

追記:2022/12/12 21:48 privateになっていたようなので、パブリックにしました。

さらに配列のに対応させました。

 

gist.github.com

 

UbuntuでRust入門

Rustを少しずつ覚えたいと思います

最初のうち、自分流の順番で書いていく予定です

rustのインストール

インストール - The Rust Programming Language 日本語版

ここを見て入れていくわけですが、ubuntuの場合、snapでcurlを入れているとうまくいきませんので、下記2行を実行してください。

sudo snap remove curl
sudo apt install curl

これで、インストール出来るはずです。

参考:20.04 - curl: (23) Failure writing output to destination - Ask Ubuntu

hello, world

Hello, World! - The Rust Programming Language 日本語版

インストールが出来たら、次はおなじみHello, worldです。

コンパイルエラーが出ました。

ビルドエラーのスクリーンショット

これは、sudo apt install build-essentialすると、ビルドツールが一式インストールされて、コンパイルできるようになります。

以下、次回。(このページを更新します)

構文

変数

条件分岐

ループ