CloudForm 能否在堆栈构建后填充资源或依赖关系?

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

堆栈的一个简单例子可以是

1) 一个认知用户池 2) lambda。

是否有办法让我参考构建时生成的 cognito 用户池 ID,以便在我的 lambda 函数(代码)中使用,还是需要手动获取并输入到我的 repoconfig 中?

或者我可以在建立cognito用户池之前指定一个cognito用户池id吗? 我没有看到任何例子。

谢谢你

aws-lambda amazon-cloudformation amazon-cognito sam
1个回答
3
投票

是的,有几种方法可以做到这一点。可能最简单也是最常被推荐的方法是通过使用 lambda环境变量.

以下是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 返回值. 在这种情况下: !Ref MyUserPoolResource 会给你自动生成的用户池ID。

© www.soinside.com 2019 - 2024. All rights reserved.