Developing on AWS

最終更新 : 2023/12/25

コース終了後に予告なく内容の変更や削除をする可能性がありますのでご了承ください。

2023/04/20-21 AWS Summit 2023 が開催されます
2023/01/18 AWS Builders Online Series が開催されました

受講準備

  • 【1】受講環境について
    • ブラウザは Chrome もしくは Firefox をお使いください
    • 極力 VPN は切断してください(通信が不安定になる可能性があります)
    • 本コースではマイクの使用は必須ではなく、スピーカー(やヘッドホンなど)を準備いただければ ok です
    • 可能であればモニターは複数用意していただくと演習(ラボ)が楽です(手順書と操作画面を行ったり来たりしますので)
  • 【2】配信ツール (WebEx) について
    • 本研修では、Cisco WebEx という配信ツールを使用します
    • 画面が映らない、音声が聞こえない、という場合は こちら をご確認ください
    • 接続方法としてアプリ版とブラウザ版がありますので、片方で調子が悪い場合はもう片方でのアクセスをお試しください
  • 【3】使用するテキストについて
    • 受講者ポータルから [受講者ガイド] ボタンを押下してください
    • Bookshelf というサイトのログイン画面に遷移しますので、メールアドレスを入力してアカウントの作成 or ログインをしてください
      • ログインした Bookshelf アカウントに対して、講義パートで使用するテキスト(Student Guide)が登録されます
      • ※ 過去に別の研修で受講者ポータルから Bookshelf にログインしたことがある場合は、自動でその Bookshelf アカウントにログインされます
    • 受講者ポータルから [ラボガイド] ボタンを押下すると、同様に Bookshelf アカウントに対してハンズオンラボの手順書(Lab Guide)が登録されます
    • 一度それらが登録されると、直接 Bookshelf にログイン してもテキストを閲覧可能となります
    • なお、必要な情報はすべて配信画面に投影しますので、研修期間中は Bookshelf 画面から両テキストをご覧いただく必要はありません。2 つのテキストがアカウントに登録されたことを確認したら Bookshelf は閉じていただき、研修終了後の復習のための教材としてお使いください

モジュール補足

リンク切れ等ございましたらお知らせください。 また、記載している外部サイトの内容については内容の保証はしかねる点について予めご了承ください。

Mod01-02 (コースの紹介)

Mod03 (開発の開始)

Mod04 (アクセス許可)

Mod05-06 (S3)

Mod07-08 (DynamoDB)

Mod09 (Lambda)

Mod10 (API Gateway)

Mod11 (マイクロサービス)

Mod12 (Cognito)

Mod13 (デプロイ)

Mod14 (モニタリング)

ラボ補足

全体

  • ラボは自分のペースで進めてください
    • ラボを終わらせることが目的ではありません。理解することが目的です
    • カウントダウンが 0 になると一度リセットされますが、1 ヶ月間はラボ環境を使い続けることができますので、必要に応じて再挑戦してみてください
  • 各入力項目やコマンドはラボガイドからコピー、ペーストして下さい
    • 手で打つと間違えが多くなります
    • あわてて取り組むとミスをしがちです。1 つ 1 つのタスクを丁寧に実施しましょう
  • [サービス ▼] から、よく使うサービスに「★」をつけておくと便利です
    • また、サービス毎に複数のタブを同時に使用すると、サービスの行き来が楽になります

ラボの開始&終了方法

  • 講師がラボを有効化すると、受講者ポータルから当該ラボの [起動] ボタンが押下できるようになります
    • 本コースでは、多くのラボで Python / Java / .NET 版を選択可能です
    • 言語によって使用する IDE が異なります
      • Python : Cloud9 を使用
      • Java : 開発用 EC2 にリモートデスクトップ (RDP) して、IntelliJ IDEA を使用
      • .NET : 開発用 EC2 にリモートデスクトップ (RDP) して、Visual Studio を使用
    • どの言語を選んでも OK ですが、以下のような特徴があります
      • Python : コードが短くてシンプルだが、IDE の補完が効かない。座学でのデモで使用
      • Java : RDP が必要。少しコードが長いが、IDE の補完が効く。座学でのデモで使用
      • .NET : RDP が必要。少しコードが長いが、IDE の補完が効く
  • 実施したい言語のバージョンの環境について [起動] ボタンを押下してください
    • すると、環境の初期化が開始されます
  • ラボ環境の初期化が終わると [ラボを開始する] ボタンが押下できるようになります
  • ボタンの押下後、環境リセットまでの残り時間のカウントダウンと、[コンソールを開く] ボタンが押下できるようになります
  • ボタンを押下するとマネジメントコンソールにログインします。以降、カウントダウンページに記載の手順に従ってラボを開始してください
  • 次の講義の開始までに [ラボを終了する] ボタンを押下するようにしてください。
    • 過去のラボ環境が起動しっぱなしの場合、後続のラボが開始できなくなることがあります
  • ラボが終了したら ログアウト をしておきましょう。ログインしっぱなしの場合、次のラボの開始時にログアウトを求められ、少々煩雑です

ラボ実施中の注意点

  • 日々コンソールの見た目が変わっているため、説明と実際の操作が食い違うところがあるかもしれません
    • 適宜、説明の指示に近い操作に読み替えて実施してください
  • 何度か “コンテキストメニュー” という言葉が登場しますが、右クリックして表示されるメニューのことです
  • 何度か “ナビゲーションペイン” という言葉が登場しますが、左側に並んでいるメニューのことです
  • 何度か “イニシャルと郵便番号に書き換えてください” という指示がありますが、他の参加者の方と重複しない文字列なら何でも ok ですので、覚えやすいものに書き換えてください
  • 稀に、マネジメントコンソールの言語が英語になっていることがあります。その場合は、画面右上の「awsstudent」をクリックし、[Settings] のページから言語を切り替えられます。

Lab1

  • 注意
    • 手順書では RDP 以外の方法として Apache Guacamore を使用した接続について解説がありますが、RDP をオススメします
    • Python : タスク 1 で認証情報のセットを間違ってしまった場合は、rm ~/.aws/credentialsrm ~/.aws/config を実行して認証情報ファイルを削除し、改めて aws configure コマンドでセットし直してください
  • 補足
    • --debug 時の出力ログは、ひとつひとつ読み下していく必要はありません
    • Python : Cloud9 のデフォルトでは使用される認証情報は、マネジメントコンソール使用時の認証情報が引き継がれます。今回はその部分の設定を変更し、Cloud9 の実体である EC2 に紐づいている IAM ロールを使用するようにしました。
  • 追加課題
    • 改めて aws configure コマンドを実施し、適当なアクセスキーやシークレットアクセスキー(abcdefg12345 など)をセットして、その後 aws sts get-caller-identity を実施し直すと、どう出力が変化することが想定されますか?また、それはなぜですか?

Lab2

  • 注意
    • 各ラボではそれぞれ別々の環境を使いますので、改めてログイン等をし直すようにしてください
    • オプション課題は、実施不要です
  • 補足
    • 手順通りにコードを書いて実行、のみだと行われていることが理解しにくいので、適宜マネジメントコンソールを見に行って、リソースが実際に作成・変更・削除されていることを確認しながら進めていくと理解が深まります
  • 追加課題
    • website コマンドを実行すると、ウェブサイト用の URL が新たに払い出され、キーを指定しないでアクセスした場合の表示ドキュメント(通常は index.html)やエラー時に表示させるドキュメントを定義できるようになります。 このことを確かめるために通常の URL をキーを指定せずにアクセス(末尾が ...amazonaws.com で終わる)してみてエラーになることを確かめてみましょう。続いて、同じようにウェブサイト用 URL をにアクセスして index.html の内容が表示されることを確かめてみましょう。

Lab3

  • 注意
  • 補足
    • 手順通りにコードを書いて実行、のみだと行われていることが理解しにくいので、適宜マネジメントコンソールを見に行って、リソースが実際に作成・変更・削除されていることを確認しながら進めていくと理解が深まります
  • 追加課題
    • タスク 5 の後半では、条件付き Update についての手順がありますが、なぜ途中のコードをコメントアウトすると条件が正しくない項目の更新をテストしたことになるのかの説明が薄いです。この部分の挙動についてコードを読み下してみましょう

Lab4

  • 注意
  • 補足
  • 追加課題
    • Polly のドキュメントを調べて、別の VoiceId でも音声を生成してみましょう
    • Python: ラボのコードでは署名付き URL を生成する際に有効期限を決めていません。(1) boto3 のドキュメントを検索してデフォルトの有効期限を調べてみましょう (2) 有効期限を 1 分にしてみて、実際に 1 分後に mp3 をダウンロードできなくなるか確かめてみましょう

Lab5

  • 注意
    • このラボでは実装は行わず、すべてマネジメントコンソール上で操作が完結します
    • TODO は 2 箇所とも、考えてもしょうがない部分なので、早々に答えを確認してしまい、API Gateway の挙動を確認する、という目的でラボを進めることをオススメします
  • 補足
    • テスト時に新しいデータを追加したタイミングで、DynamoDB のページにいって項目をスキャンしてみましょう。
  • 追加課題

Lab6

  • 注意
  • 補足
    • 手順 54 : ここで、UserId として cognito:username を渡していますが、JWT に含まれる sub も ID としてよく用いられます(doc
  • 追加課題
    • 実は Polly は日本語にも対応しているので、日本語を再生できるように改良してみましょう!
    • web/src/Components/Notes/NoteDisplay.js の 16-21 行目の配列に、Japanese を追加します
      • この時、voiceTakumiMizuki にしてください
    • 保存後、npm run ... のコマンドと、aws s3 sync ... コマンドを再実行すれば、反映されます

Lab7

  • 注意
  • 補足
  • 追加課題

今後の学習情報