きり丸の技術日記

技術検証したり、資格等をここに残していきます。

WSLでAWS Vaultを使えるように設定する

副業でWSL1にAWS Vaultを導入する必要があったので、その手順をメモします。なお、こちらのIssueコメントを読めば、9割完了です。英語が読める人はこちらを参考にしてください。

環境

  • WSL1
    • Ubuntu 20.04.2 LTS (Focal Fossa)
  • AWS Vault
    • v6.3.1

※ WSL2でも同じような手順で設定している記事を見かけたので、できると思います。

前提条件

  • AWS CLIが既に使えること
    • 動作確認に使用します。インストール方法は公式を参考にしてください。

      方法

      AWS Vaultをダウンロードする

AWS Vaultをダウンロードします。最新のバージョンはこちらから確認できますので、必要なバージョンを指定してください。

AWS_VAULT_VERSION="v6.3.1" && \
wget -O aws-vault "https://github.com/99designs/aws-vault/releases/download/${AWS_VAULT_VERSION}/aws-vault-linux-amd64"

AWS Vaultをインストールする

AWS Vaultをインストールします。

sudo mv aws-vault /usr/local/bin/ && \
sudo chmod +x /usr/local/bin/aws-vault

AWS Vaultが依存しているツールのPassとGnuPGを導入する

AWS VaultはOSの機密情報ストアを使用するため、暗号化と復号を行うPassGnuPGを導入する必要があります。

sudo apt-get update && sudo apt-get install -y pass gnupg

暗号化/復号に使用する鍵を生成する

鍵を生成します。インタラクティブに名前とメールアドレス、パスワードが問われますので、画面に沿って入力してください。パスワードを問われる画面はログに残りませんが、画面通りに入力していくとこのような文言が出力されます。

gpg --gen-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: kirimaru
Email address: hogehoge@sample.com

pub   rsa3072 2021-07-03 [SC] [expires: 2023-07-03]
      844E426A53A64C2A916CBD1F522014D5FDBF6E3D
uid                      kirimaru <hogehoge@sample.com>
sub   rsa3072 2021-07-03 [E] [expires: 2023-07-03]

鍵をPassに登録する

生成した鍵のpubを登録します。

pass init 844E426A53A64C2A916CBD1F522014D5FDBF6E3D

暗号化/復号でパスワードを入力できるようにする

GPG_TTYの設定を行うことで、暗号化/復号のパスワードを入力する画面に遷移できます。

~/.bashrcに次の設定した後、source ~/.bashrcを実行して設定してください。

export GPG_TTY=$(tty)

もし設定しない場合、鍵を登録して5分間は有効期限内なので、検証自体は可能ですが、5分経過すると有効期限が切れて検証ができなくなります。設定しておきましょう。

# 対応しなかった時のメッセージ
gpg: decryption failed: No secret key

AWS Vaultのプロファイルを作成する

AWS Vaultのプロファイルを作成します。今回はstagingプロファイルを使用します。

aws-vault add staging

AWS VaultのプロファイルにMFAデバイスのARNを登録する

~/.aws/configに先ほど登録したプロファイルが記載されています。こちらに、MFAデバイスのARNを追記します。

MFAデバイスのARNは、マネジメントコンソールのIAMのユーザー詳細ページから確認できます。

[profile staging]
mfa_serial=arn:aws:iam::999999999999:mfa/kirimaru

AWS Vaultの動作確認をする

作成したプロファイルとAWS CLIのコマンドを組み合わせて実行します。

ここまで正しく設定できていれば、鍵のパスワード入力画面と6桁のMFA認証コードを確認され、正しい結果が返ってくるはずです。

# aws-vault exec プロファイル -- コマンド
aws-vault exec staging -- aws s3 ls
Enter token for arn:aws:iam::999999999999:mfa/kirimaru: {6桁のMFA認証コード}

終わりに

WSL と AWS Vaultで調べてたのであまり記事が見つからなかったのですが、Linux と AWS Vaultで調べたらたくさん記事が出てきました。基本的に今後もWSLではなく、Linuxで調べた方が解決が早そうです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考

f:id:nainaistar:20210703134201p:plain

Javaで比較するときはObjects.equalsを使うのがオススメ

小ネタ。正直、記述量が増えるので好き嫌いで言うと嫌いですが、NullPointerException(以後、NPE)が発生しなくなるので安全に処理したい時はオススメです。

環境

  • Java
    • 15

出現時期

  • java.util.Objects
    • Java1.7

Java7の時代からあります。分かりづらいですが、Objectではないです。Objectsです。

使い方

Objects.equals(Object a, Object b);

どの辺が便利か

安全に比較することができます。特にプリミティブ型のラッパークラス(Integer, Boolean)等はnullになりうります。もし、nullと比較してしまうと、NPEが発生してしまいます。

@Test
void test_01() {
  boolean param1 = true;
  Boolean param2 = null;
  try {
    var actual = param1 == param2;
    Assert.fail();
  } catch (NullPointerException e) {
  } catch (Exception e) {
    Assert.fail();
  }
}

Objects.equalsを使用すると、NPEが発生せずにfalseが返却されます。

@Test
void test_02() {
  boolean param1 = true;
  Boolean param2 = null;
  assertThat(
      Objects.equals(param1, param2)
  ).isEqualTo(false);
}

なお、当然ですがObjects.equalsに渡す前にNPEが発生する場合は、NPEになります。

static class Nested {
  public Boolean bool;
  public Nested(Boolean bool){
    this.bool = bool;
  }
}

@Test
void test_05() {
  boolean param1 = true;
  Nested param2 = null;
  try {
    Objects.equals(param1, param2.bool);
    Assert.fail();
  } catch (NullPointerException e) {
  } catch (Exception e) {
    Assert.fail();
  }
}

ソースコード

終わりに

Java7が出た時期は2011年7月ですので、もうこちらのクラスを知っている人は多いと思います。

地味ですが、NPEを回避できますのでぜひ使ってみて下さい。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

f:id:nainaistar:20210620141146p:plain

AI-900: Microsoft Azure AI Fundamentalsの合格記

掲題の通り、「AI-900: Microsoft Azure AI Fundamentals」を受験し、合格したので合格記を記します。

前提

  • JavaのエンジニアでAIで何かをやった経験は無し
  • Azureでの開発経験あり
    • 構築はしてないので、一からやれと言われたら分からない
  • AZ-900は所持
  • AI系のG検定は所持
  • E検定は未所持

合格日

2021年06月25日(金)

合格した時の点数

1000点満点で、871点でした。

700点が合格ラインですので、余裕を持った合格でした。AWSのCLFの時と似た点数ですが、CLFと違って消去法での選択ではなく積極的に選択できたので、合格するだろうという自信をもつことができていました。

どんな試験か

公式引用。

Azure AI Fundamentals 認定資格の受験者は、機械学習 (ML) および人工知能 (AI) の概念と関連する Microsoft Azure サービスの基礎知識を持っている必要があります。

この認定資格は、一般的な ML および AI ワークロードの知識と、それらを Azure に実装する方法を示す機会です。

この認定資格は、技術的背景と非技術的背景の両方を持つ候補者を対象としています。データ サイエンスとソフトウェア エンジニアリングの経験は必要ありませんが、プログラミングに関する一般的な知識や経験があれば好ましいです。
分野 試験における比重
AI ワークロードと考慮事項について説明する 15-20%
Azure での機械学習の基本原則について説明する 30-35%
Azure のコンピューター ビジョン ワークロードの機能について説明する 15-20%
Azure の Natural Language Processing (NLP) ワークロードの機能について説明する 15-20%
Azure での会話型 AI ワークロードの機能について説明する 15-20%

https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4wAEF

公式ページ

docs.microsoft.com

受験料

受験料金:12,500円(税別)

普通に受けたら、上記の値段です。しかし、Microsoft Virtual Training DaysでAI-900のトレーニングを受けると、無料で受けられるバウチャーを貰えます。個人的にも、こちらのトレーニングを受けてから受験することを推奨します。

受験会場

全国のテストセンターにて通年受験が可能です。

自宅での受験はできるようでしたが、回線問題と環境問題に不安があったので、テストセンターで受験しました。

問題数/出題形式/試験時間

  • 問題数
    • 51問
  • 出題形式
    • 択一選択問題
      • 複数の選択肢から1つの正答を選びます
    • 複数選択問題
      • 複数の選択肢から複数の正答を選びます
      • それぞれが独立して加算されます
  • 試験時間
    • 60分

選択問題なので、試験時間よりも早く終わります。20分くらいで終わりました。

出題範囲

公式ページを参考にしてください。

難易度

覚えること自体は少ないので、AIに慣れた人であれば簡単だと思います。

ただ、言葉の定義の違いが分からずに混乱してしまい、整理に苦労しました。何がしたいのかがわからないと、Azureのサービスの使い分けられないので、混乱していました。

特に次の違いは納得するまでに時間がかかりました。


  • 包括性
    • inclusion
  • 公平性
    • fairness

英語で理解することで違いを納得しました。


  • computer vision
  • custom vision

customがついているので、custom visionは独自の物体(自社製品等)を分析したい時に使うものだという納得をしました。逆のcomputer visionは有名なブランドや汎用的な人の分析等で使用するのだと納得しました。

合格に向けた勉強時間と対策

勉強時間:2週間。

エンジニアなら2週間くらい、未経験でも1-2ヵ月くらい勉強すれば受かるかも、と公式のトレーニングで言っていました。

Microsoft Virtual Training Days

Microsoft Virtual Training Daysを受けました。

まずはこちらで概要を覚えるのがいいです。無料でAI-900を受けられるバウチャーも貰えるので、必須だと思います。

MS Learn

公式で何を覚えたらよいか、というラーニングパスを用意してくれています。

ただ、公式で用意しているサンドボックス環境が個人的にはよくわからなかったです。英語でよくわからないし、手順通りに動かすことはできても、何がどう動いたのかわからず…。ちゃんと英語ができる人であれば、じっくり動かすといいと思います。

あと、AZ-900もそうでしたが、ラーニングパスが試験ページに一々戻らないと確認できないので、まずは自分用のAI-900のコレクションを作っておくことをオススメします。

日本語で説明しているものはなかったのですが、英語で説明しているものは見つかったので日本語字幕にして暇なときに追っていました。

ただ、YouTubeに付きっ切りになるくらいなら、MS Learn等で勉強したほうがいいと思います。

他者の合格記

具体的にどんな問題がでたか、という点は書けないのですが、どんな勉強をしたかという点が書いてあって非常にためになりました。

Exam Topics

英語ですが、AI-900に似た問題を受けることができます。選択問題は画像になっているようで、自力で翻訳する必要があって大変ですが、精度はよかったです。

終わりに

他者の合格記を見ると勉強法が参考になります。

パッと「AI-900 合格」で調べると同じような合格記が並んでいるので、この記事にはあまり新規性はありませんが、同じようにAI-900を受ける人の参考になると嬉しいです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。