ハンズオン日記Vol.4:サーバレス編その2

こんにちは。

本日もAWSの初心者向けハンズオンをやっていきます。

今回はサーバレス編その2です。

pages.awscloud.com

そういえば、JP Contents Hubが公開されましたね。

ハンズオンの資料を探しやすくなっているのでこちらも活用していきたいです。

aws-samples.github.io

ハンズオンの動画は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の拡張機能
        • サーバレス分野に関してより簡単に記述できる
    • Transformの記述が必要
      • デプロイ時にCloudformationのテンプレートに変換される
    • TypeとPropertiesを記述する
      • Type:リソースのタイプ。6種類ある。
      • Properties:リソースごとの詳細な設定。それぞれ項目が違う。
    • SAMの流れ
      • テンプレート記述
      • パッケージング(aws cloudformation package)
        • この時S3にZIP化されたアプリケーションが保存される
        • PropertiesのCodeUriが書き換えられる
      • デプロイ(aws cloudformation deploy)
        • SAMテンプレートからCloudformationのテンプレートに変換
        • Cloudformationが実行される
    • 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
    • 前も触ったことがあるけどもう一度復習
    • ブラウザ上でコードの記述、実行できるクラウドベースのIDE
    • チャット機能もあるのでペアプログラミングも可能
    • サーバレスアプリケーションを簡単に構築できる
    • ホストEC2とEBS分の料金がかかる
  • SAMやLambdaは一度デプロイしないとテストできないの?
    • ローカル環境に構築すればデプロイしなくてもテスト可能
    • sam build後もsam deployを実行せずにsam local startを実行できる
詰まったところ
  • Cloud9からLambda functionを作成方法
    • 動画のGUIと違うため詰まった
      • 動画では左ペインに「AWS Resources」と表示されている
      • 私の画面には表示されていない
      • いろいろ調べてみたが有効な解決方法は見つからなかった
        • 使用が変更されている可能性...?
        • SAMアプリケーションの作成は可能
  • 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のアダプタにした

www.iodata.jp

背景と目的

現在の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の力を借りる

以下記事を参考にした

oneuro.net

どうやらアダプタのチップセットを確認する必要がある

説明書を確認するとAX88179というのがわかった。

ASIX公式のドライバをダウンロードした

www.asix.com.tw

ここにはmacOS 12までのドライバが公開されている

インストーラを同梱されていたインストール方法を読みながらインストールした

インストール後は「ASIX_USB_Device_App」というアプリが追加されるので、

これを実行し「有効化」にする。その後再起動。

再起動完了後、アダプタを接続したところリンクアップ成功

ネットワークにもアダプタが追加されたことが確認できた

アダプタの追加

結果:成功

通信速度について

Wi-Fi、有線ともに速度を計測し、有線の方が速くなることが確認できた

Wi-Fi接続時

有線接続時

最後に

なんとか接続することができました

ダウンロードは4倍,アップロードは5倍くらい速くなってよかったです

これで快適なWEBミーティングができるといいなー

ハンズオン日記Vol.3:サーバレス編その1

こんにちは。

本日も公式ハンズオンをやっていきます。

今回はサーバレスについてです。

pages.awscloud.com

サーバレスのサービスは触るの初めてなので楽しみです。

ハンズオンと同時に気になった箇所はデベロッパーガイドも見ていきます。

docs.aws.amazon.com

ハンズオンの動画は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#PythonRubyをサポート
    • メモリは10GBまで使用できるようになっている
    • vCPUは最大で6つ
    • タイムアウトは15分
    • IAMロールで許された動作しかできない
      • 許可の確認は「設定」→「リソースの概要」から確認できる
    • 呼び出しもとリソースで同期・非同期が変わる
      • S3にファイルをアップロードした時にLambda呼び出し、正常に呼び出された段階でS3はユーザへレスポンスを返す(非同期)
      • API GatewayにGETリクエストを送ったときにLambda呼び出し、Lambdaの実行完了時にユーザへレスポンスを返す(同期)
    • ライフサイクル
      • Lambdaはコンテナ上で実行される
      • 利用可能なコンテナがない場合はコンテナ生成から始まる(コールド)
      • 利用可能なコンテナは再利用でされる(ウォーム)
      • 基本設定のタイムアウト値やメモリは「Integer」 型にしないと注意書きが出る
    • ソース変更時は保存だけでなく、Deployする必要がある
    • グローバルスコープに記載したものはウォームスタート時に再利用される
    • 実際の開発時は例外処理を書くようにしよう
  • API Gateway
  • DynamoDB
    • フルマネージドのNoSQLデータベース
    • 3つのAZに保存される
    • AutoScallingできる
    • ストレージの容量制限なし
    • 料金体系(キャパシティを定義する場合)
      • Read、Writeキャパシティユニット
      • ストレージ利用料金
    • Primary Key
      • Partition Key(必須)
      • Sort Key
      • Attributes
        • Primary Key以外はアイテム間で揃ってなくていい
    • Black Beltを確認して理解しよう
    • キャパシティユニットについて
      • R/Wどちらも1ユニットにつき、1秒間で1回
        • Readは最大4KB(強い一貫性を持たなければ2回)
        • Writeは最大1KB
      • 考え方
        • ピーク時に1KB以下の読み込みが秒間130ある
        • →キャパシティは余裕をみて150にする
      • キャパシティの予想が立てられない場合はオンデマンドで構築後、運用してキャパシティの予測を立てていい
    • 操作方法
      • HTTP APIにて操作を行う
      • 作成
        • Put Item
        • BatchWriteItem
      • 更新
        • UpdateItem
      • 取得
        • GetItem(単一データの場合)
        • Query(複数データ:キーの値に基づいて取得)
        • Scan(複数データ:インデックスの全てのデータを呼び出す)

 

詰まったところ
  • 当時のGUIと結構変わっているので少し手間だった
  • JSON形式の書き方に慣れてない
課題
  • DynamoDBのデータ構造について理解を深める
  • DynamoDBのセカンダリインデックスについて理解を深める
  • Lambdaのデプロイ、API Gatewayの設定などCLIでどこまでできるか確認する

おわり

ハンズオン日記Vol.2:AWS CloudFormationで Web システムを構築する編

はじめに

これはAWSの気になったハンズオンをやってみた系の記事である

ハンズオンの探し方がわからない方はこちらを参考にすると良いかも

dev.classmethod.jp

本日のお品書き

AWS CloudFormationのハンズオンをやります

pages.awscloud.com

必要な時間

1時間30分くらい

アジェンダ
# Session
1

ハンズオンで構築する構成とクラウドにおける構成管理について

2

CloudFormation概要

3

開発環境の構築

4

テンプレートの実行方法、VPCの作成

5

EC2の作成 その1

6

EC2の作成 その2

7

RDS, ELBの作成、スタックのライフサイクル・分割

8

まとめ 、削除

大体の流れ

コードで管理することのメリットを説明

  • 秘伝のタレにならないこと
  • フィードバックをすぐに受けられること

Cloudformationの概要

  • テンプレート:リソースを定義
    • JSON/YAML形式のテキスト
    • スタックの設計図
  • スタック:テンプレートに含まれているリソースをまとめたもの
  • スタックはテンプレートに定義された構成で自動的に作成される
  • リソース作成時の依存関係は自動で解決されるが、明示的に指定することもできる
  • スタックの変更時は前回使用したテンプレートの差分を適用する
    • ここのイメージがよくわからない(チャプター2視聴時)
    • 今回使用するテンプレートは前回使用したテンプレートの差分を適用?
    • 丸ごと作り直すわけじゃないから効率がいいってこと?
  • リソース変更時に無停止変更、再起動を伴う変更、再作成のどれかがが発生する
  • 変更箇所の確認用にChange Setを作成できる
    • ぶっつけ本番にならない
  • リソースの削除を一括で行える
    • 事前に手動で変更をおこなっている場合は、依存関係でエラーが出るかも
  • スナップショットの取得や保持も行える
  • validate-templateは構文のチェックのみ行うためリソースが有効かどうかはチェックしない
  • パラメータが複数行になる場合は最初にパイプ"|"をつけてあげる
  • パラメータは大文字と小文字を区別する
  • 更新時のステータスがReplacement(置換)の場合、再作成されたリソースのIDが変更される・・?
  • ハンズオンではIDをハードコーディングしているが、本来はスタックからインポートするのが望ましい

スケーラブルウェブサイト編と同じ構成を作成した

複雑になるため、EC2,RDSは1台構成にした

AWS Cloud9上でコードを記述した

(詳しいことはBalck Beltを見るといいよ)

Cloud9のインスタンスもcfnのスタックとして扱われる

cfnにテンプレートをアップロードするとS3バケットが自動作成される

削除の順番も大事

 

宿題
  • テンプレートの要素を調べる
  • 複雑にしてみる
    • EC2を2台構成にする
    • RDSを2台構成にする
  • 定時でリソースを全て削除できるか試してみる
  • 手動変更をして削除時のエラーを出してみる
  • 基本的な操作をスクショして備忘録として保存
今後のこと
  • お客様事例の構成とかコード化してみたいなぁって思ってる
  • 大規模インフラ構築のコード化ってかっこいいと思う
  • スタックの分割やネストをよく考える必要がある
ラーニングパス
  • AWS CloudFormationのベストプラクティスを読み解く
  • インフラ構築に導入してみる
  • CodePipelineを利用したデプロイ
  • その他のBeginnersのハンズオン

最後に

次はサーバレスのハンズオンをしていきます。

↓今気になっているハンズオンはこちら↓

お役立ち Twitter Bot を作りながら学ぶ AWS ドリル ~第 1 回 おはよう Bot 編 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

費用のかかるEC2やその他サービスなどの後片付けはしっかりしましょう!(超重要)

幕間:日々勉強

はじめに

最近、英語の勉強をしています。

学生時代は英語から逃げていましたが、英語と触れる機会があり、

英会話できるようになりたいなぁと思いました。

今回は英語の勉強方法ではなく、その時に出会った動画についての感想です。

どの動画?

みなさんご存知TEDで見つけたこの話

The power of believing that you can improve | Carol Dweck - YouTube

日本語に訳すとこんな感じになるそうです

digitalcast.jp

どんな内容?

子供たちの教育方法について、才能や能力の成長を止めずに、開発・育成するにはどうすればいいのか。

という内容について、短期的な結果(今回の話だと次のテストだとか通知表に5を並べるとか)にとらわれず、長期的な報酬(成長とかできるようになった!とか)に目を向けていけるマインドセットを作りましょうってことを言っているはず。

困難な課題に対して、すぐに無理だと決めつけず、今は「まだ」できないけどできる用に努力するということが大切。そして、無理と決めつけた時、脳は活性化せず、挑戦・努力をしている時に脳は活性化するみたい。

なので、努力したり困難な課題に立ち向かう時、自分は賢くなっていると思うようにするといいらしい。

すぐに変わるのは難しいけど・・・

このお話は子供たちが対象でしたが、自分にも言えることなのかなって思いました。

新しいことをやる恐怖や、やりたいけど自分には難しいかな。。みたいな気持ち。

そういう考え方では成長しないし、今後もそういうマインドセットになってしまうと寂しいですね。やりたいことはいくつかあるし、新しい体験もしてみたいし。

すぐに成長型マインドセットになるのは難しいけど、少しずつコンフォートゾーンの外にあることに挑戦をしてやれることを増やしていきたいです。

 

ハンズオン日記Vol.1:スケーラブルウェブサイト構築編

これはAWSの気になったハンズオンをやってみた系の記事である

ハンズオンの探し方がわからない方はこちらを参考にすると良いかも

dev.classmethod.jp

本日のお品書き

今年の7月にAWS SAAを取得しましたが、ハンズオンはあまり触れてこなかったため初心者向けのハンズオンからやっていこうと思います。

pages.awscloud.com

必要な時間

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をやって、今回の構成を作成してみようと思います・

途中でツイッターbotのハンズオンもやるかもしれません。

お役立ち Twitter Bot を作りながら学ぶ AWS ドリル ~第 1 回 おはよう Bot 編 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

費用のかかるEC2やその他サービスなどの後片付けはしっかりしましょう!(超重要)

AWS認定アカウントにログインできないだってー?!

こんにちは。チクタックです。

クラウドプラティクショナーに合格して、認定アカウントにログインしようとしたところ、「指定のアカウントは登録されておりません」みたいなエラーがありました。

おかしい。。

アカウントがなければどうやって試験を受けたのか。。

解決した

解決できました。

普段Chromeの自動入力に頼って生きているので、今回もメールアドレスとパスワードをChromeに入力してもらっていましたが、それが原因でした。

特にパスワード。こちらは自分で入力する必要がありそうです。

セキュアだね。

終わりに

自動入力に頼るのはあまり良くないかもしれないですね。

今回は特に役に立たなさそうな話でした。

以上、チクタックでした。

それでは、さようなら。