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

2024-06-14 00:08:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始与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作为堆栈和体系结构“构建器”


Tags: 项目lambda函数importclienttokenauthjson
1条回答
网友
1楼 · 发布于 2024-06-14 00:08:26

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

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

pulumi up,post这将意味着lambda从那时起由pulumi管理。你也应该小心

pulumi stack destroy

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

相关问题 更多 >