コンテナ、サーバーレスなAWSサービスをざっくり学べるハンズオンをやってみた

コンテナ、サーバーレスなAWSサービスをざっくり学べるハンズオンが良かったので、内容をご紹介します。
2020.11.30

こんにちは。コンサル部@フォートナイトの新シーズンが楽しみなYui(@MayForBlue)です。

ECSをちゃんとさわってみたいなと思ってやってみたハンズオンがAWSの複数のサービスをざっくり学ぶのに良いなと思ったのでご紹介したいと思います。

やってみたハンズオン

今回ご紹介するハンズオンのリンクは以下です。
モダンウェブアプリケーションを構築する

このハンズオンでは、用意されているWebアプリケーションをAWSのサービスを使って構築することで、AWSの複数のサービスの構築方法、連携方法を学ぶことができます。
また、複雑な設定などは行わないので、初心者の方がとりあえずやってみたい!このサービスさわってみたい!というときに向いていると思います。

Webアプリケーションの言語はデフォルトでPythonが用意されていて、私もPythonで進めましたが、他にも.NET/Java/Goが用意されているので、好きな言語を選んで進めることができます。

学べるサービス

このハンズオンに登場するサービスは以下です。

  • S3
  • Kinesis Data Firehose
  • Lambda
  • API Gateway
  • Cognito
  • CodePipeline
  • CodeBuild
  • CodeCommit
  • DynamoDB
  • ECS
  • VPC
  • IAM
  • CloudFormation
  • Network Load Balancer

サービスによって内容の濃さは異なりますが、個人的にはECSがしっかり触れたのがよかったです。

ハンズオンを行う際に参考にしたリンク

ハンズオンを行う上で、あまり理解できていないサービスや仕様は調べながら行ったので、その際に参考にしたリンクを記載します。

タスク定義パラメータ - Amazon Elastic Container Service

サービス定義パラメータ - Amazon Elastic Container Service

API Gateway API に対してセットアップするエンドポイントタイプを選択する - Amazon API Gateway

API Gateway のプライベート統合の Network Load Balancer を設定する - Amazon API Gateway

また、ハンズオンを行う前に以下のECSのBlackBelt動画を視聴したことで理解しやすくなりました。

注意点

このハンズオンのコマンド実行をAWS CLI v2 で行った際にエラーが出てつまづいたところがあったので、対処法をご紹介します。

base64 エンコードのエラー

AWS CLI v2 では、デフォルトではすべてのバイナリ入力パラメータを base64 エンコード文字列として渡すようになっているのですが、「モジュール2 - ステップ2 - B: Swagger を使用して REST API を作成する」の aws apigateway import-rest-apiコマンドを行う際にInvalid base64のエラーが出て実行に失敗します。 そのため、以下のドキュメントを参考に、--cli-binary-format raw-in-base64-outのパラメータを追加して対応しました。

AWS CLI バージョン 2 はデフォルトで base64 エンコードされた文字列としてバイナリパラメータを渡すようになりました

設定ファイルと認証情報ファイルの設定 - AWS Command Line Interface

aws ecr get-login を行う際のエラー

モジュール2 - ステップ1 - C: Docker イメージを Amazon ECR にプッシュする の箇所でaws ecr get-login --no-include-email のコマンドが紹介されているのですが、以下のアップデートがあり、AWS CLI v2 で実行するとエラーとなります。
こちらは下記ドキュメントの通りにaws ecr get-login-passwordに置き換えて実行しました。
AWS CLI バージョン 2 では ecr get-login を ecr get-login-password に置き換えます。

最後に

自分でやってみて勉強になったなと思うハンズオンだったので、記事としてご紹介してみました。
ハンズオンだけで各種サービスを深く学ぶというのはなかなか難しいですが、気になるサービスを触るきっかけになると思います。
気になった方はぜひやってみてください。

以上、コンサル部のYui(@MayForBlue)でした!