AWS SystemManagerを使用してCloudWatchを利用する方法(Linux)

こんにちは、kc-dreamです。
今回は、AWSのCloudWatch CustomMetric及びCloudWatch Logsの設定方法についてご紹介していきます。

本記事について

AWS SystemManagerを使用し、CloudWatch Agentをインストールし、各種情報を取得するまでの方法をご紹介します。
※CentOS 7を使用した場合となります。

前提条件

CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集する

[crayon-5f34f60137254741817234/]

SystemManager(SSM)がインストールされていなければインストールする
Amazon EC2 Linux インスタンスに SSM エージェント を手動でインストールする

IAMロールの作成

・IAMロールを作成し、対象のEC2にアタッチ
 ・下記2つのPolicyをロールに付与する

[crayon-5f34f60137266446475918/]

AmazonEC2RoleforSSMはSSM Agentを実行するために必要になります。

[crayon-5f34f60137276189953943/]

SSMのRunCommandを使用してCloudWatch Agentをインストール

1.SSM コンソールよりSystem Managerメニューに移動し、左側メニューからランコマンドを選択
2.右側のオレンジボタン「コマンドを実行」

3.ターゲットから対象のインスタンスを選択する (IAMロールが正しく割り当てられているインスタンスが表示されます)
4.実行

[crayon-5f34f60137283830241729/]

対象のインスタンスにログイン

下記コマンドを実行し、設定情報を選択していきます

[crayon-5f34f6013728f364289218/]

※対象サーバへは、SSMの[セッションマネージャ]を使用し接続することが可能です
(SSMの使用権限が必要)

CloudWatch Agent設定項目

[crayon-5f34f6013729a665426681/]

[crayon-5f34f601372a5743659053/]

[crayon-5f34f601372b0782077130/]

[crayon-5f34f601372bb557903344/]

[crayon-5f34f601372c6836806024/]

[crayon-5f34f601372d0952121275/]

[crayon-5f34f601372db745587202/]

[crayon-5f34f601372e5786830678/]

[crayon-5f34f601372f0808961853/]

[crayon-5f34f601372fb929553470/]

[crayon-5f34f60137305305073720/]

[crayon-5f34f60137310084150125/]

[crayon-5f34f6013731b431423574/]

[crayon-5f34f60137325553502327/]

[crayon-5f34f60137334566886923/]

[crayon-5f34f6013733f909641178/]

[crayon-5f34f6013734b652622330/]

[crayon-5f34f60137355033405737/]

[crayon-5f34f60137360109019664/]

[crayon-5f34f6013736a622399626/]

[crayon-5f34f60137375876026537/]

[crayon-5f34f60137380848752580/]

[crayon-5f34f6013739b529609696/]

[crayon-5f34f601373a7624922509/]

[crayon-5f34f601373b2813709579/]

[crayon-5f34f601373be367080107/]

[crayon-5f34f601373c9066150811/]

CloudWatch Agentの有効化

[crayon-5f34f601373d3870271288/]

[crayon-5f34f601373dd510488378/]

[crayon-5f34f601373e8746009781/]

AWSコンソールのCloudWatchからCustomMetric及びLogが取得できているかを確認

CloudWatch コンソール

参考URL

collectDが導入されてるか:collectD設定方法
取得するメトリクスの種類:ウィザードを使用してCloudWatchエージェント設定ファイルを作成する


AWS SAM 構文を利用した CloudFormation による Lambda と API Gateway の作成

はじめに

今回は AWS SAM 構文を利用し、 Hello を返す API を作成しました。
AWS SAM 構文を利用すると、シンプルな設定のみでAPIを作成できます。
今回作成するシステムの構成図を以下に示します。

開発環境

・AWS-CLI 1.16.158
・Microsoft Windows 10 Home
※AWS CLI のインストールをしていない場合は、以下を参考にインストール、認証を行ってください。
AWS CLI のインストール
AWS CLI の認証

yaml ファイルの作成

この yaml ファイルに API Gateway と Lambda の設定を書き込みます。
今回使用した yaml ファイルは以下の通りです。

[crayon-5f34f6013c91b522319047/]

Pythonコードの作成

ただ、Hello を返すコードを記述しました。

[crayon-5f34f6013c92a491930620/]

各ファイルをパッケージ化し、テンプレートとしてs3にアップロード

以下のコマンドで、各ファイルをパッケージ化し S3 にアップロードします。
このパッケージは、この後 CLoudFormation にデプロイするために利用します。

[crayon-5f34f6013c937380624103/]

デプロイ

作成したテンプレートを以下のコマンドでデプロイします。
先ほどのコマンドの実行結果からコマンドをコピペします。
--stack-nameには任意のスタック名を入力し、末尾に--capabilities CAPABILITY_IAMを付けて実行します。
--capabilities CAPABILITY_IAMは IAM 関連の処理を行う際に必要になります。

[crayon-5f34f6013c943182514967/]

作成されたAPIの確認

実際に、作成されたAPIをたたくと以下のように Hello と表示されます。

おわりに

今回はAWS SAM 構文を利用して、API を作成しました。
AWS でサーバーレスアプリケーションを構築する際は、CloudFormation の構文を利用するより、SAM 構文のほうがシンプルに書けるので試してみてください。


AWS Lambda と AWS SNS を利用して、AWS SageMaker で起動中のエンドポイントを携帯に通知する

はじめに

今回はAWS SageMaker で作成したエンドポイントの消し忘れ防止用に、エンドポイントが起動している場合、決まった時間に携帯へ通知するシステムを作成しました。
その内容を説明します。
構成図は以下の通りです。

Lambda 関数の作成

まず、AWS のコンソール上で lambda と検索しLambda を開きます。

左のサイドバーから関数を選択し、右上の関数の選択をクリックします。

各項目を設定し、関数の作成 をクリックします。

Laambda 関数が作成されたのを確認し、左のトリガーの追加をクリックします。

トリガーの選択から CloudWatch Events を選択します。

ルールから新規ルールの新規作成を選択します。

各項目を設定します。
スケジュールの入力方式については以下のドキュメントを参考にしてください。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html

設定をし終えたら下にスクロールし、トリガーの有効化からチェックを外して追加をクリックします。

トリガーが作成されたら、画面真ん中のLambda 関数をクリックし、下にスクロールします。

関数コードの欄までスクロールしたら赤枠内に、以下のコードを貼り付けてください。
※phoneNumberにメッセージを送る携帯の電話番号を入力しておいてください。

[crayon-5f34f6013d29a073184703/]

コードをペーストしたら、右上の保存をクリックし、下にスクロールします。

基本設定の欄までスクロールしたら、タイムアウトの時間を15秒に変更します。

次に、赤枠で示した青文字をクリックします。

IAMロールのタブが開いたら、ポリシーをアタッチしますをクリック。

AmazonSageMakerReadOnly と検索し、チェックマークを付けてポリシーのアタッチをクリックします。

ポリシーがアタッチされたことを確認し、もう一度ポリシーをアタッチしますをクリックします。

AmazonSNSFullAccess と検索し、チェックマークを付けてポリシーのアタッチをクリックします。

ポリシ-がアタッチされたことを確認し、Lambda 関数のタブに戻ってください。
※今回アタッチしたポリシーは権限を絞ることができます。セキュリティ面上 FullAccess などはよくないので、実際に利用する際は適切な IAM ロール設定を行いましょう。

Lambda のタブに戻ってきたら、右上のテストをクリックします。

各項目を設定し、下にスクロールします。

作成をクリックします。

右上のテストをクリックし、一番上までスクロールします。

実行が成功したことを確認します。

それでは、エンドポイントをデプロイした状態で、もう一度テストを実行してみましょう。
※エンドポイントが InService になってからテストを実行してください。


すると、設定した電話番号の携帯にメッセージが届きます。

動作を確認したら、CloudWatch Events を選択し、下にスクロールします。

イベントを有効にして、保存をクリックします。
これで、設定したスケジュールで Lambda 関数が起動するようになります。

最後に

今回はエンドポイントの消し忘れ防止用に、エンドポイントが起動している場合、決まった時間に携帯へ通知するシステムを作成しました。
エンドポイントは稼働時間に対して課金が発生するので、使わなくなったエンドポイントは消しておくようにしましょう。

参考文献

Amazon SageMakerの起動しているノートブックインスタンスとエンドポイントをSlackに通知するBotを作ってみた
https://dev.classmethod.jp/tool/sagemaker-slack-list-notebook-endpoint/

 

SageMakerの導入ならナレコムにおまかせください。

日本のAPNコンサルティングパートナーとしては国内初である、Machine Learning コンピテンシー認定のナレコムが導入から活用方法までサポートします。お気軽にご相談ください。

ソリューションページはこちら

 

 


Introduction to AWS CodeBuild 和訳してみた

はじめに

AWS Training and Certification にて紹介されている AWS Codebuild についての動画を和訳してみました。
このコンテンツへのアクセス方法については、こちらに記載しております。

Introduction to AWS CodeBuild

About AWS CodeBuild

それでは、AWS CodeBuild について紹介していきます。

AWS CodeBuild はフルマネージド型のビルドサービスです。サーバもソフトウェアも必要ありません。AWS CodeBuild はコードのコンパイル、テスト、パッケージングを行うビルドスクリプトを実行することができます。
AWS CodeBuild は、以下の特徴があります。

・フルマネージド型
・スケーリングが可能
・拡大が可能
・セキュアな環境
・継続的な統合とデリバリーが可能
・従量課金

How Does It Work?

AWS CodeBuild の仕組みについて紹介します。

AWS CodeBuild はユーザが環境を決め、そして構築を開始する必要があります。ユーザは、ビルド環境毎に実行するコマンドを選択したり、コンピュータタイプを選択したりする必要があります。AWS Code Build は継続的なスケーリングや、複数の構築を同時に行うことが可能です。
・ビルド環境を選択、あるいはユーザのビルド環境を準備する
-Java、Python、Node、Android、Docker などから選択
-ビルドの構成として自分のイメージを用意して作成
・ユーザ側で設定する項目
-コードのロケーション
-ビルド環境
-ビルドコマンド

Use Cases


AWS Code Build は複数のテストを同時に行ったり、ビルド環境をカスタマイズしたりする場合には、とても役立つサービスです。また、それ以外のユースケースとしては、以下の内容が考えられます。
・準プロビジョンド環境を用意したい
・ユーザ自身のプロビジョン環境を用意したい
・並列で複数のテストを実行したい
・複数のビルド環境をまとめて実行したい

AWS CodeBuild の特徴をまとめまると、以下となります
・ソースコードをコンパイル
・テスト環境の実行
・コードのパッケージング化
・ハードウェアのマネージング、継続的なスケーリングが可能

おわりに

AWS CodeBuild についての説明は以上となります。こちらのサービスを利用することで、ユーザにあったオリジナルのビルドツールを作成することができます。複数の開発やテストの実行にも役立つこちらのサービス、ぜひ利用してみて下さい。


Introduction to AWS CodeStar 和訳してみた

はじめに

AWS Training and Certification にて紹介されている AWS CodeStar についての動画を和訳してみました。
このコンテンツへのアクセス方法については、こちらに記載しております。

Introduction to AWS CodeStar

What is AWS CodeStar

それでは、AWS CodeStar について紹介して参ります。

AWS CodeStar はフルマネージド型のサービスです。AWS 環境上にある、アプリの開発・構築・デプロイを1つにまとめることができます。主な特徴は以下の3点です。
・直ぐに開発を始めることが可能
・セキュアな環境でチームで共同作業が可能
・ソフトウェアデリバリーをより早く行うことが可能

Key Features

AWS Code Star は以下の特徴があります。

・セントラルプロジェクトダッシュボード
-プロジェクトの情報を一元化し、ダッシュボードで表示
・プロジェクトのテンプレート
-アプリ開発の助けになるテンプレートを用意
・チームのアクセス管理
-プロジェクト毎に参加メンバーを管理
・Git リポジトリ
-全てのプロジェクトのコードを管理
・継続的なデリバリツールチェイン
-設定済みの自動化されたパイプラインをプロジェクトごとに用意

How it Works

AWS CodeStar を使用することで一連の流れを全てCodeStarで行うことができます。

・プロジェクトの計画を立てる
・プロジェクトの参加メンバーの管理(IAM)
・開発環境の用意(CodeCommit)
・構築(CodeBuild)
・デプロイ(CodeDeploy)
・監視(CloudWatch)
・プランとマネージメント管理

Hands On

それでは、実際に AWS CodeStar を開始してみましょう。AWS コンソールから AWS CodeStar を検索します。トップ画面は、このようになっております。

Select Template

まず最初に、今回のプロジェクトで使用するテンプレートを選択します。その際に、テンプレートの中身を選ぶ必要があります。

テンプレートの中身として、以下の項目を選択します。
・アプリのカテゴリ
・プログラミング言語
・AWS サービス
テンプレートが決まったら、プロジェクト名を入力します。

プロジェクト名が決まったら、画面右下の「Create Project」を選択します。
また、図を見ると、それぞれの項目でそのサービスを利用するのかが表示されています。
・ソース:AWS CodeCommit
・ビルド、テスト:AWS CodeBuild
・デプロイ:AWS CloudFormation
・モニタリング:Amazon CloudWatch
プロジェクト名の次は、ディスプレイ名を決めて、入力します。

この画面で確認する項目は以下の3つです。
・IAM ユーザ名
・ディスプレイ名
・メールアドレス

Set Up Tools

ここでは、ツールの環境を設定します。
最初に設定するのは、コードの編集環境です。

選択できるコードの編集環境は以下の3つです。
・Visual Studio
・Eclipse
・Command Line Tools
コード環境を決めたら、利用しているツールの情報を決めます。

決めるのは、以下の2つの項目です。
・OS(どれか1つを選択)
-macOS
-Windows
-Linux
・接続情報(どれか1つを選択)
-HTTPS
-SSH 
ユーザのローカルマシンに、リポジトリのコピーを作成することができます。

コピーを作成する場合は Git クライアントを開き、コマンドをコピーする必要があります。
これで、右下の「Skip」ボタンをクリックします。
作成中はこの画面が表示されるので、しばらく待機しましょう。

この画面が出たら、作成は完了です。

右上の「Application endpoints」をクリックすると、下図の様な画面が表示されます。

その他

Project Team

ここでは、プロジェクトに参加するユーザの設定を行うことが出来ます。

「Add team member」を選択すると、既存の IAM ユーザ、または新規で IAM ユーザを作成し、本プロジェクトに参加させることができます。
また、ここでは以下の情報を確認することができます。

・ディスプレイ名
・メールアドレス
・プロジェクトにおける役割
・リモート接続の可否

おわりに

AWS CodeStar の紹介については以上となります。ソフトウェアの開発環境を直ぐに揃えることができ、なおかつプロジェクト毎にユーザの参加や設定、管理も可能な便利なサービスとなっております。
AWS の他の Code シリーズと合わせて、ぜひ使って頂ければと思います。


S3 へのデータアップロードをトリガーにデータを推論し、推論結果を S3 に保存する AWS Lambda 関数の作成

はじめに

今回は S3 へのデータアップロードをトリガーに、アップロードされたデータを推論し、結果を S3 に保存する関数を作成しました。
その内容を記載します。

前提

SageMakerでデプロイできるモデルがある。
※今回作成した Lambda 関数を使う際には、事前にモデルをデプロイしておく必要があります。
※私は画像検出のモデルを使用します。

関数の作成/設定

まず、AWS のコンソールから Lambda と検索し、 Lambda を選択します。

左の一覧から関数を選択し、右上の関数の作成を選択します。

一から作成にチェックをつけ下へスクロール。

関数名に任意の名前を入力し、ランタイムは Python3.7 を選択してください。

実行ロールは基本的な Lambda アクセス権限で新しいロールを作成を選択し、関数の作成を選択します。

作成が完了すると、次のような画面が表示されます。

少し下にスクロールし左のトリガーの追加から S3 を選択してください。

選択したら、更に下にスクロールし各種設定を行います。
・バケット名 : データをアップロードするバケットを選択します。
・イベントタイプ : PUT を選択します。
・プレフィックス : データのアップロードを検知するフォルダを指定します。
・サフィックス : 検知するデータの末尾の形式を指定します。
私は画像検出のモデルを使用するので、.jpgと入力しています。
・トリガーの有効化 : チェックを付けておきます。

下にスクロールして、右下の追加を選択します。

追加したら、右上の保存ボタンを選択して、設定を保存します。

保存したら、少し上にスクロールして、赤枠で囲まれた部分を選択し、下にスクロール。

すると、以下のような画面がでてきます。
赤枠内に、実際のプログラムを記述します。

今回私が作成したプログラムは以下の通りです。

[crayon-5f34f6013d98c362745121/]

プログラムは下記の流れになっています。
1. S3にアップロードされたデータを推論。
2. 推論結果を保存。
3. アップロードされたデータを、別フォルダにコピーし、アップロードされたデータを削除。
プログラムを書き終えたら、もう一度右上の保存を選択します。

実行ロール の設定

さきほど何もいじらずに作成した、実行ロールに、S3とSageMakerのフルアクセスをアタッチします。
※今回はテストのため、フルアクセスをアタッチしますが、本番で利用する際は適切なIAMロールを作成してください。
IAMを開き、左の欄からロールを選択し、検索欄にLambda関数を作成した時に付けた名前を入力してください。

入力し、出てきたロールを選択します。

ポリシーのアタッチを選択します。

検索バーに S3 と入力し、S3 のフルアクセスにチェックを付けて、ポリシーのアタッチを選択します。

同様に、検索バーに SageMaker と入力し、SageMaker のフルアクセスにチェックを付けて、ポリシーのアタッチを選択します。

すると、2つのポリシーがアタッチされたことが確認できます。

実際にS3にデータをアップロードし、Lambda 関数を起動してみる。

この手順に入る前に使用するモデルをデプロイしてください。
Lambda関数作成時に設定した画像アップロードフォルダに画像をアップロードします。


アップロードしたら、作成したLambda関数を開いて、モニタリングタブを選択し、CloudWatch のログ表示を選択します。

するとこのような形で、Lambda 関数の起動ごとにログが記録されています。
ログを開くと Lambda 関数が正常に動作しているか確認できます。

正常に動作している場合、S3に、推論結果が保存され、アップロードしたデータは別フォルダに格納され、削除されます。



ちなみに推論結果を可視化した画像はこちらになります。

最後に
今回は、S3へのデータアップロードをトリガーに、推論を行いました。
トリガーを変更することで、他にもいろいろな処理ができますので、ぜひ試してみてください。


SageMakerの組み込みアルゴリズムで作成したモデルのデプロイと推論を、ローカルのJupyter notebookから実行

はじめに

今回はSageMakerの組み込みアルゴリズムで作成したモデルのデプロイ、推論をローカルのJupyter notebook から実行したので、その内容を掲載します。
※今回私は ObjectDetection を利用したモデルで、デプロイ、推論を行います。

前提

S3 上に SageMaker の組み込みアルゴリズムで作成したモデルがある。

モデルのデプロイ

まず、aws 上のノートブックでで利用している boto3 と sagemaker をインストールします。

[crayon-5f34f6013e09a220892940/]

IAMロールの取得

SageMaker と S3 へのアクセスを許可するロール名を入力する。

[crayon-5f34f6013e0a9344994720/]

ロールは以下のコードで一覧表示できます。

[crayon-5f34f6013e0b4758123769/]

モデルをデプロイ

デプロイ自体はSageMaker上のノートブックとコードは変わりません。
model_data : 先ほどモデルを保存したパス
image : 推論時に利用する Docker イメージ名
Docker イメージ名はこちらから参照してください。

[crayon-5f34f6013e0bf010711256/]

実行結果
- の後に ! がついたら、モデルのデプロイ完了です。

[crayon-5f34f6013e0cb346806770/]

推論

まず、作成したエンドポイント名を確認します。

[crayon-5f34f6013e0d6208101688/]

エンドポイント名を確認したら、推論を行います。

[crayon-5f34f6013e0e1820800032/]

エンドポイントの削除

エンドポイントは時間単位で課金が発生するので、使い終わったら削除しておきましょう。

[crayon-5f34f6013e0ec568292017/]

最後に

今回は、ローカルのJupyter notebook からモデルのデプロイと、推論を行いました。
SageMaker 上で同じことをしたい、という方はこちらの記事で紹介していますので、参考にしてください。

 

SageMakerの導入ならナレコムにおまかせください。

日本のAPNコンサルティングパートナーとしては国内初である、Machine Learning コンピテンシー認定のナレコムが導入から活用方法までサポートします。お気軽にご相談ください。

ソリューションページはこちら

 

 


Introduction to AWS CodePipeline 和訳してみた

はじめに

AWS Training and Certification にて紹介されている AWS CodePipeline についての動画を和訳してみました。
このコンテンツへのアクセス方法については、こちらに記載しております。

Introduction to AWS CodePipeline

AWS CodePipeline について

それでは、AWS CodePipeline について説明して参ります。

AWS CodePipeline は、ユーザがコードを修正する度に、コードの構築・テスト・デプロイを自動的に調整する継続的なデリバリーサービスです。ソフトウェアの、迅速な、そして正確な開発が求められる昨今においてとても重要なサービスです。

サービスのメリット


CodePipeline は以下のような特徴があります。
〇直ぐにデリバリー可能
開発・テスト・デプロイまでの一連の流れを自動化
〇高品質
デプロイまでの流れをすばやく自動的に行うことが可能
〇直ぐに開始可能
サーバレスなので、サーバを立てることなく利用可能
〇ワークフローの設定可能
開発・テスト・デプロイの段階毎に設定を設けることが可能
〇他の AWS サービスと統合可能
CodeCommit など他の AWS サービスや、第三者デベロッパーツールとの統合利用が可能

AWS Code Pipelie の仕組み

AWS CodePipeline の動作環境については、以下となります。

1 リリースプロセスモデルを判別
・リリースワークフローを定義
・コードが無事に通過しているかを Source、Build、Test、Prod、の段階毎に判別
・それぞれの段階で実行されるアクションを判別
2 次回以降、ソースリポジトリに変更内容が反映される
・定義されたアクションとして、ワークフローが実行される
・変更内容が承認され無い限り Pipeline のワークフローは動かない

ベストプラクティス


CodePipeline は、他の AWS サービスとの統合や、テンプレートの作成が可能といった特徴があります。
〇CodePipeline はCodeCommit やCodeBuilt など、他の AWS サービスとの統合した利用が可能
〇CodeDeploy を利用することで、テンプレートの内容を変更することも可能
〇Lambda を使用することで、パイプラインに Lambda 関数を呼び出すことが可能

ユースケース


AWS CodePipeline は、Source、Build、Test、Production で構成されており、それぞれに対して有効なアクションプロバイダが決まっております。

おわりに

AWS CodePipeline については以上となります。CodePipelne を利用することで製品を作成する際の一連の流れを、管理するだけでなく自動化まで行うことができます。個別で取り組んでいた1つひとつのサービスをまとめることができるので、開発をする際は、ぜひ利用してみて下さい。


Introduction to AWS CodeCommit 和訳してみた

はじめに

AWS Training and Certification にて紹介されている AWS CodeCommit についての動画を和訳してみました。
このコンテンツへのアクセス方法については、こちらに記載しております。

AWS CodeCommit について

AWS CodeCommit は以下の様な特徴があります
非常にスケーラブルでセキュアなソース管理サービス
Git リポジトリを作成してソースコードの管理や保存が可能
様々な AWS サービスと結合することが可能

Hands On

事前準備

リポジトリ作成前に、以下の2点の準備をしておきましょう。
・IAM アカウントの用意
・Git クライアントの用意
IAM ユーザは先に作成しておきましょう。IAM ユーザではなく、root アカウントでログインした状態でリポジトリの作成を行うと、画面に警告が出ます。リポジトリを作成する際は、IAM ユーザでログインしてから作成しましょう。
Git クライアントを使う場合は、事前にダウンロードしておく必要があります。こちらも先に用意しておきましょう。

IAMユーザの作成

AWS のコンソール画面から、IAM ユーザを作成します。
作成するIAM ユーザが CodeCommit を利用できるよう、アクセス許可の付与設定で、「既存のポリシーから直接アタッチ」を選択し、「AWSCodeCommitFullAccess」というポリシーをアタッチさせておきましょう。


これで、IAM ユーザの作成は完了です。

リポジトリの作成

次は、リポジトリを作成します。リポジトリとは、CodeCommit の基本的なバージョン管理オブジェクトのことです。リポジトリを用意することで、プロジェクトごとにコードやファイルの保存、管理をすることができます。また、リポジトリは他のユーザと共有することも可能です。
先程作成した IAM ユーザから AWS アカウントにログインし直して、リポジトリの作成を開始しましょう。

AWS にログインしたら、コンソール画面より「 CodeCommit 」と入力します。

CodeCommit の画面に移動したら、リポジトリの作成を開始します。
画面右上の「リポジトリの作成」を選択します。

以下の内容を入力したら、右下の「作成」をクリック。これで、リポジトリの作成は完了です。
・リポジトリ名(名前は任意)
・作成・オプショナル(内容は任意)

その他の機能

Code

上記で作成したリポジトリに、コードをファイル毎に保存することができます。
プロジェクトごとに個々にファイルを作成して、コードを保管することも可能です。コードファイルは「作成」か「アップロード」の2択を選ぶことができます。

Commit

Commit は、コードに対する内容を更新情報ごとに保存することができるサービスです。

以下の情報が記録されるので、コードに変更があった際には直ぐに確認することが可能です。
・メッセージのコミット(つまり変更内容)
・コミット日(更新が行われた日)
・作成者

Commit Visualizer

こちらは、commit で更新された情報を視覚化したものです。「コミットビジュアライザー」を選択することで利用できます。

最新バージョンのコードが1番上に表示されており、変更内容と日時を視覚的に把握することができます。そのため、確認したいタイミングのファイルコードや、どこで変更が行われたのか等もひと目で分かるようになっております。

おわりに

AWS CodeCommit の紹介は以上となります。本サービスを利用することでプロジェクトごとに、コードファイルを分けて管理したり、コードファイルの変更内容を直ぐに確認したりできます。
複数のプロジェクトを並行して行う際の管理ツールとして非常に便利なサービスなので、ぜひ、利用してみて下さい。


レコメンデーションエンジンハンズオンセミナーに参加してきました

※本記事はこれからAmazon AIのサービスを学習する方向けの概要記事となります。

先日行われたAWSが提供をしているレコメンデーションエンジンについてのセミナーとハンズオンに行ってきました。
今回は、前半のセミナーについての参加レポートをお伝えしたいと思います。

■企業におけるAI/MLの利用について

ラージエンタープライズな企業で多く利用されています。特に製薬のなどのセキュリティが高い企業でも世界中で使われています。

■AmazonAI Stackについて

AmazonでAIを使う上で基本的な考え方がありますそれが、「Amazon AI Stack」です。
このAmazon AI Stackは、AWSで提供されているAIサービスを各レイヤーに分けて記しているものになります。

当日は、こちらのAIStackを下記のように料理 に例えていました。

[1]APIベースのサービス

(スーパーの総菜のようにすでにできていておいしいもの)

AWSで様々な切り口にあわせて学習済みのアルゴリズムが組み込まれたAPIサービスを提供。開発者でなくても利用することができるAI/MLのサービスになっています。
オートMLなどのAIサービスのアプローチから始めていき、様々な角度から自社のデータをAIという切り口で試すことができるサービスになっています。

[2]SageMakerのようなMLプラットフォーム

(必要なものがそろったキッチンのようなもの。自分が食べたい食材を調理できる)

AI/MLを実施するのに必要なコンポーネンツは用意されているので自分のデータを使って自由にアレンジをすることができます。
下記は、その機能の概要になります。

Sagemakerに用意されているすぐに利用することができる機能
・Amazon SageMaker ground truth:データのラベル付け(アノテーション)ができる仕組み。半自動、手動など選ぶことが可能。学習タスクを作成して、作業がしやすくなる環境を用意できる。
・SageMakerビルトインアルゴリズム:用途に応じた一般的なアルゴリズムがサービス内で選択可能。
・サンプルノートブック:サンプルとして、それぞれテーマに沿ったNotebookの記述がされており、中身を確認することで、仕組みを理解することができ、応用利用が可能。

[3]MLフレームワーク&インフラストラクチャレイヤー

(食材であり、キッチンを自分で作るようなもの)

・エラスティックインファレンス
エラスティックインファレンスとは、インフラストラクチャレイヤーの機能となっており、CPUインスタンスに対して、GPUを後付けできる機能のことです。
これにより、低コストで、高パフォーマンスの推論ができるようになります。

・マーケットプレイスによるモデル利用
モデルのマーケットプレイスでは学習済みのモデルを使うことができます。例えば、上記の写真のようにApacheMXネットのApacheライセンス上でGluonCVを使えます。
マーケットプレイスでは、一般的なアルゴリズムや、学習済みモデルなどがすぐに利用することができます。

・レイテンシーセンシティブにも対応
AWS IoT、Greengrass、SageMaker Neoなどで、軽くしていくことが可能
※レイテンシセンシティブとは…レイテンシーの遅延がビジネスクリティカルになるようなアプリケーションやシステムのこと

■AIプロジェクトの進め方の例

最初はありものを使って、素早く検証を実施。だめなら、さらに詳細な分析をしていく。という方法があります。フローとしては、以下のようなイメージになります。
APIサービス→Amazon SageMaker→MLフレームワーク&インフラストラクチャ

■Personnalizeについて(Amazon.comにおけるパーソナライゼーションの考え方について)

登壇者はクリストフさん

クリストフさんは、Amazon.comで実際に商品のレコメンドをしていた人です。(写真左)
クリストフさんが、現場で感じたレコメンデーションについての考え方を紹介していただきました。

■パーソナライゼーションにおける2つのレイヤーについて

パーソナライゼーションは「ビジネス的なレイヤー」と「人間的なレイヤー」に分けられます。

・ビジネス的なレイヤー
レコメンデーションは客とサービスをつなげること
サービス提供者と客がつながることで利便性を高める
・人間的なレイヤー
顧客はいつも不満を持っている、へトロジニアス(個性)が欠けている
個人まで念頭に置くことがレコメンデーションエンジンを作る上で必要

カスタマー :"へトロジニアス(個性)"&"Dissatified(不満)"

■売り手に対して、新しいリージョンで商売を始める場合の手法

Amazonが売り手に対して、新しいリージョンで、どういう商品を売ればいいのかをサジェストする際の手法として、以下の3つがあるようです。
1、トレンド、人気のあるもの
その国のトレンド、人気商品についてをサジェストした場合、レコメンドの成功率は1~2%とのこと
2、売り手が持っているアイテムの中からどれが売れるか
売り手が持っている在庫の中から、どの商品が実際に売れているかをサジェストしたところ、レコメンドの成功率は「1」の+4%
3、どれぐらいの販売数で売れるか
「2」にそのアイテムがいくつくらい売れるかとサジェストした場合
サジェストの成功率は全体で20%になるそうです。

5年前は複数の要素を含めたターゲットマーケティングができませんでした。(技術的に)


上記の写真は、パーソナライゼーションをする際の課題についてです。

■パーソナライゼーションにおける課題

・Cold Starts
Amazon.comの中でも問題になっている課題の一つです。
新商品が新しくマーケットに投入された場合どうやってレコメンドを出していくべきか難しい
・Populaly
人気のあるものについてレコメンドする。季節などについてレコメンドする
→一過性のものであり、必ず万人受けするとは限らない
・Scale
ビジネスの規模によっては、同じモデルがマッチしない
・Evaluation
どうやってレコメンデーションモデルをしていくのか社内でどういうKPIを使って評価するのか。サイクルタイムが長くなる

■モデルを評価する方法

1、モデルそのものの評価の仕方
2、ABテスト ユーザーグループを分けて、実際どうだったかで判断
3、ビジネスのKPIがどのようになったかを観察する。ビジネス的に効果があるか

■レコメンドで利用されるアルゴリズムについて

レコメンドのアルゴリズム(HRNN):階層を持たせて分析できるアルゴリズム。Amazon.comがこれまで培ってきた購買行動をアルゴリズム化したものです。
このアルゴリズムはAmazon Personalizeにも入っています
その他Amazon Personalizeでは、パーソナライゼーションの課題にも挙げられていた「Cold-starts」に対して対応することができるHRNN等のアルゴリズムを選ぶことができます。

NETFLIXのCEOがパーソナライゼーションについて語った言葉

「スターバックスでは自分がほしいものを欲しいようにカスタマイズして得ることができる。NETFLIXも同様に欲しいものを提供できるようにしていきたい」

終わりに

今回は、セミナー内でAmazon.comにおいて、パーソナライゼーションをどういう考えのもと実施しているのか。また、AWSで提供されているAIサービスのそれぞれの立ち位置についての説明などをしていただいた内容を紹介しました。