JS AWS Lambdaをローカルで実行して単体テストしようとしています。ラムダ環境をエミュレートするために、私はLambdaがAWS.config.credentialsで持っていたのと同じ役割を引き受けており、必要なものをインポートしたラムダ関数を呼び出すだけです。インポートされたモジュールにAWS設定を渡す
ラムダ関数をコピーしてテストファイルに貼り付けると機能しますが、インポートすると、設定がないクリーンなAWS.configで関数が実行されているようです。テストから設定を取得するためにLambdaモジュールがAWSをインポートする方法(グローバルにするか他に何かを行う)を変更することができましたが、ラムダにアップロードするためにファイルをそのまま保存することをお勧めします。
AWS LambdaではAWSの認証情報が何らかの形で事前に設定されているため、モジュールは何もする必要がなく、その機能をエミュレートしたいと思います。どのようにNodeでこれを行うことができますか?
EDIT: AWSラムダで任意のサンプル関数を実行できます。たとえば、次のコードは、適切なAWS Lambdaで実行された場合にのみ動作します。次にこのコードの前に持ってローカルでこれを実行するには
var AWS = require("aws-sdk");
var dynamo = new AWS.DynamoDB.DocumentClient();
dynamo.query(...)
:
AWS.config.update({region: 'us-east-1'});
AWS.config.credentials = new AWS.SharedIniFileCredentials();
AWS.config.credentials = new AWS.TemporaryCredentials({
RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',
});
問題は、この設定手順を実行しているということですユニットテストファイルでは、インポートされたラムダファンクションで設定を利用できないしたがって、環境を正しくエミュレートしません。
どのように事前設定されていますか?関連するコードをラムダで表示できますか? –
実際のラムダ環境で動作している間にaws-sdkから何かにアクセスすると、ラムダの役割の証明書を入手するだけで、ラムダの役割を果たすことができます。私がこれをエミュレートするために考えられる唯一の方法は、AWSオブジェクトを設定することです。 – Gerharddc
どこかに設定する必要があります。私たちにコードを教えてください。 –