【问题标题】:Python Chalice Pure Lambda Function - reference name in separate Cloud Formation TemplatePython Chalice Pure Lambda 函数 - 在单独的 Cloud Formation 模板中引用名称
【发布时间】:2021-11-10 03:42:27
【问题描述】:

我在 python chalice app.py 中创建了一个纯 python lambda 函数,如下所示:

@app.lambda_function('R53CloudformationResourceConflict')
def r53_cloudformation_resource_conflict(event, context):
    logger.info(event)
    logger.info(context)

现在我要做的下一部分是将此 lambda 称为来自单独的云形成模板 (cf.yml) 的自定义资源,如下所示:

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  LambdaFunctionName:
    Type: String

Resources:
  R53CloudformationResourceConflict:
    Type: 'Custom::R53CloudformationResourceConflict'
    Properties:
      ServiceToken: !Join [ '', ['arn:aws:lambda:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':function:', !Ref LambdaFunctionName] ]
      AppUrl: "some_app_url"

我的文件结构:

├── cf.yml
└── custom-lambda
    ├── app.py
    └── requirements.txt

目前 python chalice 在纯 lambda 函数名称前添加 {{ app-name }}- {{ chalice-stage }}。所以对于这个例子,最终的 lambda 名称是 custom-lambda-dev-R53CloudformationResourceConflict

现在我坚持的一点是动态地知道我的 lambda 函数将被调用(不同的阶段,可能是应用程序名称更改)并在单独的 Cloud Formation 堆栈(cf.yml)中动态地引用它。

我发现 https://chalice.readthedocs.io/en/stable/topics/configfile.html#lambda-specific-configuration 这可能会有所帮助,但同样是固定的,不是动态的。

有没有一种相对简单的方法来引用这个由 py​​thon chalice 创建的纯 lambda 函数在同一个 repo 的单独 Cloud Formation 模板中?

【问题讨论】:

    标签: aws-cloudformation-custom-resource chalice


    【解决方案1】:

    在一个 chalice 应用程序中,您将有多个阶段:prod/dev/test。

    Lambda 名称确实是可预测的,并且不会改变。

    {appname}-{env}-{lambdaname}
    

    让我们假设 chalice 应用程序是 helloworld 并且您的 lambda 名称 = 问候:

    如果你想引用你的 prod lambda:helloworld-prod-greetings 如果你想引用你的测试 lambda:helloworld-test-greetings 如果你想引用你的开发 lambda:helloworld-dev-greetings

    您选择在部署 chalice 期间部署哪个阶段:

    chalice deploy --stage prod
    

    您可以在文件.chalice/config.json 中找到您的应用程序中定义的阶段,查找关键阶段。

    您还应该存储并检查您的“状态文件”.chalice/deployed/{stage}.json

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 2020-01-27
      • 2022-09-30
      • 2019-07-04
      相关资源
      最近更新 更多