在AWS SAM中使用!Ref设置环境变量?

问题描述 投票:1回答:1

我正在使用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
amazon-web-services aws-cli aws-sam-cli aws-sam
1个回答
3
投票

根据我的理解,Globals部分不能引用Resources部分中的资源(依赖性是另一个方向,因为添加到Globals部分的任何内容都在to all Serverless Functions and APIssection中添加了Resources)。为了解决这个问题,我建议您使用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....
© www.soinside.com 2019 - 2024. All rights reserved.