使用Python Lambda函数实现自定义AWS CloudFormation资源。
项目描述
使用Python Lambda函数实现 自定义AWS CloudFormation资源。
这有助于您在CloudFormation中引用非AWS资源 - 例如,让我们在我们的堆栈中获取一个StatusCake警报
Type: Custom::StatusCakeTest
Version: 1.0
Properties:
WebsiteName: vitalwebsite.com
WebsiteURL: http://vitalwebsite.com
CheckRate: 300
TestType: HTTP
(实现留给读者作为练习)
另请参阅
在 examples 目录中的示例代码。
Lambda处理器
这是一个简单的资源
from custom_resource import BaseHandler
class Handler(BaseHandler):
def create(self, event, context):
return "CreatedId", {"AndSome": "MetaData"}
def update(self, event, context):
return "UpdatedId", {"AndSome": "MetaData"}
def delete(self, event, context):
return "DeletedId", {"AndSome": "MetaData"}
handler = Handler()
我们扩展了 BaseHandler 类,并实现了 create、update 和 delete 方法。所有这些方法都是必需的。
这些方法必须
返回一个表示资源ID的字符串。这可以通过 Ref函数 在您的CFN模板中使用。
返回一个资源ID字符串,以及一个包含字符串键和值的字典。这些键值对可以与 GetAtt函数 一起使用。
返回一个 custom_resource.Success 或 custom_resource.Failed 对象。
返回一个 custom_resource.Defer 对象,表示您将异步处理此操作。请参阅下面的 异步响应。
引发异常。
BaseHandler 将对CloudFormation做出响应,除非返回 Defer。
异步响应
您的 Handler 方法可以返回 Defer 以表示异步处理。
为了稍后响应,您需要原始事件对象的副本。这将被传递给响应器类,例如
with Responder(event) as responder:
responder.success(physical_resource_id="123", data={"Meta": "Data"})
# or
responder.failure(physical_resource_id="456", reason="Something went wrong")
使用with语句,即使在发生异常的情况下,您的资源也始终会对CloudFormation做出响应 - 确保您的堆栈不会停滞并最终超时。
项目详情
关闭
custom_resource-0.1.9.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 943b2d4efba2a76a3eeaf970e98807310084f7025db58e3019e6de1cc1504fd4 |
|
MD5 | f9fa06dbb14a8022e15a8da7c8da9099 |
|
BLAKE2b-256 | a8d255787a4308ac957d7fecb80870399c2cf44de6956114f066ff654a8d099e |