[レポート] AWS CLI / SDK 入門 #AWSSummit
はじめに
中山(順)です。
こちらはAWS Summit Tokyo 2018で行われたセッション「AWS CLI / SDK 入門」のレポートです。
スピーカーは、アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューションアーキテクトの塚越啓介さんです。
セッション概要
AWS SDK / CLI / Amplify など AWS を操作するための様々な手段があります。本セッションではコンソールを使わずにコマンドラインから AWS を操作する方法や、アプリケーションから AWS のリソースを扱う方法など AWS を便利に操作する方法をユースケースをベースに解説します。
レポート
このセッションは、プログラマブルなインターフェースを使ってAWSを操作する方法の紹介となります。
プログラマブルなインターフェース
操作する手段
AWSを操作する方法としては、以下の3つに大別されます。
- マネージメントコンソール
- CLI
- SDK
プログラマブルなインターフェースとは?
プログラマプルなインターフェースがあれば、操作の再現性を高めたり、操作を自動化することが可能になります。 マネージメントコンソールではそうはいきません。
AWSでは全てのサービスはAPIを有しており、マネージメントコンソールやCLIで操作することが可能です。 また、様々な言語のSDKも提供しています。
認証方法
インターフェースによって認証方法が異なります。
- マネージメントコンソール
- ユーザー名、パスワード
- CLI、SDK
- アクセスキー、シークレットアクセスキー(、セッショントークン)
各インターフェースの紹介
汎用的なインターフェース以外にも特定の用途に特化したインターフェースが用意されています。
- ベーシック(汎用)
- CLI
- SDK
- モバイル
- Mobile CLI
- Mobile SDK
- フロントエンド
- Amplify
AWS CLI
OSSのツールで、マネージメントコンソールで可能な全ての機能を利用可能です。
様々な環境で実行可能です。
- Linux
- Windows
- Remote
パラメータの形式は以下のようになっています。
aws <service> <operation> [parameters]
- service
- サービス名
- operation
- サービスごとのコマンド
- parameters
- コマンドごとのパラメーター
SDK
APIをwrapした各種言語向けのSDKが提供されています。 SDKには、ほとんどのAWSサービスをサポートしています。
Mobile SDK
Mobileに関連性の強いサービスとして、以下のようなAWSサービスが存在します。
- Cognito
- 認証認可
- データ同期
- Pinpoint
- プッシュ通知
- 行動分析、ユーザーエンゲージメント
- Device Farm
- テスト、リモート表示
- S3
- メディアの配信
- CloudFront
- メディアの配信
- Lambda
- DynamoDB
- データの保存
- Kinesis
- ストリーム処理
- Lex
- 会話型インターフェース
Mobile SDKは、モバイルアプリの開発に最適化されたSDKで、上記のようなサービスをモバイルアプリで容易に利用できます。
以下のプラットフォームをサポートしています。
- iOS
- Android
- Xamarin
- Unity
サポートしているサービスなどの詳細は以下の開発者ガイドをご確認ください。
Mobile CLI
JavaScriptのフロントエンド開発者向けのツールです。 ターミナルからMobile Hubの設定が可能になります。
以下ようなコマンドでバックエンド側のリソースの作成が可能です。
init
Mobile Hubのプロジェクトを作成します(バックエンドサービスとしてAWSリソースが実際に作成されます)。
awsmobile init
feature
利用するバックエンドサービスを選択します。
このコマンドでの変更はローカル上でのもので、実際にAWSリソースが作成されるのはawsmobile push
コマンドを実行するときです。
awsmobile feature
push
awsmobile feature
コマンドで追加したバックエンドサービスを実際に作成します。
awsmobile push
AWS Amplify
JavaScriptのフロントエンド開発者向けのツールです。 フロントエンドの開発に特化しており、非同期/イベントドリブンな処理を実装しやすいです。
AWS Amplify - A JavaScript library for application development using cloud services. -
以下のフレームワークに対応しています。
- React
- React Native
- Angular
- lonic
- Vue.js(Coming soon)
各種UIコンポーネントも提供されているとのことです。
また、Service Workerにも対応しているとのことです。
よろしければ、弊社諏訪の記事もご覧ください。
AWSの次世代JavaScriptライブラリ「AWS Amplify」の概要とReactアプリに導入する手順 #serverless #adventcalendar
Basic Step of AWS CLI
以下の手順でCLIの利用を開始することが可能です。
- AWSにサインアップ
- ユーザーとグループを作成
- AWS CLIのインストールとプロファイルの作成
ユーザーとグループを作成
以下の手順でユーザーと認証情報の生成、権限の付与を行います。
【以下、補足】
補足ですが、アクセスキー(永続的な認証情報)の管理にはご注意ください。 可能であればIAMロールを使って一時的な認証情報を利用しましょう。
Cloud9環境やインスタンスプロファイルを付与したEC2インスタンスでは認証情報を意識する必要が無いので、作業環境としてはおすすめです。
AWS Managed Temporary Credentials
Amazon EC2 インスタンスでの一時的な認証情報の使用
【補足ここまで】
インストール
以下の手順でインストールおよび認証情報を実施します。
- pipでインストール
- aws configureでプロファイルを設定
Installing the AWS Command Line Interface
コマンド補完
必要に応じてコマンド補完設定を行いましょう。
bash
$ complete -C '/usr/local/bin/aws_completer' aws
tcsh
> complete aws 'p/*/`aws_completer`/'
zsh
% source /usr/local/bin/aws_zsh_completer.sh
開発環境
以下のIDE向けのツールを提要しています。
Cloud9としてIDEそのものを提供しています。 Cloud9にはここまでに紹介した各種ツールがインストール済みなので、インストールの手間などを大幅に削減することが可能です。
SDKの利用例
セッションではpython(boto3)のサンプルコードの紹介もされていました。 公式のドキュメントにもいくつかありますのでご覧頂ければと思います。
まとめ
プログラマブルなインターフェースを利用することで、操作の再現性や自動化を実現することが可能です。 もちろん、作業の手順が明確になっていることが前提です。 ビジネス的な成果に直接結びつかないことに時間を割かなくても済むように備えていきたいですね。
作業環境としてもCloud9はとても優秀だと思うので、今後積極的に活用していきたいと思いました。
また、Mobile SDK / Mobile CLI / AWS Amplifyについてほとんど知らなかったので、このセッションで知ることができて良かったです。
現場からは以上です。