どのようにサーバーレスデバッグ(C)

前回の記事では、我々は唯一のコマンドを使用する必要があり、私たちのhello世界のアプリケーションを呼び出す方法について説明します。

サーバーレスは-lハロー-fを起動します

しかし、我々は常にコード一度変更することはできません、私たちは私たちのコードをデバッグする必要があること、それのコマンドを呼び出し、または、私たちは常に、これは非常に非効率的である、AWSのサーバー・サイドバーに展開することはできません。だから我々は地元のスタイルで曲を完成さに、我々は最終的に私たちのAWSのサーバーにデプロイする必要があります。

1.ターミナルモーダル

私たちは、このようなコマンドとして、その上でローカルに追加した後に起動する必要があります。次のようにサーバレスは-lハローローカル-fを起動します。

しかし、調達タイプとして、それが最善の解決策ではありませんので、我々はうまくデバッグするためのツールを使用する必要があります。この問題を解決するために、サーバレスでも同様のツールを持っています。

2.デバッグツールを使用します

2.1インストールサーバレス-offlineコマンドは次のよう:

NPMインストールサーバレス、オフライン-D

2.2 serverless.ymlを変更

私たちは、ルートディレクトリの下、当社serverless.ymlを開き、次の構成情報を追加する必要があります。

イベント:
       - のhttp:
          パス:こんにちは / {名前}
           方法:取得
プラグイン:
   -サーバレス-オフライン

次のようにこのように全てserverless.yml構成コードは、次のとおりです。

サービス:hello- 世界の
プロバイダ:
  名前:AWS 
  ランタイム:nodejs10.x 

機能:
  こんにちは:
    ハンドラ:handler.helloの
    イベント:
       - のhttp:
          パス:こんにちは / {名前}
           方法:取得
プラグイン:
   -サーバレス-オフライン

2.3 handler.jsを変更

今、私たちは、次のコードのhandler.jsを追加します。

CONST {pathParameters = {}} = イベント。
CONST {名前 = 'xxx111'} = pathParameters。
CONSTメッセージ = '您好、$ {名前} .`。

Handler.js完全なコードを以下に示します。

「厳格な使用」

module.exports.hello =非同期(イベント、コンテキスト、コールバック)=> { 
  
  にconsole.log(イベント)。
  console.log(コンテキスト)。

  CONST {pathParameters = {}} = イベント。
  CONST {名前 = 'xxx111'} = pathParameters。
  CONSTメッセージ = '您好、$ {名前} .`。
  CONST HTML = '
     <HTML> 
     <スタイル> 
      H2 {色:赤;}
      </スタイル> 
     <body> 
       <H1>第一个のHello World应用</ H1> 
       <H2> $ {メッセージ} </ H2> 
     </ボディ> 
    </ HTML> `;
  
    ヘッダー:{
       'のContent-Type': 'text / htmlの' 
    }、
    本体:HTML 
  } 
}。

上記の印刷コード、我々はにconsole.log(イベント)を印刷し、次のようにした後、我々は情報を印刷します:

{ヘッダ:
   {ホスト: 'localhostの:3000' 
     接続: 'キープアライブ' 
     プラグマ: 'キャッシュなし'  'のCache-Control': 'キャッシュなし'  'アップグレード・安全でない-要求を':「1 ' 'ユーザーエージェント'  'のMozilla / 5.0(Macintosh版、インテルのMac OS X 10_13_6)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 75.0.3770.100サファリ/ 537.36' 
     受け入れ: ' text / htmlで、アプリケーション/ XHTML + XML、アプリケーション/ XML、Q = 0.9、画像/ WEBP、画像/ APNG、* / *; Q = 0.8、アプリケーション/署名され交換; V = B3'  '符号化を受け入れ:GZIPを、収縮、BR'」 " '受け入れ言語を': 'ZH ZH-CN、; Q = 0.9、EN; Q = 0.8'
      }、
  multiValueHeaders:
   {ホスト:[ 'はlocalhost:3000' ]、
     接続:[ 'キープないアライブ' ]、
     プラグマを:[ 'ノーキャッシュ' ]、
      'のCache-Control':[ 'ノーキャッシュ' ]、
      'アップグレード・安全でない-要求:[ '1' ]、
      'ユーザーエージェント' 
      [「Mozillaの/ 5.0(Macintosh版、インテルのMac OS X 10_13_6)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 75.0.3770.100サファリ/ 537.36 ' ]、
     受け入れ:
      [ ' text / htmlの、アプリケーション/ XHTML + xmlの、アプリケーション/ XML、Q = 0.9、画像/ WEBP、画像/ APNG、* / *; Q = 0.8、アプリケーション/署名され交換; V = B3 " ]、
     [ 'GZIPを収縮、BR' 'エンコーディングを許可' ]、
      '受け入れる言語を':[ 'ZH ZH-CN、; Q = 0.9、EN; Q = 0.8' ]}、
  パス:「/ハロー/ 2 ' 
  pathParameters:{名: '2' }、
  RequestContextの:
   {accountIdを: 'offlineContext_accountId' 
     RESOURCEID: 'offlineContext_resourceId' 
     apiId: 'offlineContext_apiId' 
     ステージ: 'DEV' 
     requestId: 'offlineContext_requestId_03349087551215857' 
     アイデンティティ:
      {cognitoIdentityPoolId: "offlineContext_cognitoIdentityPoolId」 
        アカウントID: 'offlineContext_accountId' 
        cognitoIdentityId: 'offlineContext_cognitoIdentityId' 
        呼び出し元: 'offlineContext_caller' 
        APIKEY: 'offlineContext_apiKey' 
        SOURCEIP: '127.0.0.1' 
        cognitoAuthenticationType: 'offlineContext_cognitoAuthenticationType' 
        cognitoAuthenticationProvider: 'offlineContext_cognitoAuthenticationProvider' 
        userArn: 'offlineContext_userArn' 
        ユーザーエージェント:
         'のMozilla / 5.0(Macintoshでは、インテルのMac OS X 10_13_6)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 75.0.3770.100サファリ/ 537.36' 
        ユーザ: 'offlineContext_user' }、
     承認者:
      {principalId: 'offlineContext_authorizer_principalId' 
        主張します。未定義}、
     プロトコル: 'HTTP / 1.1' 
     resourcePath: '/ハロー/ {名前}' 
     HTTPMETHOD: 'GET' 
     requestTimeEpoch: 1561535723603 }、
  リソース: '/ハロー/ {名前}' 
  HTTPMETHOD: 'GET' 
  queryStringParameters:ヌル
  multiValueQueryStringParameters:ヌル
  stageVariables:ヌル
  身体:ヌル
  isOffline: }

そして、私たちははconsole.log(コンテキスト)を印刷し、次のような情報が印刷された後:

{行わ:[機能]、
  失敗:[機能:失敗]、
  成功する:[機能:成功]、
  getRemainingTimeInMillis:[機能:getRemainingTimeInMillis]、
  awsRequestId: 'offline_awsRequestId_7749009079208731' 
  CLIENTCONTEXT:{}、
  functionNameを:「こんにちは世界-devの'-hello 
  :functionVersion offline_functionVersion_for_hello世界-DEV-ハロー'' 
  アイデンティティ:{}、
  invokedFunctionArn: 'offline_invokedFunctionArn_for_hello世界-DEV-ハロー' 
  logGroupName: 'offline_logGroupName_for_hello世界-DEV-ハロー' 
  logStreamName: 'offline_logStreamName_for_hello世界-DEV-こんにちは」
  memoryLimitInMB:未定義}

2.4サービスの起動

上記の構成コードが完了したら、我々は命令することができる:実行するためにオフラインSLS、および以下に示すように正常に起動すれば、我々は、ポート3000バインドします。

今回は、ブラウザのHTTPで私たち:// localhostを:訪問の3000 /ハロー/ 2時間、私たちは次のような情報を見ることができます。次のように:

ページとなるように、以下に示すように、3000 /ハロー/ kongzhi:// localhostを:私たちは、httpなど、その下に上記のアドレスを変更する場合:

変更内容2.5を保存するための自動ロードコード

我々は常にあまりにサーバレス・オフライン、当然のことながら、機能をリロードしているなどのWebPACKとnodemonなどの開発の作業効率を向上させるためにあらゆる可能な手段を試してみてください。次のコマンドを実行します。

SLSオフライン--useSeparateProcesses

次のように:

今、私はhandler.jsコードの下に変更し、コマンドラインを自動的にパッケージ化されますが、任意のコマンドラインプロンプトなしで、私たちはページを更新すると、次のように内容が最新であることを発見したとき:

githubのソースを表示

おすすめ

転載: www.cnblogs.com/tugenhua0707/p/11094247.html