【问题标题】:Can CloudFormation populate a resource or dependency after the stack is built?CloudFormation 能否在构建堆栈后填充资源或依赖项?
【发布时间】:2020-10-05 01:57:12
【问题描述】:

堆栈的一个简单示例可能是:

1) 认知用户池。 2) 拉姆达。

有没有办法让我引用它构建时生成的 cognito 用户池 ID,以便它可以在我的 lambda 函数(代码)中使用,或者需要获取并手动输入到我的 repo/config

或者我可以在构建之前指定一个认知用户池 ID 吗?我没有看到任何例子。

谢谢

【问题讨论】:

    标签: aws-lambda amazon-cloudformation amazon-cognito sam


    【解决方案1】:

    是的,有几种方法可以做到这一点。可能最简单和最常用的方法是通过lambda environment variables

    以下是 CloudFormation 中此类设置的一些伪代码:

    mytemplate.yaml

    
    MyUserCognitoPool:
        Type: AWS::Cognito::UserPool
        Properties: 
            <properties> 
    
    
    MyLambdaFunction:
    Type: AWS::Lambda::Function
    Properties: 
      Environment: 
        Variables: 
            POOL_ID: !Ref MyUserCognitoPool
      Code: 
        Code:
            ZipFile:
    
                import os
    
                pool_id = os.environ['POOL_ID']
    
                def handler_name(event, context): 
    
                    print(pool_id)
    
                    return some_value    
    
    

    【讨论】:

      【解决方案2】:

      CloudFormation 有一个返回值的概念。 您通常可以使用!Ref MyResource!GetAtt MyResource.someAttribute 来获取相应的值。 AWS CF 文档通常描述返回的值。例如见AWS::Cognito::UserPool return values
      在这种情况下,!Ref MyUserPoolResource 将为您提供自动生成的用户池 ID。

      【讨论】:

        猜你喜欢
        • 2017-06-26
        • 2021-01-19
        • 2020-11-09
        • 2020-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-09
        • 1970-01-01
        相关资源
        最近更新 更多