CI/CDのためのAlexa:AWSラムダとビットライズAPIによるServerlessへの導入-パート1


このチュートリアルでは、AWSラムダを使用する方法についてのいくつかの経験を共有し、カスタムラムダ関数を使用してビットライズAPIを使用してビットライズビルドをトリガーするServerless関数をデザインして構築する方法を学びます.
ソフトウェア開発の初期には、Web、モバイル、バックエンドアプリケーションを開発しようとする人は、高価なプロセスであるサーバーを実行するのに必要なハードウェアを所有しなければなりませんでした.
そして,クラウドコンピューティングが到来すると,サーバ空間やサーバの数を遠隔でリースできるようになった.サーバースペースのこれらの固定単位を借りるデベロッパーと企業は、一般に、トラフィックまたは活動のスパイクが彼らの毎月の限度を超えて、彼らのアプリケーションを壊さないことを確実とするために、買わなくなります.このため、有料のサーバスペースがたくさん無駄になります.
これの結果として、Serverlessなコンピューティングは、開発者が彼らが使用するものだけを支払わなければならないことを意味するペイパーユースベースでバックエンドサービスを購入することができます.

Serverlessとは何か


無サーバ環境では、クラウドプロバイダ(AWS、Azure、またはGoogle Cloud)は、コードを実行するリソースを動的に割り当てます.コードが実際に実行されるとコストが発生します.通常実行されるコードはstatelessコンテナと呼ばれ、これは様々なイベント、例えばデータベースイベント、呼び出しAPIエンドポイント、およびcronジョブによって引き起こされる.
Serverless Computingは、自分のサーバを維持することなく、これらの関数を実行する能力を意味します.
「Serverless」という用語は、サーバーの欠如を参照していませんが、むしろ、サーバー、オペレーティングシステム、ネットワーク層、およびインフラストラクチャの残りがアプリケーションコードの書き込みに集中できるように既に構成されています.

AWSラムダとは何か


AWS Lambda is a compute service that lets you run code without provisioning or managing servers. Lambda runs your code on a high-availability compute infrastructure and performs all of the administration of the compute resources, including server and operating system maintenance, capacity provisioning and automatic scaling, code monitoring and logging.
— AWS Lambda Documentation.


それが完全に管理されたサービスであるので、あなたはAWSラムダでどんな基盤についてでも心配する必要はありません.
例えば、あなたはAWSラムダを使用してバックエンドを開発することができますAmazon API Gateway APIリクエストを認証し、処理する.

イメージソースhttps://aws.amazon.com/de/lambda/
ラムダ関数は、様々なタスクを実行することができます.これは、Webページをデータの処理ストリームから、APIを呼び出すためのデータストリームを処理したり、CloudWatch、APIゲートウェイ、S 3、SNSなどの他のAWSサービスと統合することです.

どのように、AWSラムダは働きますか?


関数が作成されると、ラムダは新しいコンテナーにそれをパッケージし、AWSによって管理されるマシンのマルチテナントクラスタ上でそのコンテナを実行します.機能が起動する前に、各機能のコンテナは必要なRAMとCPU容量を割り当てられます.関数が実行を終了すると、最初に割り当てられたRAMには、実行した関数の時間が乗算されます.顧客は、割り当てられたメモリおよび実行時間の量に基づいて、その関数が完了するまで充電されます.

サポート言語とランタイム


AWSラムダは、最も人気のある言語の数と、このようなnodejs、Python、ルビー、Java、GO、Cfull list サポートされている.

ラムダ価格設定


With AWS Free Tier , あなたは無料で100万リクエストを実行することができます.また、あなたがあなたのAWSラムダ建築コストを推定したいならば、あなたはAWSを使うことができますPricing Calculator . ラムダ価格についての詳しい情報はpricing セクション.

AWSラムダから始める


次のインターフェイスのいずれかを使用して、ラムダ関数を作成、呼び出し、および管理できます.
  • 管理コンソール
  • コマンドラインインターフェイス
  • AWS SDKS
  • AWS雲形成
  • このチュートリアルではAWS Management Console nodejsを使用してラムダ関数を作成します.
    始める前に、以下の前提条件が必要です.
  • AWS Free Tier account
  • IDEVS Code or IntelliJ IDEA
  • NODEJS

  • AWS CLI とAWSのアカウントを設定します
  • 最初のラムダ関数から始めましょう.
  • AWS管理コンソールにあなたのAWS口座でログインしてください
  • 計算サービスからAWSラムダを選択する
  • 関数をクリック
  • 我々は独自の機能を構築し、テンプレートや青写真を使用しないため、スクラッチオプションから著者を選択します
  • 関数名を追加します.JS 14 .Xとデフォルトのオプションでアーキテクチャを残します.
  • 許可セクションでは、基本的なラムダパーミッションを使用して新しいロールを作成し、Create関数をクリックします

  • 祝辞🎉 最初のラムダ関数を作成し、機能の概要とコードエディタをオンラインで編集します.


    これで、コードを変更したり、関数をテストしたり、CloudWatchを使用してトラフィックを監視したり、環境変数を設定したり、関数を展開したりするなどの機能を使用して、すべてを行うことができます.
    機能概要では、次の2つのオプションがあります.
    トリガーを追加します.我々のケースでは、それはAlexa技術キットです.
    宛先を追加します:あなたの関数が非同期に呼び出されるとき、または、あなたの機能のプロセスがSNS話題のようなストリームから記録するなら、目的地への呼び出し記録を送るために.



    では、どのように機能をテストするかを学びましょう.
  • テストをクリックして、イベント名(Hello)で新しいイベントを作成してください、そして、異なるテンプレートがあるので、テンプレートはHello Worldです.
  • ボタンをクリックし、もう一度テストボタンをクリックしてテストイベントをトリガーします

  • そして、実行結果は、オンラインエディタで新しいタブで表示されます.

    ラムダ関数を調査した後、どのようにトリガーしてテストするかを知った後、我々の関数を実装してビットライズビルドをトリガーする方法を知っておくべき時間です.
    このチュートリアルの次の手順では、ビットライズアカウントを持ち、APIキーをアクセスする必要があります.Bitrise APIの詳細については、APIキーを取得する方法を読むことができますarticle .

    とラムダAPI


    我々はプロジェクトをローカルで作成し、それから私たちのサービスの一部としてNodeRowModuleフォルダーを含むようにラムダにアップロードするため、複数のビルドモジュールをインストールする必要があります.
    始めましょう!
  • 端末を開き、新しいフォルダを作成します
  • mkdir LambdaBitrise
    cd LambdaBitrise
    
  • 次のコマンドでnodejsプロジェクトを作成します.npm init
  • 何も変更する必要がない場合はデフォルトの設定を残してください.

  • パッケージ.生成されるJSONファイル
    プロジェクトを開くVS Code プロジェクト内のファイルを管理することができます.
    ここで、Aをトリガする関数を実装する必要がありますnew build ビットストリームAPIからのエンドポイントです.
  • プロジェクトの内部と端末からのリクエストモジュールのインストール
  • npm install request
  • VSコードでは、名前インデックスを持つ新しいファイルを作成します.プロジェクトの根源

  • 次のコードを追加します.
    var request = require('request');
    var options = {
      'method': 'POST',
      'url': 'https://api.bitrise.io/v0.1/apps/{YOUR_APP_SLUG}/builds',
      'headers': {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': 'YOUR_API_KEY'
      },
      body: JSON.stringify({
        "build_params": {
          "branch": "chapter-3",
          "workflow_id": "primary"
        },
        "hook_info": {
          "type": "bitrise"
        }
      })
    ‍
    };
    ‍
    exports.handler =  async function(event, response) {
      console.log(response.body);
      return "done..."
    }
    ‍
    request(options, function (error,response) {
      if (error) throw new Error(error);
      console.log(response.body);
    });
    
  • 次のコマンドを実行すると、次のコマンドを実行できます.
  • node index.js
    もし実行が成功したら、以下のような出力が得られます.
    
    ![13](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8q98gyfjk6geg7phlje3.png)
    
    パッケージで.JSONファイルは、上記のコマンドをテスト構成に追加し、再度テストすることができます.
    以下のコマンドでAWSラムダ関数にアップロードすることができるようにプロジェクトをzipする必要があります(ハードコード変数を置き換えるためにラムダ環境変数を使用することができますので、APIキーとアプリケーションスラグを心配しないでください).zip -r LambdaBitrise.zip index.js node_modules
    今、ラムダフォルダを次の手順で展開します
  • リストからアップロードをクリックしてzipファイルを選択します(S 3のバケツにファイルをアップロードし、そこから読み込むこともできます)


  • フォルダがアップロードされ、正常に抽出され、オンラインエディタで表示されます.
  • タブをクリックして環境変数を追加します.
  • アパッヒスラッグ
  • アピワンキー

  • これで、ラムダ環境変数でAppRankスラグとAPIキーを置き換えることができます.
  • $プロセス・プロセス
  • ${プロセスenapapapkey key }
  • var request = require('request');
    ‍
    let app_slug = process.env.APP_SLUG
    let api_key = process.env.API_KEY
    ‍
    var options = {
      'method': 'POST',
      'url': 'https://api.bitrise.io/v0.1/apps/'+app_slug+'/builds',
      'headers': {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': api_key
      },
      body: JSON.stringify({
       'build_params': {
          'branch': 'chapter-3',
          'workflow_id': 'primary'
        },
        'hook_info': {
          'type': 'bitrise'
        }
      })
    ‍
    };
    ‍
    exports.handler =  async function(event, response) {
      console.log(response.body);
      return "done..."
    }
    ‍
    request(options, function (error,response) {
      if (error) throw new Error(error);
      console.log(response.body);
    });
    
    ボタンをクリックして変更を保存し、テストを実行して、すべてが正常に動作していることを確認します.
    ラムダ関数をテストすることができるようにするために、パート2で議論されるトリガーを追加する必要があります.これは、次のコマンドを使用することができますが、AWS CLIを使用する必要があります.aws lambda invoke --function-name HelloBitrise --cli-binary-format raw-in-base64-out output.txt
    出力は以下のようになります.
    {
        "StatusCode": 200,
        "ExecutedVersion": "$LATEST"
    }
    
    そして、これはラムダのオンラインエディタでテストを実行するときの出力です.

    今すぐあなたのチェックすることができますBitrise dashboard 新しいビルドが既に起動されていることを確認するには、クレジットを保存するためにアボートできます.
    おめでとう、あなたはそれをやった!ビットライズAPIを使用して新しいビットライズビルドをトリガーするために、AWSラムダを使用して最初のServerless関数を作成しました.

    参考文献

  • AWS Lambda Documentation

  • Bitrise API: Build custom integrations with your preferred tools and processes
  • ありがとうございます🤖