2017-04-21 4 views
1

私はserverlessを使用してAWS Lambdaにマイクロサービスを導入しています。デフォルトのステータスコードを500に設定し、HTTPプロセスが成功した場合は、レスポンスにステータスコード200を設定します。これを行う方法は?ファイルserverless.ymlでこれを行うことはできますか?サーバーレス機能のデフォルトステータスコードを設定するにはどうすればよいですか?

機能:

addPermission: 
handler: permissionadd.handler 
events: 
    - http: 
     path: permission 
     method: post 
     cors: true 
     integration: lambda 
     request: 
     parameters: 
      querystrings: 
      companyId: true 
      userId: true 
+0

ハンドラコードにこれに関するロジックが含まれていてはなりませんか?どのSDKを使用していますか? – kosa

+0

ハンドラ内のjavascriptエラーがステータスコードで応答しないため、ハンドラにステータスコードを制御させたくありません。 – suku

+0

'ハンドラのjavascriptエラーとしては応答しません。 ':catchがコード500を返す場所でtry/catchを使うことができます。デフォルトコードに関して、私はそこに組み込みがあるかどうかわかりません。 – Zanon

答えて

1

私はあなたがserverless.yml経由でそれを行うことができるとは思いません。

あなたはこのようなハンドラからそれを行うことができます。それが現在立っているように、

失敗し、特定のステータスコードを指定していないか、ゲートウェイがあるAPIに正しく応答を返さないと、すべてのラムダの呼び出しをHTTPステータス500(内部サーバーエラー)とみなされます。

しかし、あなたは、あなたが以下のように気にいらを使用することができます返されるカスタムHTTPコードたいと仮定すると:

module.exports.my_sample_func = (event, context, callback) ={ 
    var processed_promise = process_your_event(event_body); 

    // define your default response to be returned 
    let my_default_response = { 
     statusCode:500, // add default faliure http code 
     body:JSON.stringify({error: "Some error occured"}), 
     headers: { 
      'Content-Type': 'application/json' 
     } 
    }; 

    processed_promise.then(function(resolved, rejected){ 
      // whatever had to be done got completed successfully 
      response.statusCode = 200; 
      response.body = JSON.stringify({msg: "Processed successfully"}); 
     callback(null, response); 
    }) 
    .catch(function(rejected){ 
     callback(response); 
    }); 


} 

は、このことができます願っています。

+0

さらに、serverless.ymlの環境変数としてデフォルトのステータスを設定して、ハンドラにアクセスすることもできます。しかし、あなたはまだあなたのハンドラを無制限に書く必要があります。 – mightymosquito

関連する問題