python - 如何将我现有的程序绑定到 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 作为堆栈和架构“构建器” pulumi up
。
解决方案
您可以尝试将 lambda 导入您的 pulumi 堆栈,如下所示
aws.lambda_.Function("sqs_lambda", opts=ResourceOptions(import=[
"lambda_id",
]))
A pulumi up , post 这将意味着 lambda 从那里开始由 pulumi 管理。你也应该小心
pulumi stack destroy
因为这意味着导入的资源也会被删除。你可以阅读Pulumi导入资源
推荐阅读
- java - 可以在不启用计费的情况下使用 Google Places API 吗?
- postgresql - Postgres删除查询 - 计数附近的语法错误(*)
- spring-boot - Jolt Customer Transformer 是一个 Spring Bean
- spring-boot - OAuth2RestTemplate 与 Ribbon + Eureka
- python-3.x - 在 Python 3 / Numpy 中保留迭代过程的同时有效地迭代创建距离矩阵
- python - 使用 .fit(线性回归)时出错
- sql - 如果外键 id 存在,如何连接两个表并返回所有列值,如果 SQL Server 中不存在外键 id,如何返回 null?
- java - RxJava 关于 Android 应用程序中的线程、CompositeDisposable 和调度程序的问题
- algorithm - 以 Y 为单位对 X 数进行排序的算法
- azure - 上传后 Azure 存储 zip 文件损坏(使用适用于 Java 的 Azure 存储 Blob 客户端库)