- イベント名:AWS re:Invent 2017 Serverless re:Cap
- 開催日時:2017-12-11(月)
- 会場:アマゾン 目黒オフィス
最近、Serverless 関係の開発力を付けないとなあ……と思っていることもあって、AWS のイベントに参加してきました。
いずれちゃんとしたレポートが出てくると思いますが、個人的に気になった部分のメモを公開しておきます。
Serverless Updates (AWSJ SA 小梁川貴史)
- AWS Lambda
- メモリ容量を最大3GBまで設定可能に
- Go 言語と .NET Core 2.0 のサポートを プリアナウンス
- CloudTrailに起動イベント(invoke)も記録されるように
- 関数ごとに同時実行可能数の上限を設定可能に(いままではアカウント全体での上限のみ)
- コンソールから、その関数に設定したロールでアクセス可能なサービスを確認できるようになった
- CodeDeploy での段階的デプロイのサポート
- AWS Serverless Repository
- Amazon API Gateway
- いままでは Lambda のVPCアクセスを挟む必要があったが、その必要がなくなった
- カナリアリリースのサポート(複数バージョンの混在)
- API Integration(統合API)のタイムアウトのカスタマイズ設定が可能に
- アクセスログの書式指定が可能に
- Amazon Cognito
- 認証機能の強化(ASF)
- AWS Step Functions
- re:Invent 前に発表された内容:state machine の update が可能となった
(※もし、スライドが公開されたら「本日ご紹介した update 一覧」のページだけ見れば概要がわかる)
AWS AppSync (AWSJ PS 塚越啓介)
- DevOps Consultant の方
- AppSync
- フルマネージド GraphQL サービス
- リアルタイム機能とオフライン機能にフィーチャ
- 現在パブリックプレビュー中
- AppSync のコンセプト
- AWS AppSync Client: クライアントライブラリの提供
- DataSource: Amazon DynamoDB, ElasticSearch, AWS Lambda をサポート
- Identity: GraphQL Proxy での認証
- GraphQL Proxy: リクエストのマッピングなど
- Operation:
- (※あと2つの特徴はメモできなかった)
- GraphQL の解説
- GraphQL Subscription
- Mutation をトリガーにしたイベントベースモード
- コンソールのデモ
- Schema, Data Source の定義など
- GraphiQL みたいなコンソールを提供してくれる
- クライアントのデモ
- ネットワークが繋がらないときは、ローカルストレージにキャッシュされる
- ネットワークが復帰すると、バックグラウンドで同期される
- 片方のクライアントからイベントを送ると、subscribeしている他のクライアントにpublishされて、画面が更新される
- 質問
- pagination の実装はどれくらい面倒見てくれるのか?
- 支援の機能はある。詳しくはサンプルコードを参照
- データベース側への制約はない。DynamoDB 側で next token とか設定すれば、自動的にやってくれる
- pagination の実装はどれくらい面倒見てくれるのか?
AWS Fargate (AWSJ SA 大村幸敬)
- Fargate 概要
- インスタンス管理不要
- タスクネイティブAPI
- タスク → 複数のコンテナを1つにまとめた単位
- タスクごとに Elastic Network Interface (ENI) が振られる → タスクに直接 IP アドレスを設定できる
- ECS の場合は、コンテナはホストと通信する構成だった
- リソースベースの価格
- CPU と メモリは、50 種類のパターンから選択
- 秒単位の課金
- SLA は 99.99%(EC2 と同等レベル)
- 現在、全世界の Kubernetes 上で動くワークロードの 63% は、AWS 上で動いている
- Amazon EKS
- EKS であっても、インフラ部分の管理は必要
- Fargate の EKS サポートは 2018 年の予定
- Lambda と Fargate の使い分け
- デモ
- マルチAZ、パブリックサブネット/プライベートサブネットの構成
- タスクごとに CPU、メモリなどを指定
- Fargate Under the Hood
- Task Definition を登録。これを使ってタスクを実行
- Per task ENI で動くので、今まで使っていた VPC でのアクセス制御が可能
- ALB/NLB との組み合わせが可能
- visibility がなくなった部分は、CloudWatch でメトリクスを確認するなど
- Fagate 関連セッション(CON333, CON401 あたりが面白い)
AWS Cloud9 (AWSJ Specialist SA 福井厚)
- Cloud9
- クラウドネイティブなIDE
- EC2 か、SSH 接続可能な Linux サーバにインストールできる
- Cloud9 からコンソールを実行して、AWS CLI を利用したりできる
- 複数のダッシュボードを利用して、(アカウントを?)切り替えられる
- AWS CodeStar と連携
- 一般的な IDE と同様の操作(例:ショートカットキー、ステップ実行、ブレークポイントなど)
- Serverless Application Integration
- リモートの Lambda ファンクションを参照できる
- Cloud9 をインストールできるリージョンは限られるが、Lambda は任意のリージョンのものを参照できる
- SAM のテンプレートを自動作成
- Cloud9 上で Lambda のパラメータのペイロードを変更して、実行できる
- リモートの Lambda ファンクションを参照できる
- Collaboration
- IAM ユーザ間で Cloud9 の環境を共有できる
- 共有したユーザ間でのチャット、ペアプログラミング(共同編集)ができる
- AWS CodeStar Integration
- CodeStar から Cloud9 の環境を構築できる
- Cloud9 の利用自体は無料
- EC2 の実行時間と、ストレージ利用量だけが課金対象
ML Services (AWSJ Specialist SA 西谷圭介)
- 西谷さん、2月末に「サーバーレスアプリケーション開発ガイド」を発売予定
- AWS の ML サービススタックの Services 層に追加された4つの製品の紹介
- Amazon Compprehend
- 自然言語理解サービス
- 英語とスペイン語に対応
- キーフレーズの抽出、関連する用語の分類、言語の認識、感情分析(文章のニュアンス)
- Twitter 等のリアルタイム分析だけでなく、S3 上のファイルに対するバッチ処理も可能
- Amazon Translate
- 翻訳サービス
- 対応言語 → Amazon Translate Features – Amazon Web Services (AWS)
- At Preview, Amazon Translate supports translation between English and any of the following languages: Arabic, Chinese (Simplified), French, German, Portuguese, and Spanish.
- Amazon Rekognition Video
- 画像認識サービス Amazon Rekognition の動画版
- 分析結果は1つの JSON で返される
- JSON にさまざまな分析結果が格納されており、必要に応じて使う
- Amazon Transcribe
- 音声をテキストに変換するサービス(文字起こし)
- プレビューでの対応言語は英語とスペイン語
- 通常音声と電話音声の両方をサポート
- タイムスタンプと、その時刻の文字起こしの信頼度
- ユースケース:コールセンターの音声データの可視化
- S3 -> Lambda -> Amazon Transcribe -> Amazon Comprehend -> Athena -> QuickSight
感想
Serverless といいつつ、真っ先に連想されそうな Lambda の話はあまりありませんでした。最初のサマリと、あとは Cloud9 の話題が一番 Lumbda に近かったですかね。それでも結構面白かったです。
Fargate は、運用の楽さと AWS サービスとの連携機能が魅力的で、Docker を使うならやっぱり便利そう。Fargate の EKS 対応がリリースされたら、実業務で使ってみたいところです。
GraphQL は以前に少しだけ調べたことがあるんですが、GraphQL Subscription というのが出ているのは知りませんでした。動きが早い分野なので時々見ないと駄目ですね。この辺を読むのがいいでしょうか?