.NET Core v1.0에서 AWS Lambda를 사용할 때 종속성 삽입 또는 조롱 환경 변수 사용에 대한 모범 사례 또는 설명서가 있습니까?AWS Lambda 환경 변수 및 종속성 삽입
예를 들어, 다음은 KinesisEvent를 허용하고 일종의 처리를 수행하는 람다 함수 ProcessKinesisMessageById
의 예입니다. 이 처리 중에는 환경 변수에 액세스해야하는 일종의 외부 서비스 (예 : AWS S3 또는 데이터베이스)에 액세스하는 작업이 포함됩니다.
public class AWSLambdaFileProcessingService
{
private IFileUploadService _fileUploadService;
// No constructor in the Lambda Function
[LambdaSerializer(typeof(JsonSerializer))]
public void ProcessKinesisMessageById(KinesisEvent kinesisEvent, ILambdaContext context)
{
Console.WriteLine("Processing Kinesis Request");
_fileUploadService = new AWSFileUploadService(); // Can this be injected? (Constructor shown below)
// some sort of processing
_fileUploadService.DoSomethingWithKinesisEvent(kinesisEvent);
}
}
// Example of of a class that needs access to environment variables
// Can this class be injected into the AWS Lambda function?
// Or the Environment Variables mocked?
public class AWSFileUploadService : IFileUploadService
{
private readonly IAmazonS3 _amazonS3Client;
private readonly TransferUtility _fileTransferUtility;
public AWSFileUploadService()
{
_amazonS3Client = new AmazonS3Client(
System.Environment.GetEnvironmentVariable("AWS_S3_KEY"),
System.Environment.GetEnvironmentVariable("AWS_S3_SECRET_KEY")
);
_fileTransferUtility = new TransferUtility(_amazonS3Client);
}
public bool DoSomethingWithKinesisEvent(KinesisEvent kinesisEvent)
{
// ....
}
```
기능은 환경 변수를 게시 한 후 괜찮 작동하고 AWS에 게시 한 후 (비주얼 스튜디오 2017에서) 람다 기능보기 테스트 콘솔을 사용하여 테스트 할 수 있습니다. 그러나 로컬 테스트에서 사용하기 위해 환경 변수를 모의하거나 설정할 수 없으면 유닛 또는 통합 테스트를 작성하는 데 문제가 있습니다.
람다 기능을 로컬에서 테스트하기위한 제안이나 사례가 있습니까?
추상적 환경 변수는 별도의 서비스에 int IFileUploadService' '에 해당 주사 액세스 코드에 대한 테스트의 예는 차례로'AWSLambdaFileProcessingService'에 삽입해야합니다. – Nkosi