我使用容器映像创建AWS。但是,没有找到YAML中定义的环境变量.
如何创建容器映像
Hello World Example
AWS Quick Start Templates >template.yaml和环境ECR 创建lambda函数。
这是我试过的YAML
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-v1AWSTemplateFormatVersion: "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
import io
import json
import os
def lambda_handler(event, context):
print(os.environ)
print(os.environ["BUCKET_NAME"])
return {"statusCode": 200}但是,这将引发键错误,因为os.environ找不到环境变量。
{
"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"
]
}发布于 2022-06-23 05:51:53
我怀疑我从3开始的步骤是错误的。
基本上,在执行sam build时,它会构建容器映像,但是环境变量不会添加到映像本身。
只有在执行template.yaml时才会考虑到sam deploy。
https://stackoverflow.com/questions/72723935
复制相似问题