1/99スタックエンジニアの適当記録

適当なことを書きます。関西で転職したいです。

AWSを触る ~VPC領域の構成~

前回アカウントを登録できたので、VPC領域の構成をやっていきます。

roku28632.hatenablog.com

 

プライベート領域の10.0.0.0/16のVPC領域を作ります。

コンソールメニューより「ネットワーキングとコンテンツ配信」の「VPC」を押下します。

f:id:roku28632:20200429102117p:plain

 

右上からリージョンを選びます。

この記事では「東京リージョン」を使うつもりなので、「アジアパシフィック(東京)」を選んでいます。

そのまま、画面の「VPC」を押下します。

f:id:roku28632:20200429102701p:plain

 

既にデフォルトのVPCが存在してますが、気にせず「VPCの作成」を押下します。

f:id:roku28632:20200429103205p:plain

 

項目に入力します。

参考にしている参考書通りに入力しています。

10.0.0.0~10.225.225.225はプライベートアドレスの範囲なので、10.0.0.0/16はプライベートアドレスです。

入力できたら「作成」ボタンを押下します。

f:id:roku28632:20200429104005p:plain

 

これでVPCができました。

簡単です。

f:id:roku28632:20200429104443p:plain

 

次にVPC領域をサブネットに分割します。

10.0.1.0/24のパブリックと、10.0.2.0/24のプライベートです。

 

メニューのVPCダッシューボードよりサブネットの画面を開きます。

サブネット画面より「サブネットの作成」を押下します。

f:id:roku28632:20200429114756p:plain

 

項目を入れます。

VPCは先程作成した分を指定しています。

CIDRブロックは先程書いたとおり10.0.1.0/24を指定しています。

内容に問題なければ「作成」ボタンを押下します。

f:id:roku28632:20200429115325p:plain

 

できました。

f:id:roku28632:20200429115715p:plain

 

作ったサブネットをインターネットに接続します。

awsではインターネットゲートウェイというのが用意されているので、それを使います。

VPCダッシュボードよりインターネットゲートウェイを開き、「インターネットゲートウェイの作成」を押下します。

f:id:roku28632:20200429172634p:plain

 

名前はつけてもつけなくてもいいようです。

複数ある場合には識別するのに名前をつけたほうがいいでしょうか、今回は1つしか構成しないので、そのまま「作成」を押下します。

f:id:roku28632:20200429172958p:plain

これでインターネットゲートウェイもできました。

f:id:roku28632:20200429173155p:plain

 

あと、作ったインターネットゲートウェイVPCに紐付けます。

先程作ったインターネットゲートウェイはまだ紐付けしていないので「detached」となっています。

対象を選択して、アクションの「VPCにアタッチ」を押下します

f:id:roku28632:20200429173717p:plain

作っておいたVPCを選択し、「アタッチ」を押下します。

f:id:roku28632:20200429174033p:plain

 

これでVPCとインターネットゲートウェイの紐付け設定もできました。

続いて外部アクセスできるように、ルートテーブルを設定します。
ルートテーブルの基本的な考え方は、「X宛への通信をYへ振り分ける、というような経路を決めておく」というものです。
そのうち、ルートテーブルに設定されていない通信すべてがデフォルトゲートウェイの経路になります。
なので、今回の構成でルートテーブルを決めると、内部宛(10.0.0.0/16)への通信とデフォルトゲートウェイ(0.0.0.0/0)への通信です。
内部宛はlocalへ、デフォルトゲートウェイ宛はインターネットゲートウェイへ指定します。

 

まず、ルートテーブルを作成します。

VPCダッシューボードのルートテーブルを開きます。
ルートテーブルの画面の「ルートテーブルの作成」を押下します。

f:id:roku28632:20200429184617p:plain

 

名前を指定して、作ってあるVPCを選び「作成」ボタンを押下します。

f:id:roku28632:20200429185031p:plain

 

これでルートテーブルが作成できました。

f:id:roku28632:20200429185310p:plain

 

ルートテーブルの内容を設定します。

先程作成したルートテーブルを選択し、下部のルートタブから「ルートの編集」を押下します

f:id:roku28632:20200429185752p:plain

 

「ルートの追加」を押下し、内容を変更します。
内容としては先程書いたとおりの2つです。
入力できたら「ルートの保存」を押下します。

f:id:roku28632:20200429190357p:plain

これでルートが編集できました。
「閉じる」を押下します。

f:id:roku28632:20200429190646p:plain

VPCダッシュボードよりサブネットを開きます。
作ってあるサブネットを選択し、下部のルートテーブルタブで「ルートテーブルの関連付けの編集」を押下します。

f:id:roku28632:20200429191531p:plain

 
先程作ったルートテーブルを選択しすると、下部に内容が表示されます。
問題なければ「保存」ボタンを押下します。

f:id:roku28632:20200429191928p:plain

これでサブネットとルートテーブルの紐付けも完了です。

f:id:roku28632:20200429192203p:plain

ここまでで、VPC領域を作り、外部と内部にアクセス可能なサブネットを構築しました。
 
次回はサーバの構築へと続きます。
 

AWSを触る ~プロローグ~

同僚にawsの本を借りたので、これからやっていきます。

www.amazon.co.jp

 

まず、冒頭読んだ感じだと、アプリケーションエンジニアがインフラを知ろう的な本であるようです。

かなり初心者向けに基本的な内容が書かれています。

本編のAWSもこのレベルだとするならば、本当に基礎の基礎の内容な気がしてきます。

 

さらにすこし読み進めました。

「t2.micro」が1年無料のため、これを使うとあります。

発売されてから少し年数が経っているので、今も変わっていないのか気になるところです。

調べてみました。

dev.classmethod.jp

このサイトも2019.09.22で更新が最後です。

 

公式のリンクがありました。

公式なので間違いなさそうです。

1年感はある程度無料枠があるようです。

サーバの起動などは、意図しない請求などがないように、これを見ながらやったほうがよさそうです。

aws.amazon.com

 

サーバ乞食として、ノーマネーで進めていきます。

 

とりあえず、全体像の図があったので、自分で一旦模倣してみました。

 

f:id:roku28632:20200427103421p:plain

 緑のところの「C数字」がChapter番号です。

なので、この後はCharpter2のVPCの構築部分になります。

 

VPCではプライベートアドレス10.0.0.0/16を割り当てます。

 

と、進めようと思ったところ、そもそもAWSのアカウント作成部分の話が出てきません。

アカウントは取得している前提のようです。

といったところで、別記事で進めていこうと思います。

 

アカウント作成の記事はこちらです。

roku28632.hatenablog.com

AWSを触る ~アカウント登録と最低限のセキュリティ設定まで~

AWSでアカウントを作ってみたいと思います。

一応やりながら下に流れを書いていこうと思いますが、こちらに公式がありますので、これからやる人は公式を見たほうがいいと思いますので、参考にしてもらえればと思います。

aws.amazon.com

 

AWSのアカウント取得

googleで調べたらすぐ出てきますが、AWSのサイトへアクセスします。

クラウドならアマゾン ウェブ サービス 【AWS 公式】

無料アカウント作成ボタンを押下します。

f:id:roku28632:20200427110141p:plain

メールアドレスとパスワード、アカウント名を入力して「続行」ボタンを押下します。

(記載されているように12ヶ月は無料枠が使えます。)

f:id:roku28632:20200427110501p:plain

連絡先情報を入力します。

個人で使う場合はパーソナルです。

住所など半角英数字で入れるのに違和感がありますが、本社が米国なので、そういうものなのでしょう。

f:id:roku28632:20200427111616p:plain

次に進むとクレジット登録があります。

変な請求が来ないかとドキドキしながら登録します。

ちにみに、会社の同僚がDBサーバの停止を忘れて、5000円ぐらい請求が来たと言っていました。

利用しないサーバの停止などは注意が必要ですね。

f:id:roku28632:20200427112632p:plain

クレジットを登録するとプランを選びます。

勉強用なのでノールックでベーシックプランを選びました。

f:id:roku28632:20200427113248p:plain

 

この画面が出てくればひとまず登録は完了です。

f:id:roku28632:20200427113523p:plain

最低限やっておくこと

あと、最低限やっておくことがあります。

アカウント登録とセットで絶対やっておきましょう。

これはセキュリティ上必須です。

クレジットを登録しているので、不正アクセスされたらショックです。

公式にも以下は「まずやっておくこと」と書いてあります。

 

アカウントエイリアスの作成
・ルートアカウントのMFA
・管理者用 IAMユーザの作成(ルートアカウントは通常使わないように)

 

あと、最近変わったのか、画面にセキュリティステータスとして5つの項目が用意されています。

これら5つ分やっておくのが無難なようです。

ということで、すべて網羅しておきます。

f:id:roku28632:20200427150024p:plain

(といいつつもルートアクセスキーは初期では存在していないので、4つです。)

なので、合計やっておくことは、3つ+5つですが、2つ重複しているので計5つですね。

 

アカウントエイリアスの作成

やることを一言で書くと「IAMユーザのサインイン画面のURLを変更」です。

ひとまずコンソールログインします。

ルートユーザでログインです。

f:id:roku28632:20200427114208p:plain

トップ画面より「すべてのサービス」から「IAM」を選びます。

f:id:roku28632:20200427114723p:plain

 

IAMユーザのサインインリンクにある「カスタマイズ」を選択します。

f:id:roku28632:20200427115228p:plain

 

好きなエイリアスの文字列を指定すると、画面のURLが変わりました。

 

 

ルートアカウントのMFA

MFAとはMulti-Factor Authenticatioの略で、多要素認証のことです。

よくgoogleサインインなどである、他のデバイスへ発行するワンタイムパスワードです。

IAM画面で中央にあるセキュリティステータスの「ルートアカウントのMFAを有効化」を開き、「MFAの管理」を押下します。

f:id:roku28632:20200427120512p:plain

 

MFAの有効化を押下します

f:id:roku28632:20200427120845p:plain

 

スマホで認証したいので、仮想MFAデバイスを選択します。

f:id:roku28632:20200427123554p:plain

 

登録したいスマホ側にそれ用のアプリが必要です。
今回は「google認証システム」というアプリを使いました。
ちなみに、2台持ちなので、自分は2台登録します。
これも冗長化というやつです。
(登録スマホを紛失しても手立てはあるようですが、めんどくさそうです。)

play.google.com

 

アプリ側からQRコードを読み込んで、表示されるMFAコードを2つ入力します。

「MFAの割り当て」を押下して完了です。

f:id:roku28632:20200427124032p:plain

 

念の為確認してみました。
ログアウトして、再度ログインしようとすると、MFAコードが求められます。
正常に動作していることが確認できました。

f:id:roku28632:20200427124534p:plain

 

管理者用IAMユーザの作成

アカウントを作成した段階でルートユーザという、最上権限を保持したユーザが作られています。
ルートユーザは何でもできてしまうので、念の為管理者用のIAMユーザを使うことで、セキュリティが向上します。

 

IAMのコンソールより、「個々のIAMユーザの作成」の「ユーザ管理」を押下します。

f:id:roku28632:20200427152559p:plain

 

ユーザーを追加を押下します

f:id:roku28632:20200427152834p:plain

 

ユーザ情報を入力して、「次のステップ」を押下します。

プログラムによるアクセスにチェックを入れていますが、利用しない限りは生成しなようほうが無難だったかもしれません。

f:id:roku28632:20200427153534p:plain

 

グループを作って、そのグループにロールを持たせ、グループに参加させることでユーザに権限を与えます。
この辺はWindwosなどと同じ考え方ですね。

あと、この作業をやるにあたって他の人の記事なども参考にしていますが、ユーザ作成とグループ作成を別々にやっているようだったので、今のようにユーザとグループを一緒に一気に作成できるようになったのは最近のようです。
かなり便利になっていると思います。

「グループの作成」を押下します。

f:id:roku28632:20200427154106p:plain

 

グループ名を指定してAdministratorAccessを選択し、「グループの作成」を押下します。

f:id:roku28632:20200427154340p:plain

 

 画面に作成したグループが表示されたことを確認して「次のステップ」を押下します。

f:id:roku28632:20200427154908p:plain

 

 あまりよくわかってませんが、タグのオプションはスキップしました。

f:id:roku28632:20200427155258p:plain

 

内容に問題がなければ「ユーザーの作成」を押下します。

f:id:roku28632:20200427160337p:plain

 

完成画面までたどり着きました。

f:id:roku28632:20200427155523p:plain

 

今作ったIAMユーザにもMFA認証を付与しておきます。

 

IAMコンソールのユーザ画面でユーザ名のリンクを押下します。

f:id:roku28632:20200427162551p:plain

 

認証情報タブのMFAデバイスの割り当てで「管理」のリンクを押下します。

f:id:roku28632:20200427163113p:plain

ここから先はルートユーザに設定したMFAの方法と同じです。

設定すると、「割り当てなし」の表記が文字列に変わります。

 

IAM管理者のMFAの設定もできました。

ようやく終盤まで来た感があります。もう少しです。

 

今回管理者用のIAMユーザを今回作ったので、ルートユーザを使うことは今後基本的になくなるかと思います。

IAMユーザはデフォルトで請求情報へのアクセスができないようです。

請求情報へのアクセス権限も付与しておきます。

右上のルートアカウント名を選択し、「マイアカウント」を押下します。

f:id:roku28632:20200427163944p:plain

 

画面中央あたりにあるIAMユーザ/ロールによる請求情報へのアクセスで「編集」のリンクを押下します。

「IAMアクセスのアクティブ化」にチェックを入れて「更新」ボタンを押下します。

f:id:roku28632:20200427165647p:plain

 

IAMパスワードポリシーの適用

IMユーザのパスワードのポリシーを決めます。
「パスワードポリシーの管理」を押下します。

f:id:roku28632:20200427160950p:plain


「パスワードポリシーを設定する」を押下します。

f:id:roku28632:20200427161642p:plain

 

好きなポリシーを設定します。

とは言え、あまり指定しなければセキュリティ強化したことにならないので、自身の可用性と相談です。

f:id:roku28632:20200427162002p:plain

 

これですべて終わりました!
画面でも「セキュリティステータスが5項目中5項目が完了しています。」とすべて緑色になりましたので、AWS的にもOKというところでしょう。
これでアカウントの作成と基本的なセキュリティ設定は網羅できました。

f:id:roku28632:20200427164658p:plain

 

ようやくAWSを使っていく前段階が完了できましたので、これからAWSをガシガシ使っていこうと思います。

いろんなwebサーバを使ってHelloWorld ~nginx編~その1

今回は前回IISでやった内容のnginx編です。

ちなみに前回のはこちら。

roku28632.hatenablog.com

 

まず、nginxの資材を手に入れます。

今回はここから取得します。

nginx.org

 

ダウンロードするのはstable、安定バージョンの「nginx/Windows-1.18.0」です。

ダウンロードできたら解凍して、すきなところに設置します。

f:id:roku28632:20200425201538p:plain

 

 nginx.exeを実行します。

ん...、一瞬起動したと思ったら何も変化がありません。

おかしいです。

logフォルダをみると、error.logが更新されていました。

logには下記のようにあります。

10013: An attempt was made to access a socket in a way forbidden by its access permissions

ぐぐってみると、どうやら既に使っているポートを利用しようとしているのがまずいようです。

一応何がポートを使っているのか調べてみます。

f:id:roku28632:20200426231346p:plain


 httpデーモンのようです。

あまり、記憶にありませんがとにかく80番ポートは別のサービスが使っていることがわかりましたので、他のポートを使うこととします。

IISのときは8080番を使ってましたので、一応8090番を使うことにします。

conf配下にある、nginx.confのポート部分を変更します。

f:id:roku28632:20200425212141p:plain

 

再度nginx.exeを実行します。

f:id:roku28632:20200425212646p:plain

 

firewallの通信メッセージが表示されたので、プライベートネットワークを指定しておきます。

 

アクセスしてみます。

f:id:roku28632:20200425215753p:plain


できました。

あとは、オリジナルの画面にするだけです。

 

nginx.confにlocaltionという記載があり、パスが書かれています。

デフォルトでは、htmlフォルダがそれにあたります。

index.htmlが既に存在しているので、HelloWorld.htmlを作って格納しました。

HelloWorldは前回と同じく「helloworld html template」と検索したらすぐ出てきたので、それを利用しました。

f:id:roku28632:20200425220654p:plain

 

ではでは、別のPCからアクセスしてみます。

f:id:roku28632:20200426231632p:plain

できました!

IISの時と同じくタブの文字がバグっていますが、やりたいことができました。

 

ではでは。

 

 

Gmailを整理する1 ~メール振り分け~

もはやメールといえばGmail一択という感じでGmailを使っています。
現場は内部メールなのでOutlookですが、自社のメールもGmailだし、個人のメールもGmailです。
むしろ今までなんでやってなかったのかという感じですが、今更ながらGmailを整理しようと思っています。
特に個人のメールがいろんなメールで溢れかえってしまっている状態なので、整理したいです。

振り分け設定する

現場で使っているOutlookではフォルダを作って振り分けしてますが、Gmailにはラベルで振り分けするようです。
ラベル付けすることでそれぞれのメールをグループ化することができるというわけです。

振り分けしたいメールを選択して、右上から「メールの自動振り分け設定」を選択します。
f:id:roku28632:20200426173517p:plain

振り分けの条件を指定できます。
今回は、今開いたメルカリから来たメールをラベル付けするのでこのまま「フィルタを作成」を押下します。
f:id:roku28632:20200426174109p:plain

次にメールが来た時にどういう動作をするかを選びます。
メールを振り分けるだけならば、次の2つを選びます。
受信トレイをスキップ(アーカイブする)
ラベルを付ける:好きなグループ
f:id:roku28632:20200426174604p:plain
受信トレイをスキップする(アーカイブする)を選択しておくことで、受信トイレ自体にはメールを溜めずに、それぞれを受信トレイとは別の場所に格納できるようです。上のOutlookのフォルダを作るイメージのような感じですね。

あと、あとから気が付きましたが、「一致するスレッドにもフィルタを適用する。」にチェックを入れておくことで、既存のメールにも振り分けを適用することができます。
既に受信したメールもラベル化したい場合はコレにもチェックしておきましょう。

これでだいぶ見やすくなりました。
他にも調べてGmailの機能があればやりながらブログに書こうと思っています。

いろんなwebサーバを使ってHelloWorld ~IIS編~その1

会社で同僚が内部のwebサーバを立ててredmineを使っていました。

おもしろそうだったので自分でもやってみようと思います。

一番ベタなのはapacheですが、せっかくなのでいろいろなwebサーバでやってみます。

今回はwindowsIISです。

 

まず、前提条件として自分の環境です。

 

f:id:roku28632:20200425123924p:plain

 

特にこだわった構成でもありませんが、自宅のインターネット用のルータがあり、

あとデスクトップPCとノートPCがあります。

今回はデスクトップPCでwebサーバを立ててみて、ノートPCからそのwebサーバにアクセスできるか試してみようと思っています。

 

webサーバでは簡単なHelloWorldを表示させるようにしてみます。

実際続くか不明ですが、カスタマイズしていけたらいいなと思っています。

 

では、やっていきます。

 

まず、windows10でIISサーバを有効にします。

f:id:roku28632:20200425130325p:plain

windows機能「インターネットインフォメーションサービス」にチェックを入れます。

※一度目やってみるとなぜか、「参照されたアセンブリはシステムにインストールされていません」とエラーになりましたが、もう一度やってみると正常にできたので、深追いはしませんでした。

 

有効化できると、管理ツールに「インターネット インフォメーション サービス (IIS) マネージャー」が表示されるようになります。

f:id:roku28632:20200425130728p:plain

 

実行して、IISマネージャより、左ペインの「ホスト-サイト」で右クリックし、「Webサイトの追加」を実行します。

f:id:roku28632:20200425131128p:plain

 

サイトを指定していきます。

サイト名は適当な名前を入れて、物理パスも好きなところのフォルダを指定します。

物理は以下の下に今回表示する予定の、HelloWorld用のhtmlファイルを保存しておきます。

helloworldのテンプレートは、グーグルで「helloworld html template」とググればすぐに出てきます。

f:id:roku28632:20200425131644p:plain

f:id:roku28632:20200425131820p:plain

 

設定できたらまずwebサーバを構築したデスクトップからアクセスしてみます。

http://localhost:8080/index.html

 

f:id:roku28632:20200425140233p:plain

 

...エラーがでました。

調べてみると、フォルダのアクセス権の問題のようです。

今回設定したアクセス先のフォルダ「localSite」にユーザ「IUSR」でアクセス権を与えます。

f:id:roku28632:20200425140507p:plain

blog.dreamhive.co.jp

 

そして、もう一度アクセスしてみます。

 

(なんかタブが文字化けしてますが、)できました!!

f:id:roku28632:20200425140800p:plain

今は、webサーバ自体からアクセスしているので、冒頭に書いたとおり、
ノートPCからアクセスできるか確認してみます。

 

またうまくいきません!

f:id:roku28632:20200425141129p:plain

 

しかし、調べてみるとすぐにわかりました。
ファイアーウォールのポート開放が問題のようです。
開放してみました。
 

受信の規則で、今回開放しているポート番号「8080番」をプライベート範囲で追加しています。

f:id:roku28632:20200425141430p:plain

 

完成ですね。

先程まではlocalhostと指定していましたが、webサーバ側のローカルIPを指定しています。

f:id:roku28632:20200425141752p:plain

 

思ったより時間がかかってしましたが、IISでやりたかったことはできました。
次はnginxで同じことをやってみる予定です。
ではでは。

 

VBAでマトリクス表の指定

毎日できる時に少しでもアウトプットしておく。

エクセルで、ある表データをマトリクス化するときに使った。
あるマトリクス表があり、その表を選択したい場合は、

Sub test()

    Range(Cells(4, 1), Cells(Cells(4, 1).End(xlDown).Row, Cells(4, 1).End(xlToRight).Column)).Copy
    
    Cells(8, 1).PasteSpecial (xlPasteAll)

End Sub

テスト的にコピーにしてみた。
rangeのendプロパティでxldownで下方向に、ctrl↓した場合と同じところを指定できる。
また、同じくrangeのendプロパティのxlToRightで右方向に、ctrl→した場合と同じところを指定できる。
xlupで↑、xlToLeftで←。

結果はこんな感じになる。

f:id:roku28632:20200416013817p:plain

サクッと書いたけど、可読性的にははこっちのほうがいいのかな

Sub test()

    Dim startRow As Integer
    startRow = 4
    
    Dim startColumn As Integer
    startColumn = 1
    
    Dim startCell As Range
    Set startCell = Cells(startRow, startColumn)

    Range(startCell, Cells(startCell.End(xlDown).Row, startCell.End(xlToRight).Column)).Copy
    
    Cells(8, 1).PasteSpecial (xlPasteAll)

End Sub

ソースの記述方法も他の人のコードを参考にして詰めていきたい。

以上