【问题标题】:AWS Lambda Serverless Application embedded resourceAWS Lambda 无服务器应用程序嵌入式资源
【发布时间】:2020-01-16 10:52:04
【问题描述】:

我创建了一个 WebApi 项目并将其作为无服务器应用程序部署到 AWS Lambda。一切都很好,除了一种方法,我需要从文件中读取。我可以看到这个文件被部署在被推送的 zip 文件中,但是由于某种原因,当我在代码中读取它时,它找不到它。

我已尝试将嵌入式资源和内容都用于构建操作,但似乎都不起作用。 AWS 中是否有需要配置的东西,以便我的无服务器应用程序可以访问本地文件?

【问题讨论】:

  • 我有一个访问 HTML 模板文件的 Lambda。我已将 Build Action 设置为 None 并将 Copy to Output Directory 设置为 Copy Always。似乎工作正常。
  • 您如何访问这些文件?我尝试使用 Directory.GetCurrentDirectory()LAMBDA_TASK_ROOT 本地环境变量来获取文件的路径,但似乎都不起作用。
  • 啊,没关系。我意识到我不需要创建绝对路径。我删除了Directory.GetCurrentDirectory() 并使用了相对路径,它可以工作。感谢您的帮助。

标签: c# amazon-web-services resources aws-lambda embedded-resource


【解决方案1】:

适用于需要更多详细信息的人。将您的嵌入文件添加到您的 .csproj 文件中,如下所示(资源是您的文件夹,请注意 .csproj 中的“resources\”和 .cs 中的“resources/”):

<ItemGroup>
    <Content Include="resources\*.*">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

在您的 .cs 文件中,获取文件路径:

var path = Path.Combine(Directory.GetCurrentDirectory(), "resources/example.txt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 2017-02-17
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多