簡體   English   中英

如何訪問上傳到python aws lambda中的層的yaml文件

[英]How to access a yaml file uploaded to a layer in a python aws lambda

我正在使用 python 3.8 作為我的 lambda 函數的 lambda 運行時,我正在嘗試使用 cdk v2 進行部署。 這是一個作為自定義資源的 lambda,每次部署堆棧時都會運行。

這是文件夾結構

 /Dynamics/cust_resource/__init__.py
 /Dynamics/cust_resource/data_objects.py
 /Dynamics/cust_resource/lambda.py
 /Dynamics/cust_resource/requirements.txt
 /Dynamics/deps/config.yaml
 /Dynamics/__init__.py
 /Dynamics/dyna_stack.py
 app.py

需要讀取該文本 config.yaml 文件的 lambda 函數。 此 yaml 文件由創建此函數的 cdk 堆棧共享。 目前不能使用 S3。 我已將文件打包到 lambda 層中。 當我下載並解壓縮圖層時,我可以看到該文件存在於我創建的圖層中。

當我嘗試使用以下任一選項訪問文件時:

with open('config.yaml') as f:
        data = yaml.load(f, Loader=SafeLoader)
        print(data)

要么

with open('deps/config.yaml') as f:
        data = yaml.load(f, Loader=SafeLoader)
        print(_data)

對於這兩個選項,我收到如下錯誤:

從自定義資源收到響應狀態 [FAILED]。 返回的消息:錯誤:[Errno 2] 沒有這樣的文件或目錄:'config.yaml'

從自定義資源收到響應狀態 [FAILED]。 返回的消息:錯誤:[Errno 2] 沒有這樣的文件或目錄:'deps/config.yaml'

對我有用的解決方案如下

with open('/opt/config.yaml') as f:
        data = yaml.load(f, Loader=SafeLoader)
        print(data)

文檔

如果您的 Lambda 函數包含層,Lambda 會將層內容提取到函數執行環境中的 /opt 目錄中。 Lambda 按照函數列出的順序(從低到高)提取層。 Lambda 合並同名文件夾,因此如果同一文件出現在多個層中,該函數將使用最后提取的層中的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM