AWS Lambda中Json文件的相对路径

时间:2018-12-05 22:58:38

标签: c# aws-lambda

我有一个访问器类,可从Json文件中提取所需的数据。 当我在.Net FrameWork中测试控制台应用程序项目时,该路径似乎可以。

但是当在Aws Lex中使用Lambda时,只有当我尝试运行此Json访问器函数时才会出错(即使不使用返回的数据)。

在我看来,将Lambda上传到AWS时,本地工作的相对路径是不同的。

这是访问器类,它在.NetFramwork项目的cosole应用程序中本地工作。 Json文件和DataAccess类都在一个名为“ Accessors”的文件夹中:

public class DataAccess
{
      public static List<string> access(int maxPrice, string Shape)
            {

            List<string> diList = new List<string>();

            string filepath = "../../../Accessors/DiData.json";
            string result = string.Empty;
            string str = string.Empty;
            using (StreamReader r = new StreamReader(filepath))
            {


                var json = r.ReadToEnd();


                JObject jObject = JObject.Parse(json);
                JToken jUser = jObject["data"]["dResult"][0]["dID"];


                var searchResults = from r1 in jObject["data"]["dResult"]
                                    where r1["shape"].ToString() == Shape  && r1["price"].Value<System.Int32>() <= maxPrice
                                    select r1;

                foreach (var r1 in searchResults)
                {
                    diList.Add(r1["dID"].ToString());
                }
            }

            return diList;
        }

}

我在这里调用此函数:

List<string>jsonDataList= Accessors.DataAccess.access(600, "Round");

使用此Lambda作为代码钩子后,仅此调用便在Amazon Lex中引发错误。

1 个答案:

答案 0 :(得分:0)

您似乎正在从dev / source文件夹布局加载JSON文件。在Lambda中,您将发送通过Lambda项目上的dotnet publish命令创建的文件夹结构的zip版本。这是您编译的项目位。

确保已将DiData.json配置为复制到构建输出文件夹,然后可以将相对文件从publish文件夹的根目录加载到DiData.json文件在publish文件夹中复制到的位置。