1

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

4

1 回答 1

1

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

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

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

pulumi stack destroy

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

于 2020-08-03T04:14:33.160 回答