Pro Yearly is on sale from $80 to $50! »

AWS Lambdaの今現在

40f0651571d172e141b24b34602601d1?s=47 hihats
September 01, 2017

AWS Lambdaの今現在

Lambdaで色々やろうとして悪戦苦闘した話をまとめました。
結論Docker上げです。

40f0651571d172e141b24b34602601d1?s=128

hihats

September 01, 2017
Tweet

Transcript

  1. AWS Lambdaの今 2017 Autumn 手軽さと手軽でないところと

  2. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。 AWSの公式ドキュメントより http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html

  3. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。AWS Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから

    1 秒あたり数千のリクエストまで自動的にスケーリングし ます。使用したコンピューティング時間に対してのみお支払いいただきます- コードが実行中でなければ料金はかかりません。AWS Lambda によって、実質どのようなタイプのアプリケーションやバックエンドサービスでも、管理なしでコードを実行できます。AWS Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースの管理をすべて担当 します。これにはサーバーおよびオペレーティングシステムの管理、キャパシティーのプロビジョニングおよび自動スケーリング、コー ドのモニタリングおよびログ記録などが含まれます。必要な操作は、AWS Lambda がサポートするいずれかの言語 (現在は Node.js、Java、C# および Python) でコードを指定するだけです。 AWS Lambda を使用して、Amazon S3 バケットまたは Amazon DynamoDB テーブル内のデータの変更などのイベントに応答し てコードを実行できます。Amazon API Gateway を使用して HTTP リクエストに応答してコードを実行します。または AWS SDK を 使用して作成された API コールを使用してコードを呼び出します。これらの機能により、Lambda をつ
  4. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。

  5. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。

  6. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。

  7. Lambdaとは AWSコンソールの GUI エディタ画面上でコーディング

  8. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。 手軽に作れるバッチサーバのイメージ

  9. Lambdaとは AWS Lambda とは AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。 手軽に作れるバッチサーバのイメージ +プラス イベントドリブンでプログラムを実行

  10. Lambdaとは

  11. Lambdaとは メリット • コスト Lambda では 1 か月に 1,000,000 件の無料リクエストおよび

    400,000 GB-秒のコンピューティング時間が無料利用枠となっています。 • 運用 サーバメンテナンスの面 オートスケール気にしない 通知の設定が簡単
  12. 実際使ってみて

  13. • 複雑な処理もやりたくなる

  14. None
  15. ローカルマシン環境で開発するには Node, python, java, C# それぞれ用の SDK っぽいものがあり、それぞれ使う言語と使うラ イブラリをプロジェクトホームにインストールしなければならない コーディング終わったら、デプロイパッケージ(

    ZIP ファイル)固めてアップロード しなけれ ばならない
  16. Serverless Framework • sls コマンドで大体のことができる • yml でもろもろ設定 • コマンド一発で

    Lambda にデプロイ • npmインストールして使う • AWSのIAMロール(管理者権限)が必要
  17. Dockerでできるんじゃない?

  18. LambCI • Lambda で CI 環境を作ろうという OSS • 自前で作るよりは楽 •

    CI サービスよりは低コスト
  19. None
  20. $ ls lambda_function.py input.json $ docker run -v "$PWD":/var/task lambci/lambda:python3.6

    lambda_function.lambda_handler $(printf '%s' $(cat input.json))
  21. 使いたいパッケージは requirements.txt に書く twitter pymongo numpy requests_oauthlib pytz

  22. Dockerfileに実行環境用のビルドファイルを書く FROM lambci/lambda:build-python3.6 ENV LANG C.UTF-8 ENV AWS_DEFAULT_REGION ap-northeast-1 RUN

    /bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime WORKDIR /var/task ADD . . CMD pip install -r requirements.txt -t /var/task && \ zip -9 deploy_package.zip twitter_crawler.py && \ zip -r9 deploy_package.zip *
  23. docker最高ですね