ハンズオン日記Vol.4:サーバレス編その2
こんにちは。
本日もAWSの初心者向けハンズオンをやっていきます。
今回はサーバレス編その2です。
そういえば、JP Contents Hubが公開されましたね。
ハンズオンの資料を探しやすくなっているのでこちらも活用していきたいです。
ハンズオンの動画は2020年1月
こちらの記事は2022年9月時点の情報となります。
アジェンダ
# | Session |
1 | 前回のハンズオンの復習と今回のハンズオンの概要 |
2 | AWS SAM の紹介と AWS Cloud9 の紹介 |
3 | Cloud9 のセットアップ + [Option] Cloud9 で簡単な Lambda 関数を作成する |
4 | SAM で Lambda 関数を作成する ① |
5 | SAM で Lambda 関数を作成する ② |
6 | SAM で API Gateway のリソースを作成し、Lambda 関数と連携させる |
7 | SAM で DynamoDB TBL を作成し、Lambda 関数を連携させる |
8 | [Option] SAM CLI を使ってみる ① |
9 | [Option] SAM CLI を使ってみる ② |
10 | クリーンアップ & 落ち穂拾い & まとめ |
目標は、サーバレス編その1で作成した構成をSAMで構築してみることです
主に使用するサービスは、AWS SAM,Lambda,API Gateway,DynamoDBです
全体を通して
学んだこと
- AWS SAM
- サーバレスな環境を自動構築できる
- CloudformationとSAMの違いってなに?
- SAMはCloudformationの拡張機能
- サーバレス分野に関してより簡単に記述できる
- SAMはCloudformationの拡張機能
- Transformの記述が必要
- デプロイ時にCloudformationのテンプレートに変換される
- TypeとPropertiesを記述する
- Type:リソースのタイプ。6種類ある。
- Properties:リソースごとの詳細な設定。それぞれ項目が違う。
- SAMの流れ
- CodeUriについて
- CodeUriまたはInlineCodeが必要になる
- AWS::Serverless::Function
- Handler
- Runtime
- CodeUri or InlineCode
- AWS::Serverless::Api
- StageName
- EndpointConfiguration:必須ではないが指定しない場合はエッジ最適化になる
- AWS::Serverless::SimpleTable
- 必須項目なし
- SAM CLI
- ローカル環境でSAMを利用できる
- Dockerのインストールが必要
- sam init で対話形式で初期化できる
- デプロイやテンプレートの事前検証が行える
- sam deploy --guidedはハンズオンより聞かれる内容が多い
- Cloud9
- SAMやLambdaは一度デプロイしないとテストできないの?
- ローカル環境に構築すればデプロイしなくてもテスト可能
- sam build後もsam deployを実行せずにsam local startを実行できる
詰まったところ
- Cloud9からLambda functionを作成方法
- Cloud9へのhomebrewインストール
- 下記コマンドを実行するとec2-userのパスワードが求められた
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.[sudo] password for ec2-user:
-
- 特に設定した覚えはないため初期パスワードがあるか調べた
- 特に見つからなかったが、時間が経つとインストールが開始された
- 特に設定した覚えはないため初期パスワードがあるか調べた
sudo: timed out reading password
sudo: 1 incorrect password attempt
==> This script will install:
/home/ec2-user/.linuxbrew/bin/brew
/home/ec2-user/.linuxbrew/share/doc/homebrew
/home/ec2-user/.linuxbrew/share/man/man1/brew.1
/home/ec2-user/.linuxbrew/share/zsh/site-functions/_brew
/home/ec2-user/.linuxbrew/etc/bash_completion.d/brew
/home/ec2-user/.linuxbrew/Homebrew
==> The following new directories will be created:
/home/ec2-user/.linuxbrew/bin
/home/ec2-user/.linuxbrew/etc
/home/ec2-user/.linuxbrew/include
/home/ec2-user/.linuxbrew/lib
/home/ec2-user/.linuxbrew/sbin...以下略
CI=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- Cloud9へのpython 3.9インストール
- サンプルSAMアプリケーションのRuntimeを3.9に指定
- sam buildを実行したところpython3.9がないらしい
- こちらの記事を参照し3.9をインストール
課題
- SAMのユースケース
- SAMとCloudformationは併用可能
- SAMはデプロイ時にCloudformationに変換されるので可能と予想
- SAMで記述したものをCloudformationでも書いてみる
- Pythonの中身について前回のハンズオンを復習する
終わり
少し前のハンズオンだったのでGUIの違い、バージョン違いに苦戦しました。。
調べてみても最近の記事はなかなか出てこないので、もっとググり力をつける必要があるなぁと感じました。
次のハンズオンなにするか決めていませんが、自分の課題を消化する期間にしてみようかと思います。
アーキテクチャ図の作成とかね。
MacBookAirで有線LANを使用したい
こんにちは。
自宅のWi-Fi環境が心もとなかったので有線接続にしてみました。
そこで、使ったアダプタや詰まったところを共有できればと思ったので記事にしました。
使用したアダプタ:ETG5-US3
使用しているUSBハブにはTypeCポートが1つしかないため、TypeAのアダプタにした
背景と目的
現在のWi-Fi環境:だいたい45Mbpsくらい
PCやスマホなど複数接続しているため、以下のような症状が起きる
-
WEBミーティング時に画面が固まる
- 動画の画質が急に落ちる
そのためメインで使用しているPCを有線で接続し通信速度の向上を目指す
環境情報(2022/9/15 現在)
私が使用しているPCやアダプタの情報
PC:MacBook Air(M1,2020)
OS:12.5.1(Monterey)
アダプタ:ETG5-US3
試した手順
1.そのまま挿してみる
最初はアダプタを開梱しそのまま挿した
繋がらない。。
説明書を読んでみるとどうやらドライバのインストールが必要らしい
結果:失敗
2.説明書に記載されているドライバをインストールする
説明書に記載されているURLからドライバのインストールを試みる
バージョン:Ver.1.01(2018/06/11)
macOS 10.13に対応して以降更新がないらしい
とりあえずインストーラをダウンロードし、ドライバをインストール
アダプタをUSBに挿してみたが特に変化なし
PCに認識されているか確認するため、システム情報を見る
アダプタを抜き差しし、認識していることは確認できた
しかし、「システム環境設定」→「ネットワーク」からアダプタの追加を試みたが、それらしい表記はない
結果:失敗
3.ググってみる
接続方法がわからずGoogleの力を借りる
以下記事を参考にした
どうやらアダプタのチップセットを確認する必要がある
説明書を確認するとAX88179というのがわかった。
ASIX公式のドライバをダウンロードした
ここにはmacOS 12までのドライバが公開されている
インストーラを同梱されていたインストール方法を読みながらインストールした
インストール後は「ASIX_USB_Device_App」というアプリが追加されるので、
これを実行し「有効化」にする。その後再起動。
再起動完了後、アダプタを接続したところリンクアップ成功
ネットワークにもアダプタが追加されたことが確認できた
結果:成功
通信速度について
Wi-Fi、有線ともに速度を計測し、有線の方が速くなることが確認できた
最後に
なんとか接続することができました
ダウンロードは4倍,アップロードは5倍くらい速くなってよかったです
これで快適なWEBミーティングができるといいなー
ハンズオン日記Vol.3:サーバレス編その1
こんにちは。
本日も公式ハンズオンをやっていきます。
今回はサーバレスについてです。
サーバレスのサービスは触るの初めてなので楽しみです。
ハンズオンと同時に気になった箇所はデベロッパーガイドも見ていきます。
ハンズオンの動画は2019年、
こちらの記事は2022年9月時点の情報となります
アジェンダ
# | Session |
1 | Serverless アーキテクチャの概要 |
2 | AWS Lambda の概要 |
3 | AWS Lambda ハンズオン① Lambda を単体で使ってみる |
4 | AWS Lambda ハンズオン② 他のサービスを呼び出してみる |
5 | Amazon API Gateway の概要 |
6 | Amazon API Gateway ハンズオン① API Gateway を単体で使ってみる |
7 | Amazon API Gateway ハンズオン② API Gateway と Lambda を組み合わせる |
8 | Amazon DynamoDB の概要 |
9 | Amazon DynamoDB ハンズオン①テーブルを作ってみる |
10 | Amaozn DynamoDB ハンズオン② API Gateway と Lambda と DynamoDB を組み合わせる |
使用するサービスはAPI Gateway と Lambda と DynamoDBです
全体を通して
学んだこと
-
Lambda
- Java、Go、PowerShell、Node.js、C#、Python、Rubyをサポート
- メモリは10GBまで使用できるようになっている
- vCPUは最大で6つ
- タイムアウトは15分
- IAMロールで許された動作しかできない
- 許可の確認は「設定」→「リソースの概要」から確認できる
- 呼び出しもとリソースで同期・非同期が変わる
- ライフサイクル
- Lambdaはコンテナ上で実行される
- 利用可能なコンテナがない場合はコンテナ生成から始まる(コールド)
- 利用可能なコンテナは再利用でされる(ウォーム)
- 基本設定のタイムアウト値やメモリは「Integer」 型にしないと注意書きが出る
- ソース変更時は保存だけでなく、Deployする必要がある
- グローバルスコープに記載したものはウォームスタート時に再利用される
- 実際の開発時は例外処理を書くようにしよう
- API Gateway
- DynamoDB
- フルマネージドのNoSQLデータベース
- 3つのAZに保存される
- AutoScallingできる
- ストレージの容量制限なし
- 料金体系(キャパシティを定義する場合)
- Read、Writeキャパシティユニット
- ストレージ利用料金
- +α
- Primary Key
- Partition Key(必須)
- Sort Key
- 値
- Attributes
- Primary Key以外はアイテム間で揃ってなくていい
- Attributes
- Black Beltを確認して理解しよう
- キャパシティユニットについて
- R/Wどちらも1ユニットにつき、1秒間で1回
- Readは最大4KB(強い一貫性を持たなければ2回)
- Writeは最大1KB
- 考え方
- ピーク時に1KB以下の読み込みが秒間130ある
- →キャパシティは余裕をみて150にする
- キャパシティの予想が立てられない場合はオンデマンドで構築後、運用してキャパシティの予測を立てていい
- R/Wどちらも1ユニットにつき、1秒間で1回
- 操作方法
- HTTP APIにて操作を行う
- 作成
- Put Item
- BatchWriteItem
- 更新
- UpdateItem
- 取得
- GetItem(単一データの場合)
- Query(複数データ:キーの値に基づいて取得)
- Scan(複数データ:インデックスの全てのデータを呼び出す)
詰まったところ
課題
- DynamoDBのデータ構造について理解を深める
- DynamoDBのセカンダリインデックスについて理解を深める
- Lambdaのデプロイ、API Gatewayの設定などCLIでどこまでできるか確認する
おわり
ハンズオン日記Vol.2:AWS CloudFormationで Web システムを構築する編
はじめに
これはAWSの気になったハンズオンをやってみた系の記事である
ハンズオンの探し方がわからない方はこちらを参考にすると良いかも
本日のお品書き
AWS CloudFormationのハンズオンをやります
必要な時間
1時間30分くらい
アジェンダ
# | Session |
1 |
ハンズオンで構築する構成とクラウドにおける構成管理について |
2 |
CloudFormation概要 |
3 |
開発環境の構築 |
4 |
テンプレートの実行方法、VPCの作成 |
5 |
EC2の作成 その1 |
6 |
EC2の作成 その2 |
7 |
RDS, ELBの作成、スタックのライフサイクル・分割 |
8 |
まとめ 、削除 |
大体の流れ
コードで管理することのメリットを説明
- 秘伝のタレにならないこと
- フィードバックをすぐに受けられること
Cloudformationの概要
- テンプレート:リソースを定義
- スタック:テンプレートに含まれているリソースをまとめたもの
- スタックはテンプレートに定義された構成で自動的に作成される
- リソース作成時の依存関係は自動で解決されるが、明示的に指定することもできる
- スタックの変更時は前回使用したテンプレートの差分を適用する
- ここのイメージがよくわからない(チャプター2視聴時)
- 今回使用するテンプレートは前回使用したテンプレートの差分を適用?
- 丸ごと作り直すわけじゃないから効率がいいってこと?
- リソース変更時に無停止変更、再起動を伴う変更、再作成のどれかがが発生する
- 変更箇所の確認用にChange Setを作成できる
- ぶっつけ本番にならない
- リソースの削除を一括で行える
- 事前に手動で変更をおこなっている場合は、依存関係でエラーが出るかも
- スナップショットの取得や保持も行える
- validate-templateは構文のチェックのみ行うためリソースが有効かどうかはチェックしない
- パラメータが複数行になる場合は最初にパイプ"|"をつけてあげる
- パラメータは大文字と小文字を区別する
- 更新時のステータスがReplacement(置換)の場合、再作成されたリソースのIDが変更される・・?
- ハンズオンではIDをハードコーディングしているが、本来はスタックからインポートするのが望ましい
スケーラブルウェブサイト編と同じ構成を作成した
複雑になるため、EC2,RDSは1台構成にした
AWS Cloud9上でコードを記述した
(詳しいことはBalck Beltを見るといいよ)
Cloud9のインスタンスもcfnのスタックとして扱われる
cfnにテンプレートをアップロードするとS3バケットが自動作成される
削除の順番も大事
宿題
- テンプレートの要素を調べる
- 複雑にしてみる
- EC2を2台構成にする
- RDSを2台構成にする
- 定時でリソースを全て削除できるか試してみる
- 手動変更をして削除時のエラーを出してみる
- 基本的な操作をスクショして備忘録として保存
今後のこと
- お客様事例の構成とかコード化してみたいなぁって思ってる
- 大規模インフラ構築のコード化ってかっこいいと思う
- スタックの分割やネストをよく考える必要がある
ラーニングパス
最後に
次はサーバレスのハンズオンをしていきます。
↓今気になっているハンズオンはこちら↓
費用のかかるEC2やその他サービスなどの後片付けはしっかりしましょう!(超重要)
幕間:日々勉強
はじめに
最近、英語の勉強をしています。
学生時代は英語から逃げていましたが、英語と触れる機会があり、
英会話できるようになりたいなぁと思いました。
今回は英語の勉強方法ではなく、その時に出会った動画についての感想です。
どの動画?
みなさんご存知TEDで見つけたこの話
The power of believing that you can improve | Carol Dweck - YouTube
日本語に訳すとこんな感じになるそうです
どんな内容?
子供たちの教育方法について、才能や能力の成長を止めずに、開発・育成するにはどうすればいいのか。
という内容について、短期的な結果(今回の話だと次のテストだとか通知表に5を並べるとか)にとらわれず、長期的な報酬(成長とかできるようになった!とか)に目を向けていけるマインドセットを作りましょうってことを言っているはず。
困難な課題に対して、すぐに無理だと決めつけず、今は「まだ」できないけどできる用に努力するということが大切。そして、無理と決めつけた時、脳は活性化せず、挑戦・努力をしている時に脳は活性化するみたい。
なので、努力したり困難な課題に立ち向かう時、自分は賢くなっていると思うようにするといいらしい。
すぐに変わるのは難しいけど・・・
このお話は子供たちが対象でしたが、自分にも言えることなのかなって思いました。
新しいことをやる恐怖や、やりたいけど自分には難しいかな。。みたいな気持ち。
そういう考え方では成長しないし、今後もそういうマインドセットになってしまうと寂しいですね。やりたいことはいくつかあるし、新しい体験もしてみたいし。
すぐに成長型マインドセットになるのは難しいけど、少しずつコンフォートゾーンの外にあることに挑戦をしてやれることを増やしていきたいです。
ハンズオン日記Vol.1:スケーラブルウェブサイト構築編
これはAWSの気になったハンズオンをやってみた系の記事である
ハンズオンの探し方がわからない方はこちらを参考にすると良いかも
本日のお品書き
今年の7月にAWS SAAを取得しましたが、ハンズオンはあまり触れてこなかったため初心者向けのハンズオンからやっていこうと思います。
必要な時間
2時間くらい
アジェンダ
# | Session |
1 | 本コースで構築するアーキテクチャとハンズオン全体の流れの紹介 |
2 | Amazon VPCの作成 ~ WordPress用Webサーバ・データベースを配置するための仮想ネットワークを作成する ~ |
3 | Amazon EC2の作成 ~ WordPressがインストールされたWebサーバを作成する ~ |
4 | Amazon RDSの作成 ~ WordPress用のMySQLデータベースを作成する~ |
5 | ELB の作成 ~ 負荷分散用のロードバランサーを作成する ~ |
6 | WordPressの初期設定 ~ WordPressの初期設定を行い簡単なブログを作る ~ |
7 | AMIの作成と作成したAMIから2つ目のEC2インスタンスの起動 |
8 | RDSのマルチAZ配置 〜 すでに作成済みのRDS DB インスタンスのマルチAZ化を行う 〜 |
9 | Webシステム全体の可用性の確認 〜 EC2インスタンスの停止やRDSのフェイルオーバーを行う 〜 |
10 | 補足 & まとめ & 今後のラーニングパスについて |
大体の流れ
EC2作成→RDS作成→ELB作成→マルチAZ化
RDSのセキュリティグループの宛先に、EC2で使用するセキュリティグループを指定すると、リソース削除時に順番を考慮する必要がある。
VPCを削除すれば早いけどね。
Autoscallingを含めたハンズオンもできたらいいなーと感じた。
最後に
初心者向けハンズオンはしばらく続きます。
次はCloudformationをやって、今回の構成を作成してみようと思います・
費用のかかるEC2やその他サービスなどの後片付けはしっかりしましょう!(超重要)
AWS認定アカウントにログインできないだってー?!
こんにちは。チクタックです。
クラウドプラティクショナーに合格して、認定アカウントにログインしようとしたところ、「指定のアカウントは登録されておりません」みたいなエラーがありました。
おかしい。。
アカウントがなければどうやって試験を受けたのか。。
解決した
解決できました。
普段Chromeの自動入力に頼って生きているので、今回もメールアドレスとパスワードをChromeに入力してもらっていましたが、それが原因でした。
特にパスワード。こちらは自分で入力する必要がありそうです。
セキュアだね。
終わりに
自動入力に頼るのはあまり良くないかもしれないですね。
今回は特に役に立たなさそうな話でした。
以上、チクタックでした。
それでは、さようなら。