むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

【AWS】日本語字幕付きナレッジセンターをチェックしてみた

AWSを利用していて、おそらく初めて見たコンテンツ。

aws.amazon.com

文章そのまま引用しちゃいますが、
YouTube 動画を使用してお客様からのよくある質問に回答しています。
とのこと。


さすがにサービスの数が多いので動画の数も比例しているが、
EC2周りのトラブルは直面しそうだなあと思い、試してみたいものをチェック。

気になったのが、
キーペアを紛失した後、SSH へのアクセスを回復するにはどのようにしたらよいですか?
という質問。

たしかにどうすんだろう??
と思い、リンクされている動画をチェックして、きちんと手順紹介されておりました。

今日は時間がなさなので、別日に自分でテストして確認してみよう。

【AWS】Hands-on for Beginners 〜Serverless 編〜でサーバ レスアーキテクチャについて学べた!

AWSさんが公式に出されているハンズオン資料の中にあります、
Hands-on for Beginners 〜Serverless 編〜をやりました。

aws.amazon.com

何度か繰り返し動画視聴と手順を覚えて実施できるようになった上で、
感じた触感を書いていきます。


結論:初めて学ぶサーレスアーキテクチャとしてめっちゃ良い

いきなり結論を言いますが、めっちゃ良いコンテンツでした。

自分のようなインフラがっつりだけど、プログラミング雑魚なエンジニアでも、
手順を踏んでしっかり学べるところ、実際の成果物として動くサービスを作れたことは「大きなスタート」となり、「学べる楽しさ」を深く感じさせてくれました。

サーバーレスすごい。


翻訳 Web API を作成して使用するAWSサービス

今回、作成するのは翻訳 Web API
Lambda、API Gateway、DynamoDBの3つを使用してます。

サーバーレスに馴染みがない方に合わせて、
アーキテクチャの概要、上の3つのサービスに関しても、
ハンズオンに入る前に解説していただいているので初めて聞いた方でも、
敷居の低さを感じさせてくれます。

僕も正直、上3つのサービスをがっつり使って構築したことがなく、
なんとなくサービスを知ったような気になってたレベルです。

また、LambdaではPythonを使用してますが、
書けなくてもソースコードを公開していただいてますのでコピペでも大丈夫になってます。


ひとつひとつのサービスに触れて、連携させていく

AWSはググればいろんなアーキテクチャ構成、サービス事例が出てきますが、
「具体的に何がどうつながってこうなっている??」という、
触感を掴むのが正直むずかしいなと思うところがありました。

インフラならまだしもサーバーレスになると何が何やら・・・。

今回のハンズオンでは、まずLambdaを単体で利用して、
他のAWSサービスを呼び出す手順を見せてくれます。

個人的にはAPIリファレンスドキュメントの見方も含めて解説していただいているのがポイント高いです。
もっとPythonにも触れたいなあと思いました。
PyQやる時間を削ってAWS触っているのが惜しい・・・


サーバーレスもっと触れていきたい

ブログへのアウトプットを継続実施するようになってから、
よりAWSを触るのが楽しくなってきたことを実感してます。

ハンズオンとして、別に紹介していただいている、
スケーラブルウェブサイト構築編 も、とにかく手順をきれいに覚えて、動画を見ずに実行できるようにする。

そこから、ネットに転がるナレッジを試す、小さいことからひとつずつ試していく。

何か問題が出てきた時に、自分の頭の中で解決できたり、 「これを形にするにはどうしたらよいか?」と考えるのがやたら面白くなってきました。

いま、自分が触れている部分としてはインフラ側に寄ったものが多いですが、 今回のサーバーレスコンテンツをきっかけに領域を伸ばしていきたく思います!

続編も作成される予定とのことで大きく期待するとともに、
出るころくらいにはもう少しできることの幅が広がっているように邁進していきたいと思います。

興味が出た方、ぜひやってみましょう!!

aws.amazon.com

【AWS】Chatbot(beta版)を使ったSlack通知設定をしてみた

やってみたいと思っていたSlackへの通知設定。
Lambdaを利用した例が一般的でそれで試そうかと思っていたが、
今はchatbotを使ってサクサクっとできてしまう。

www.seeds-std.co.jp

さっそく自分でも手順を確認してみる。

以前作ったCloudWatchのアラートを利用する

先日設定したCloudWatchのアラートがあるので、
こちらを利用して、Slackへの通知設定も追加する。

murajun.hatenablog.jp


・Chatbotの設定

マネージメントコンソールから Chatbot を選択
Chat client にSlack を選択して、Configure client を選択

f:id:pj124183:20200113161536p:plain


Slack画面が表示されて、リクエストの確認画面が出るので 許可する


f:id:pj124183:20200113161952p:plain


Configure Slack channel 画面にて引き続き設定

Channel type:Public
Public channel : general を指定

f:id:pj124183:20200113162248p:plain


Permissions にて、IAMロールは自動生成
名前をChabot_Testに指定
ポリシーテンプレートは、デフォルトで入っているもののまま

f:id:pj124183:20200113162614p:plain


Notifications にて、東京リージョンを選択して、
Topics に作成したmail-alert-test01 を選択して、Configure をクリック

f:id:pj124183:20200113162821p:plain


画面が戻り作成を確認

f:id:pj124183:20200113163036p:plain


・Slackにアラートが流れるかテストする

以前と同様にEC2インスタンスのCPU使用率を80%以上に上げて、
Slackに流れるかテストしてみる

以下コマンドをEC2で実行

$ yes >> /dev/null &

しばらく待つ・・・。すると、指定したチャンネルにてアラートを確認

f:id:pj124183:20200113165457p:plain

グレイトですよ!こいつぁ!!


とりあえずchatbotを使えば簡単にできるとわかった上で、 Lambdaで設定するパターンも把握したい。

ごっつあんです。

【AWS】AWS SDK for Python(Boto3) でリソース作成をやってみた

AWS ハンズオン資料にある、
AWS Hands-on for Beginners 〜Serverless 編〜の復習を実施。

aws.amazon.com

この中で説明していただいているアーキテクチャは作れるようになったものの、 プログラミングをがっつりやっていない自分にとって、
プログラミングはまだまだ敷居が高く感じる。

そのため、AWS SDK for Python(Boto3)でやりやすいところから慣れていくことにした。


VPCとインターネットゲートウェイの作成とアタッチを実施

今回は下記を参考。

dev.classmethod.jp


VPC作成

所持しているMACにBoto3インストールを実施
AWS認証情報は設定済みで事前準備はOK

ファイル create_vpc.py を用意

import boto3                                  
 
client = boto3.client('ec2')           
response = client.create_vpc(
    CidrBlock='10.2.0.0/16',
)
 
print(response)

はじめに使用するboto3をインポート
クライアントに、VPCを作成するclass EC2.Client メソッドを指定
レスポンスに必要なパラメータを設定

Boto 3 Docs 1.11.0 documentation を確認、必要なパラメータ CidrBlock を指定

ファイル作成後、pythonを実行

$ python create_vpc.py

その後、VPC作成を確認

f:id:pj124183:20200112133200p:plain

・インターネットゲートウェイ作成

ファイル create_internet_gateway.py を用意

import boto3

client = boto3.client('ec2')
response = client.create_internet_gateway(
)

print(response)

インターネットゲートウェイ作成にもclass EC2.Client メソッドが必要なので指定 レスポンスに必要なパラメータはなかったため、書き方をドキュメントからそのまま貼り付け

実行して作成を確認

f:id:pj124183:20200112135010p:plain

VPCにインターネットゲートウェイをアタッチ

ファイル attach_internet_gateway.py を用意

import boto3
 
client = boto3.client('ec2')
response = client.attach_internet_gateway(
    InternetGatewayId='igw-0a5440d06838c44c0',
    VpcId='vpc-00eb973cbec06ab1a'
)
 
print(response)

class EC2.Client メソッドを入れる
アタッチする際には、VpcIdとInternetGatewayId が必須なので入れる

実行してアタッチされていることを確認

f:id:pj124183:20200112135830p:plain

・サブネットを作成

ここからは自分でドキュメントを確認して、
サブネットを以下ファイルで作成してみた。


import boto3

client = boto3.client('ec2')
response = client.create_subnet(
    CidrBlock='10.2.0.0/24',
    VpcId='vpc-0f3695e73591f7935'
)
 
print(response)

ファイル実行後、作成を確認

f:id:pj124183:20200112180713p:plain


プログラミング苦手意識を克服したい

簡単に試してなんとなく理解をする。
あとは数をこなして理屈を覚えて身体にしっかり入れる。

もっとAWSが楽しくなりますように。

【AWS】EC2インスタンスにCPU使用率アラートを設定した

標題の件ですが、さくっと直感的にやれてしまうほど簡単で助かりやす。

アラームを作成する

CloudWatch ダッシュボード > アラーム > アラームの作成

f:id:pj124183:20200111113922p:plain

新しいアラームの作成 画面になるので、以下項目を設定

・メトリクスの選択

すべてのメトリクス > EC2 > インスタンス別メトリクス > 対象のEC2インスタンスとメトリクス名 [CPUUtilization] を選択

メトリクスは、インスタンスの利用可能な CloudWatch メトリクスのリスト表示を参照

次に、グラフ化したメトリクス > 期間を1分に変更 > メトリクスの選択 をクリック

・アラームの詳細

名前と説明は適当に。
次の時:CPUUtilization が >= 80 と設定

f:id:pj124183:20200111115054p:plain

・追加設定

欠落データの処理方法:適性(しきい値を超えていない)
これをしておかないと、データ不足で表示されてしまう。

以下設定画面の補足

このオプションは、アラーム評価のためのメトリクスデータがない場合に適用されます。

・アクション

メールを飛ばしたいので、状態:アラーム、通知送信先にリストを設定

f:id:pj124183:20200111115349p:plain

最後にアラームの作成

・新しいメールアドレスの確認

画面に新しいメールアドレスの確認が表示

f:id:pj124183:20200111120559p:plain

通知先に指定したメールにAWSからメールが届くのでリンクをクリック 下記画面の表示が出ればOK

f:id:pj124183:20200111120907p:plain

アラートの作成を確認

f:id:pj124183:20200111115549p:plain


・アラートテスト

メール送信されるのか確認のため、EC2インスタンスでCPU使用率を上げるコマンドを行う

$ yes >> /dev/null &

CPU使用率が上がっているのを確認

$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 662184   2088 252176    0    0     2     4   25   48  0  0 99  0  0
 1  0      0 662184   2088 252176    0    0     0     1  264   48 100  0  0  0  0
 1  0      0 662184   2088 252176    0    0     0     0  258   36 98  2  0  0  0
 1  0      0 662184   2088 252176    0    0     0     0  253   15 98  2  0  0  0
 1  0      0 662184   2088 252176    0    0     0     0  256   24 98  2  0  0  0
 1  0      0 662184   2088 252176    0    0     0     0  257   32 100  0  0  0  0
^C
$

しばらく待つ。


・アラートメールを確認

ALARM: "cpu-alert-test" in Asia Pacific (Tokyo) というメールを受信

ダッシュボード上でアラートになっていることを確認

f:id:pj124183:20200111122909p:plain


とりあえず一旦設定完了。
そろそろ小さいサーバを運用していき、日々のアラートを対処しながらAWS力を付けていきたい。

【AWS】SSMでのRun Command 実行時に"タグにインスタンスがない"と表示される件について調べる

昨日発生した事象に関していろいろと調べる。

murajun.hatenablog.jp

前提条件を満たしていない

Systems Manager の前提条件を確認してみると、

Systems Manager エンドポイントへの 
HTTPS (ポート 443) アウトバウンドトラフィックが
許可されていることを確認します。

とのこと。こやつか。


ぱぱっとできそうな方法でやってみる

上の条件をぱぱっと満たすためにNATゲートウェイをいれてやってみたが、
状況変わらず。
※通常だとプライベートサブネットにあるEC2はVPCエンドポイントを作成してやる様子

IAMロール、セキュリティグループ見直しても特におかしそうなところはなし。
バブリックサブネットで作ったEC2と何が違うんだろう・・・・。


結論:VPCエンドポイント作ってやろう

現時点で自分で試せる確認できることはしたので、
素直にVPCエンドポイントを作成して試す方向に切り替える。

あんまり時間かけてもしょうがないしね。

【AWS】SSMでのRun Command 実行時に"タグにインスタンスがない"と表示される

タイトル通り、
SSMでのRun Command 実行時に"タグにインスタンスがない"と表示される現象に遭遇。

f:id:pj124183:20200110075732p:plain


設定画面にて、対象のEC2インスタンスがいるのも確認。

f:id:pj124183:20200110081141p:plain

f:id:pj124183:20200110080501p:plain


問題なく、Run Command できるものと比較しても、
IAMロール、セキュリティグループに差異はなし。

あとはパブリックサブネット、プライベートサブネットに置いてあることくらい。


Choose instances manually で見ると対象インスタンスが出てこない

この選び方をすると、今回対象としたいインスタンスが出てこないことを確認。

f:id:pj124183:20200110080846p:plain


うーん、すごく単純なことを見落としているような気もする・・・。
仕事終わったらもうちょい深く確認する。