【问题标题】:How can I bind my existing programs to Pulumi?如何将我现有的程序绑定到 Pulumi?
【发布时间】:2020-11-07 15:54:07
【问题描述】:

我开始使用 Pulumi 为我的项目进行 IaC 设计,但我很难理解如何将现有代码绑定到 Pulumi 的使用。
例如,假设我在 python 中做了一个 lambda 函数,内容如下:

# test_lambda.py

import boto3
import json


sqs_client = boto3.client('sqs')
ssm_client = boto3.client('ssm')


def get_auth_token():
    response = ssm_client.get_parameters(
        Names=[
            'lambda_auth_token',
        ],
        WithDecryption=False
    )
    return response["Parameters"][0]["Value"]


def handler(event, _):
    body = json.loads(event['body'])
    if body['auth_token'] == get_auth_token():    
        sqs_client.send_message(
            QueueUrl='my-queue',
            MessageBody='validated auth code',
            MessageDeduplicationId='akjseh3278y7iuad'
        )
        return {'statusCode': 200}
    else:
        return {'statusCode': 403}

如何在 Pulumi 项目中引用包含 lambda 函数的整个文件?所以我可以使用这个与 SNS 服务集成的 lambda。

而且,由于我在我的架构中使用 Pulumi,boto3 似乎不需要,我可以用 Pulumi aws 库替换它,对吗?然后 python 解释器将只使用 Pulumi 作为我的 aws 资源(如 boto3)的通用接口库? 最后一个问题可能看起来很奇怪,但目前我只看到在运行 pulumi up 时使用 pulumi 作为堆栈和架构“构建器”。

【问题讨论】:

    标签: python pulumi


    【解决方案1】:

    您可以尝试将 lambda 导入到您的 pulumi 堆栈中,如下所示

    aws.lambda_.Function("sqs_lambda", opts=ResourceOptions(import=[
        "lambda_id",
    ]))
    

    A pulumi up , post 这意味着 lambda 从那里开始由 pulumi 管理。你也应该小心

    pulumi stack destroy
    

    因为这意味着导入的资源也会被删除。 你可以阅读Pulumi import resource

    【讨论】:

    • 虽然这是一个很棒的功能,但我指的是创建 lambda 本身。例如,使用 pulumi 提供的“magic lambda”方法。不过谢谢!这也很高兴。
    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多