2. AWSの設定

本章ではハンズオンに必要なAWS側の設定を行います。今回利用するリージョ ンは 東京リージョン となりますので、ログイン後東京リージョンを必ず選択し てください。

2.1. Cognitoの設定(Identity Poolの作成)

ブラウザからAWSのリソースを利用するための認証、認可を行なうために Amazon Cognitoを利用します。


マネージメントコンソールから [Cognito] を選択します。


Cognitoの画面から [Create new identity pool] をクリックします。


“Create new identity pool”の画面で、”Identity pool name”に JAWSDAYS2016 、”Enable access to unauth...”にチェックを入れて [Create Pool] をクリックしてください。

_images/cognito-1.png

Cognitoの認証後に割当てられるIAMロールを設定します。”Your Cognito Identities...”で [Allow] をクリックしてください。

_images/cognito-2.png

“Getting Started”の画面で”Platform”のプルダウンから JavaScript を 選択してクリックします。

_images/cognito-3.png

“Get AWS Credentials”中の IdentityPoolId の “ap-northeast-1.xxx”の文字列をメモ帳などに保存します。

_images/cognito-4.png

2.2. IAM(Identity and Access Management)ロールの作成

CognitoのIdentity Pool作成時に割り当てたUnauthのロールにポリシーを設定 します。


また、AWS IoTのShadowをLambdaで利用するするため、Lambda関数に割り当て るためのIAMロールを事前に作成します。

2.2.1. Cognitoのロール設定

マネージメントコンソールから Identity and Access Management をクリッ クします。


左メニューから Role をクリックします。


ロールの一覧から Cognito_jawsdays2016Unauth_Role を選択し、クリッ クします。

_images/iam-1.png

“Managed Policies”の [Attach Policy] をクリックし、 AWSIoTDataAccess のポリシーを割当てます。

_images/iam-2.png

“Inline Policies”の Create Role Policy をクリックします。”Policy Generator”の Select をクリックします。


“Edit Permission”の画面で以下の値を設定します。

  • Effect: Allow
  • AWS Service: AWS Lambda
  • Actions: InvokeFunction
  • Amazon Resource name: *(アスタリスク)

入力が完了したら Add Statement をクリックします。

_images/iam-3.png

画面の下に追加したポリシーが表示されます。 Next Step をクリックします。

_images/iam-4.png

“Review Policy”で Apply Policy をクリックします。

_images/iam-5.png

2.2.2. Lambda用のRole作成

AWS IoT ShadowにUpdateコマンドを発行するLambdaを利用しますが、その Lambda関数に割り当てるIAMロールを作成します。


マネージメントコンソールから Identity and Access Management をクリックします。


左メニューから Role をクリックします。


[Create New Role] をクリックします。


“Set Role Name”に lambda-updateshadow-role と入力し、[NextStep] をクリックします。

_images/iam-6.png

“Select Role Type”でLambdaの欄の [Select] をクリックします。

_images/iam-7.png

“Attach Policy”でビルトインポリシーの一覧から AWSIoTDataAccess を選択し、 [Next Step] をクリックします。

_images/iam-8.png

[Create Role] をクリックします。

_images/iam-9.png

2.3. Lambda関数の作成

AWS IoTのShadowを実行するためのLambda関数を作成します。


マネージメントコンソールから Lambda を選択します。


[Create a Lambda function] をクリックします。


画面右下の [Skip] をクリックします。

_images/lambda-1.png

“Configuration function”の欄に、それぞれ以下を入力します。

  • Name: UpdateShadowForMaBeee
  • Description: 任意
  • Runtime: node.js(デフォルトのまま)
_images/lambda-2.png

以下のリンクにあるソースコードをテキストコピーして、 Lambda Function Code に貼り付けま す。 https://github.com/aquaviter/jawsdays2016-handson-int/blob/master/app/invoked-lambda.js


“Lambda function handler and role”の”Role”から先ほど作成したIAMロール lambda-updateshadow-role を選択し、[Next] をクリックします。

_images/lambda-3.png

“Review”で [Create function] をクリックします。

2.4. AWS IoTの設定

本ハンズオンで利用するAWS IoTの各種設定を行います。

2.4.1. 証明書の作成

BX1で利用する証明書を作成します。


マネージメントコンソールから AWS IoT を選択します。


[Create a rerouce] をクリックします。


[Create a certificate] をクリックします。

_images/awsiot-1.png

[1-Click certificate create] をクリックします。

_images/awsiot-2.png

以下の3つのリンクからファイルをローカルPCにダウンロードします。

_images/awsiot-3.png

リソース一覧から作成した証明書を選択し、右上の [Action] から [Activate] を選択し、クリックします。

_images/awsiot-3.png

証明書が”Active”状態になったことを確認します。

2.4.2. ポリシーの作成

[Create a policy] をクリックします。

_images/awsiot-4.png

“Create a policy”の画面で以下の値を入力し、[Add statement] をクリッ クします。

  • Name: allow-all-policy
  • Action: iot:*
  • Resource: *(アスタリスク)
  • Allow/Deny: Allowにチェックを入れる
_images/awsiot-5.png

“Statements”にレコードが追加されたのを確認し、 [Create] をクリック します。

_images/awsiot-6.png

2.4.3. デバイスの作成

[Create a Thing] をクリックします。

_images/awsiot-7.png

“Name”に”bx1”を入力し、 [Create] をクリックします。

_images/awsiot-8.png

2.4.4. 証明書のアクティベートとポリシー/デバイスのアタッチ

リソース一覧から作成した証明書を選択し、右上の [Action] から [Activate] を選択し、クリックします。

_images/awsiot-9.png

証明書が”Active”状態になったことを確認します。 [Actions] から [Attach a policy] を選択し、クリックします。

_images/awsiot-10.png

“Confirm”画面で”Policy name”に先ほど作成した allow-all-policy を入力し、[Attach] をクリックします。

_images/awsiot-11.png

[Actions] から [Attach a thing] を選択し、クリックします。
_images/awsiot-12.png

“Confirm”画面で”Thing name”に先ほど作成した bx1 を入力し、 [Attach] をクリックします。

_images/awsiot-13.png

以上でAWS IoT側の設定は完了です。