我正在使用SAM CLI v0.8.1。我正在尝试将环境变量MY_TABLE_VAR设置为我的资源(MyTableResource)中表的名称。但是,在本地运行我的应用程序时,MY_TABLE_VAR未定义。你能告诉我我的模板有什么问题吗?我该如何正确设置?以下是我的SAM模板:
Globals:
Function:
Timeout: 30
Runtime: nodejs8.10
Environment:
Variables:
MY_TABLE_VAR: !Ref MyTableResource
Resources:
MyTableResource:
Type: AWS::Serverless::SimpleTable
Properties:
TableName: table1
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
根据我的理解,Globals
部分不能引用Resources
部分中的资源(依赖性是另一个方向,因为添加到Globals
部分的任何内容都在to all Serverless Functions and APIssection中添加了Resources
)。为了解决这个问题,我建议您使用Mappings或Parameters,例如:
Parameters:
TableName:
Type: String
Default: table1
Globals:
Function:
Timeout: 30
Runtime: nodejs8.10
Environment:
Variables:
MY_TABLE_VAR: !Ref TableName
Resources:
MyTableResource:
Type: AWS::Serverless::SimpleTable
Properties:
TableName: !Ref TableName
# more table config....