5

我正在使用 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
4

1 回答 1

11

据我了解,该Globals部分不能引用该Resources部分中的资源(依赖关系在另一个方向,因为添加到该部分的任何内容都会添加到该部分Globals的所有无服务器函数和 APIResources)。要解决此问题,我建议您使用MappingsParameters,例如

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....
于 2018-12-20T14:25:55.583 回答