Coder Social home page Coder Social logo

trellixvulnteam / google-cloud-finction-anything_vdgd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mengziq/google-cloud-finction-anything

0.0 0.0 0.0 35.03 MB

Google Cloud Functionの実装方法と、2種類の起動方法(定期実行・スマホのショートカット)と、IPの取得方法について。

Shell 0.02% JavaScript 0.04% C++ 0.04% Python 90.78% C 8.39% Assembly 0.01% PowerShell 0.01% CSS 0.18% TeX 0.01% Makefile 0.01% HTML 0.41% PLSQL 0.06% Batchfile 0.01% Roff 0.06% VBScript 0.01%

google-cloud-finction-anything_vdgd's Introduction

Google Cloud Functionを使う  

参考レポジトリ:google-cloud-function-pythonic
仕事で、EC2を定期的にシャットダウンするためにGoogle Cloud FunctionとLambdaを使いました。   本当はLambdaだけでも実装できるのですが、基本的にGCPの方が値段も安いし、と言うことで定期実行のトリガー部分だけLambdaにお任せする形で実装してあります。

仕組み その1「定期実行」(cron)

lambdaでGCFを起動させて、GCFでEC2をシャットダウンする。   元々はGCFだけで実装予定だったけど、定期実行の仕組みがGCFになかったっぽいので、GCFの起動のためだけにlambda関数を作成した。

実装でハマったポイント

  • GCPではDebianのインスタンスを作成して、そこで上記作業をしていたが、pypyがうまく動かなかった。ubuntu(yuri)で動かしたら動いた。
  • AWSのIAMユーザーにアタッチするポリシーは「AdministratorAccess」でないと動かない。
  • 「AdministratorAccess」のポリシーを付与しても、別のポリシーでIP制限されると起動しなくなる。この時、Lambdaは起動しているぽい(GCFが起動しているので)。
  • なので、IP制限しているポリシーから「Lambda」のグループをデタッチしたけど当然動かない。
  • とにかく、Lambdaは起動するが、起動したからといってEC2にアクセスできるのかは分からない。まだ試してない。
  • Lambda関数の関数コードはzipファイルをアップロードしたが、この時、zipファイルの作成方法が特殊。ディレクトリごと圧縮してはいけない。aws_lambda_driverの中身のみを圧縮する。コマンドは以下のイメージ。  
$ cd aws_lambda_driver
$ zip -r ../ec2_onoff.zip .

仕組み その2「スマホのショートカットから実行」(shortcut)

GCFだけで実装。   実装後は、スマホのショートカット機能でGCFのトリガーとなるURLを登録する。
GCPからGCFを起動する関係か、GCPの認証を通す必要がある。

実装でハマったポイント

  • GCFを使うための認証を通すには、「サービスアカウントキー」が必要。「APIとサービス」→「認証情報」→「認証情報の作成」→「サービスアカウントキー」→「新しいサービスアカウント」→「サービスアカウント名」を適当につける→役割「Compute Engine」の「Compute Admin」→「キーのタイプ」はJSONで作成

google-cloud-finction-anything_vdgd's People

Contributors

mengziq avatar trellixvulnteam avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.