如何将我现有的程序绑定到 Pulumi?

How can I bind my existing programs to Pulumi?

我开始使用 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 作为堆栈和架构“构建器”

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

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

pulumi up,post 这意味着 lambda 由 pulumi 从那里管理 on.You 也应该谨慎

pulumi stack destroy

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