首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到AWS lambda图像环境变量

未找到AWS lambda图像环境变量
EN

Stack Overflow用户
提问于 2022-06-23 02:34:57
回答 1查看 177关注 0票数 0

我使用容器映像创建AWS。但是,没有找到YAML中定义的环境变量.

如何创建容器映像

Hello World Example

  • Update
  1. 使用SAM作为支架,选择AWS Quick Start Templates >template.yaml和环境ECR
    1. 使用ECR容器图像

    创建lambda函数。

这是我试过的YAML

代码语言:javascript
复制
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: >
  python3.9

  Sample SAM Template for sam_hello_world

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 3
    Environment:
      Variables:
        BUCKET_NAME: "somes3bucketname"

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      PackageType: Image
      Architectures:
        - x86_64
    Metadata:
      Dockerfile: Dockerfile
      DockerContext: ./hello_world
      DockerTag: python3.9-v1
代码语言:javascript
复制
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: >
  python3.9

  Sample SAM Template for sam_hello_world

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 3

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      PackageType: Image
      Architectures:
        - x86_64
      Environment:
        Variables:
          BUCKET_NAME: "somes3bucketname"
    Metadata:
      Dockerfile: Dockerfile
      DockerContext: ./hello_world
      DockerTag: python3.9-v1

我的app.py

代码语言:javascript
复制
import io
import json
import os

def lambda_handler(event, context):

    print(os.environ)
    print(os.environ["BUCKET_NAME"])
    return {"statusCode": 200}

但是,这将引发键错误,因为os.environ找不到环境变量。

代码语言:javascript
复制
{
  "errorMessage": "'BUCKET_NAME'",
  "errorType": "KeyError",
  "requestId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "stackTrace": [
    "  File \"/var/task/app.py\", line 32, in lambda_handler\n    os.environ[\"BUCKET_NAME\"],\n",
    "  File \"/var/lang/lib/python3.9/os.py\", line 679, in __getitem__\n    raise KeyError(key) from None\n"
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 05:51:53

我怀疑我从3开始的步骤是错误的。

基本上,在执行sam build时,它会构建容器映像,但是环境变量不会添加到映像本身。

只有在执行template.yaml时才会考虑到sam deploy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72723935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档