[レポート]Python初心者のためのPython/boto3ハンズオン #DOP203 #reinvent

本ブログはAWS re:Invent 2019のワークショップ『Get hands-on with Python/boto3 with no or minimal Python experience』のレポートです。 現地でワークショップに参加はできていませんでしたが、ワークショップの資料が公開されていたので実際にやってみました。
2020.02.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本ブログはAWS re:Invent 2019のワークショップ『Get hands-on with Python/boto3 with no or minimal Python experience』のレポートです。

現地でワークショップに参加はできていませんでしたが、ワークショップの資料が公開されていたので実際にやってみました。

セッション概要

Learning a programming language can seem like a huge investment. However, solving strategic business problems using modern technology approaches, like machine learning and big-data analytics, often requires some understanding. In this workshop, you learn the basics of using Python, one of the most popular programming languages that can be used for small tasks like simple operations automation, or large tasks like analyzing billions of records and training machine-learning models. You also learn about and use the AWS SDK (software development kit) for Python, called boto3, to write a Python program running on and interacting with resources in AWS.

プログラミング言語を学ぶことは大きな投資です。ただし、機械学習やビッグデータ分析などの最新のテクノロジーアプローチを使用して戦略的なビジネス上の問題を解決するには、ある程度の理解が必要です。このワークショップでは、Pythonの基本を学びます。Pythonは、単純な操作の自動化などの小さなタスクや、数十億件のレコードの分析や機械学習モデルのトレーニングなどの大きなタスクに使用できるもっとも人気のあるプログラミング言語の1つです。また、boto3と呼ばれるPython用のAWS SDK(ソフトウェア開発キット)について学び、AWSのリソースでインタラクティブに実行できるPythonプログラムを作成します。

ワークショップ資料

スライド

ワークショップ

レポート

ワークショップの目的

  • Python+boto3のパワーをわかりやすく紹介する
  • Python+boto3でシンプルなアプリケーションをAWS上に作成する
  • AWSサービスを使用したPython+boto3でデプロイされたアプリケーションを作成する

ワークショップ概要

このワークショップでは、Python+boto3を使ってFlask(Python)アプリケーションの構築と、AWSリソースの構築を行っていきます。

最終的には、次の図のようにFargateにコンテナアプリケーションをデプロイするところまでやります。

Fargateが特にわからなくても、手順どおりに進めていけば、アプリケーションをデプロイして動かすことはできます。
これを機にFargateも詳しく知ってみたいという方は、弊社ブログを御覧ください。

Task 1. Cloud9環境を構築する

このタスクでは次の作業を実施します。

  • アイルランド(eu-west-1)リージョンでCloud9を構築する
  • Cloud9にワークショップで使用するクレデンシャル情報を設定する
  • 設定の動作確認を行う

ワークショップの手順では、Cloud9のmanaged temporary credentialsOFFにして、ワークショップイベント用のコンソールから一時クレデンシャル情報を利用しています。個人アカウントでワークショップを実施する時は、Cloud9のEC2にIAM Roleを割り当てて置くと楽です。

次の手順でIAM Roleを作成して、EC2にIAM Roleを割り当ててください。

まずはIAM Roleを作成します。

IAM Roleが作成できたら、EC2にIAM Roleを割り当てます。

EC2にIAM Roleが割り当てられたら、Cloud9のシェルでリージョンを指定しておきます。

$ export AWS_DEFAULT_REGION=eu-west-1

そうすることで、Cloud9上でAWSのAdministrator権限操作ができます。

Task 2. Python+boto3がインストールされていることを確認する

このタスクでは次の作業を実施します。

  • 正しいバージョンのPythonがインストールされていることを確認する
  • pip3とboto3をインストールする

Task 3. DynamoDBを構築する

このタスクではboto3を使用して次の作業を実施します。

  • DynamoDBを構築する
  • テーブルデータを作成する
  • テーブルデータを読み込む

実際にPythonスクリプトファイルをCloud9上に作成し実行することで、AWSリソースを構築していきます。

Task 4. シンプルなFlaskアプリケーションを作成する

このタスクでは次の作業を実施します。

  • Cloud9上でFlaskを使ったHelloWorldアプリケショーンの作成とテストを実施する
  • アプリケーションをインターネットからアクセスできるように拡張する

実際にCloud9上でFlaskアプリケーションを動かします。Cloud9上でもプレビュー機能を使ってFlaskアプリケーションの動作確認をすることもできますし、外部のインターネットからFlaskアプリケーションへアクセスできます。

Task 5. アプリケーションの構築

このタスクでは次の作業を実施します。

  • DynamoDBに書込み可能なFlaskアプリケーションを構築する
  • アプリケーションをDynamoDBから読み込みできるよう拡張する
  • Clou9上でアプリケーションのテストをする

前章で構築したFlaskアプリケーションを拡張して、DynamoDBから読み書き可能な動的なアプリケーションを構築していきます。

Task 6. アプリケーションのデプロイ

このタスクでは次の作業を実施します。

  • アプリケーション動作用のコンテナを作成する
  • ECRを作成してコンテナをpushする
  • VPCとFargateクラスターを作成する
  • コンテナ上でアプリケーションを動かすのに必要なIAM Roleを作成する
  • Fargateクラスターにコンテナをデプロイする
  • アプリケーションのテストをする

本章で、作成したFlaskアプリケーションをコンテナ化して、Fargateクラスターにデプロイしていきます。Fargateが特にわからなくても、手順どおりにやっていけば、アプリケーションをデプロイして動かすことは可能です。

Clean up

これでワークショップは終了です。
ワークショップが終わった後は無駄にお金がかからないよう、boto3を使ってAWSリソースを削除していきます。

Cloud9はboto3では削除できないので、マネジメントコンソールから削除します。

Cloud9のEC2に割り当てていたIAM Role(dop203-role)も不要なので削除してください。

感想

Pythonのboto3を使うことで、簡単にDynamoDBと連携するアプリケーションを作成できました。

Flaskアプリケーションのコンテナ化とFargateへのデプロイまでひととおり試せるので、Pythonアプリケーションをコンテナで運用してみたい方にオススメのワークショップです。