Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Lambdaの今現在

hihats
September 01, 2017

AWS Lambdaの今現在

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

hihats

September 01, 2017
Tweet

More Decks by hihats

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  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 をつ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. Lambdaとは

    View Slide

  11. Lambdaとは
    メリット
    ● コスト
    Lambda では 1 か月に 1,000,000 件の無料リクエストおよび 400,000
    GB-秒のコンピューティング時間が無料利用枠となっています。
    ● 運用
    サーバメンテナンスの面
    オートスケール気にしない
    通知の設定が簡単

    View Slide

  12. 実際使ってみて

    View Slide

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

    View Slide

  14. View Slide

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

    View Slide

  16. Serverless
    Framework

    sls
    コマンドで大体のことができる

    yml
    でもろもろ設定
    ● コマンド一発で Lambda にデプロイ
    ● npmインストールして使う
    ● AWSのIAMロール(管理者権限)が必要

    View Slide

  17. Dockerでできるんじゃない?

    View Slide

  18. LambCI ●
    Lambda

    CI
    環境を作ろうという
    OSS
    ● 自前で作るよりは楽

    CI
    サービスよりは低コスト

    View Slide

  19. View Slide

  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))

    View Slide

  21. 使いたいパッケージは requirements.txt に書く
    twitter
    pymongo
    numpy
    requests_oauthlib
    pytz

    View Slide

  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 *

    View Slide

  23. docker最高ですね

    View Slide