[レポート] AWS CLI / SDK 入門 #AWSSummit

2018.06.02

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

はじめに

中山(順)です。

こちらは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のツールで、マネージメントコンソールで可能な全ての機能を利用可能です。

AWS コマンドラインインターフェイス

様々な環境で実行可能です。

  • 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

サポートしているサービスなどの詳細は以下の開発者ガイドをご確認ください。

AWS Mobile SDK ドキュメント

Mobile CLI

JavaScriptのフロントエンド開発者向けのツールです。 ターミナルからMobile Hubの設定が可能になります。

以下ようなコマンドでバックエンド側のリソースの作成が可能です。

init

Mobile Hubのプロジェクトを作成します(バックエンドサービスとしてAWSリソースが実際に作成されます)。

awsmobile init

https://docs.aws.amazon.com/ja_jp/aws-mobile/latest/developerguide/aws-mobile-cli-reference.html#aws-mobile-cli-reference-init

feature

利用するバックエンドサービスを選択します。 このコマンドでの変更はローカル上でのもので、実際にAWSリソースが作成されるのはawsmobile pushコマンドを実行するときです。

awsmobile feature

https://docs.aws.amazon.com/ja_jp/aws-mobile/latest/developerguide/aws-mobile-cli-reference.html#aws-mobile-cli-reference-features

push

awsmobile featureコマンドで追加したバックエンドサービスを実際に作成します。

awsmobile push

https://docs.aws.amazon.com/ja_jp/aws-mobile/latest/developerguide/aws-mobile-cli-reference.html#aws-mobile-cli-reference-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コンポーネントも提供されているとのことです。

UI Components for React

UI Components for Angular

また、Service Workerにも対応しているとのことです。

Service Workers

よろしければ、弊社諏訪の記事もご覧ください。

AWSの次世代JavaScriptライブラリ「AWS Amplify」の概要とReactアプリに導入する手順 #serverless #adventcalendar

Basic Step of AWS CLI

以下の手順でCLIの利用を開始することが可能です。

  • AWSにサインアップ
  • ユーザーとグループを作成
  • AWS CLIのインストールとプロファイルの作成

ユーザーとグループを作成

以下の手順でユーザーと認証情報の生成、権限の付与を行います。

【以下、補足】

補足ですが、アクセスキー(永続的な認証情報)の管理にはご注意ください。 可能であればIAMロールを使って一時的な認証情報を利用しましょう。

Assuming a Role

Cloud9環境やインスタンスプロファイルを付与したEC2インスタンスでは認証情報を意識する必要が無いので、作業環境としてはおすすめです。

AWS Managed Temporary Credentials

Amazon EC2 インスタンスでの一時的な認証情報の使用

【補足ここまで】

インストール

以下の手順でインストールおよび認証情報を実施します。

  • pipでインストール
  • aws configureでプロファイルを設定

Installing the AWS Command Line Interface

Configuring the AWS CLI

コマンド補完

必要に応じてコマンド補完設定を行いましょう。

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)のサンプルコードの紹介もされていました。 公式のドキュメントにもいくつかありますのでご覧頂ければと思います。

Code Examples

まとめ

プログラマブルなインターフェースを利用することで、操作の再現性や自動化を実現することが可能です。 もちろん、作業の手順が明確になっていることが前提です。 ビジネス的な成果に直接結びつかないことに時間を割かなくても済むように備えていきたいですね。

作業環境としてもCloud9はとても優秀だと思うので、今後積極的に活用していきたいと思いました。

また、Mobile SDK / Mobile CLI / AWS Amplifyについてほとんど知らなかったので、このセッションで知ることができて良かったです。

現場からは以上です。