AndroidとDynamoDB実装方法 (2/4) - Cognito初期設定 -
AWSのNoSQLデータベースDynamoDBをDBとしてデータ操作を行うための基本的な設定のご紹介です。
AndroidとDynamoDB実装方法 (1) - AWS SDKの準備 -に続き、AWS Cognitoの設定を行います。
AWSのサービスをモバイルから使うときは、APIキー等を以前は使用していたと思いますが、現在はCognitoによる認証が基本となります。DynamoDB連携の事前作業として、Congnitoの初期設定を行います。
[目次]
Cognitoとは
Amazon Cognito は、ユーザーの一意の ID を作成したり、独自のユーザープールを使用するかまたはフェデレーテッド ID プロバイダーを使用して認証したりできるサービスです。アプリケーションの設定やゲームの状態などのモバイルユーザーデータを AWS クラウドに保存できます。バックエンドコードの記述やインフラストラクチャの管理は必要ありません。
今回の実装のケースで言うと、Android端末からDynamoDBへアクセスする際の認証機能としてCongnitoを使います。ユーザID/PWというような認証ではなく、今回のアプリ用のキーを発行してそのキーがプログラム内に記載されていれば、どんなアプリでもDynamoDBへアクセスすることができるという設定です。
AWSでのモバイル開発での認証方式について
AWSでは以下の通り、モバイル開発においてAWSを使用する場合Cognitoを使用するによう記載されています。アクセスキーをプログラム内に書くやり方も可能ですが、リスクとして、アプリ配布後、クラッカーがプログラムを解析して、プログラム内に記載されているアクセスキーを取得し、悪用することが出来てしまいます。その為、アプリ毎に権限をコントロールできるCognitoを使用することを推奨しています。
暗号化ストレージ内であっても、アクセスキーをアプリに埋め込まないでください。代わりに、Amazon Cognito を使用して、アプリでユーザー ID を管理してください。このサービスでは、Amazon、Facebook、Google、または OpenID Connect (OIDC) に対応している任意の ID プロバイダを使用してユーザーを認証できます。さらに、Amazon Cognito 認証情報プロバイダを使用して、AWS にリクエストを送信するためにアプリが使用する認証情報を管理できます。
アイデンティティプールの作成
AWSコンソールにログインし、「Cognito」サービスを開きます。
開いた画面で「Manage Federated Identities」をクリック。
「Identity Pool Name」に任意の認証グループ名を記載します。その際に「Enable access to unauthenticated identities」にチェックを入れ匿名ユーザのアクセス設定を可能な状態にします。
デフォルトの状態で「Allow」をクリックします。
以下のような認証情報が記載されますので「Get AWS Credentials」の方をテキストでコピーしておきます。
「Store User Data」はCongnitoの機能で端末間のユーザ情報を同期するための同期プログラムですので、この中では使用しません。
以上で、Cognitoの設定は終了です。続いて、DynamoDBの初期設定に進みます。
関連記事
AndroidとDynamoDB実装方法 (1) - AWS SDKの準備 -
AndroidとDynamoDB実装方法 (2) - Cognito初期設定 -
AndroidとDynamoDB実装方法 (3) - DynamoDB初期設定 -
AndroidとDynamoDB実装方法 (4) - プログラミング -
AndroidとDynamoDB実装方法 (1/4) - AWS SDKの準備 -
AWSのNoSQLデータベースDynamoDBをDBとしてデータ操作を行うための基本的な設定のご紹介です。
以下の4つに小分けてし記載しています。
AndroidとDynamoDB実装方法 (1/4) - AWS SDKの準備 -
AndroidとDynamoDB実装方法 (2/4) - Cognito初期設定 -
AndroidとDynamoDB実装方法 (3/4) - DynamoDB初期設定 -
AndroidとDynamoDB実装方法 (4/4) - プログラミング -
目次
1.Androidプロジェクトの作成
普通に以下のメニューから新規作成。「Start a new Android Studio project」をクリック。
任意のアプリケーション名に設定し、「Next」をクリック。
「Phone and Table」を選択し、API16のもの(デフォルト)とし、「Next」をクリックします。本記事で使用しているAWS SDK 2.3.3はAWSのサイトにて「Android 2.3.3 (API Level 10) or higher. 」と記載があるのでそのようにしています。
このサンプルでは「Blank Activity」としています。 「Next」をクリック。
デフォルトのまま、「Finish」を選択します。
2.AWS Mobile SDK for Androidのダウンロード
プロジェクトを作成している間に次の作業を並列して行います。こちらのサイトよりAWS Mobile SDK for Androidをダウンロードする。
ダウンロードされたファイルを展開しておきます。AndroidとDynamoDB連携で、今回利用するのは、以下のライブラリです。
aws-android-sdk-cognito-2.3.3.jar aws-android-sdk-core-2.3.3.jar aws-android-sdk-ddb-2.3.3.jar aws-android-sdk-ddb-mapper-2.3.3.jar
3.AWS Mobile SDK for Androidのプロジェクトへの設定
Android Studioのプロジェクトが開いたら、メニューから、「Project」を選択します。
ツリーを開くと「libs」があるので上図のフォルダ内のファイルをドラッグアンドドロップで「libs」に入れる。
以下の状態で「OK」を押す。
以下の状態で「OK」を押す。
以下の状態で「OK」を押す。
以下の状態になることを確認します。
続いて、メニューを「Project」から「Android」に戻し、「build.gradle」をダブルクリックします。「dependencies」に以下の部分を記載します。その後、右上に「Sync Now」が表示されるのでクリックします。30秒程度時間が掛かりますので待ちます。
compile 'com.amazonaws:aws-android-sdk-core:2.3.+' compile 'com.amazonaws:aws-android-sdk-ddb:2.3.+' compile 'com.amazonaws:aws-android-sdk-ddb-mapper:2.3.+' compile 'com.amazonaws:aws-android-sdk-cognito:2.3.+'
続いて、app > manifests > AndroidManifest.xml に「
これでAWS SDK とプロジェクトの準備は完了です。続いてAWS ConsoleにログインしてCognitoの設定を行います。
関連記事
AndroidとDynamoDB実装方法 (1/4) - AWS SDKの準備 -
AndroidとDynamoDB実装方法 (2/4) - Cognito初期設定 -
AndroidとDynamoDB実装方法 (3/4) - DynamoDB初期設定 -
AndroidとDynamoDB実装方法 (4/4) - プログラミング -
Android Studioでログ出力する方法(logcat)
Androidアプリケーション開発中にログをデバッグのために出力したい場合が頻繁にあるかと思います。その用途向けにAndroid Studioで提供されているログの出力方法を記載します。
1. Logクラスを使用する
Android開発においてLogクラスが提供されており、以下のメソッドが提供されています。
Log.v:VERVOSE(すべてのログ情報) Log.d:DEBUG(デバッグ情報) Log.i:INFO(情報) Log.w:WARN(警告) Log.e:ERROR(致命的な問題)
構文は以下の通りです。
Lod.v(String tag, String msg);
エラー時の例外を出力させたい場合は、第3引数に以下のように指定します。
Lod.v(String tag, String msg, Throwable tr);
3.使用例
String test = "this is custom message";Log.v("テスト", "これはメッセージです「" + test + "」終わり");
4.メソッド毎の出力例
String test = "this is custom message"; Log.v("テスト", "これはメッセージです「" + test + "」終わり"); Log.d("テスト", "これはメッセージです「" + test + "」終わり"); Log.i("テスト", "これはメッセージです「" + test + "」終わり"); Log.w("テスト", "これはメッセージです「" + test + "」終わり"); Log.e("テスト", "これはメッセージです「" + test + "」終わり");
5.logcatの使用方法
以下の画像の通りプルダウンから、Logクラスのメソッド別にフィルタリングできます。ただ注意点として特定のLogクラスを表示するのではなく、指定したLogクラスの重要度が高いものを表示します。例えば、「Warn」を指定すると「Warn」、「Error」、「Assert」が表示されます。
また検索窓から文字列検索ができます。
他、主なツールアイコンの意味は以下となります。