介绍
cfn-custom-resource-helper 是一个 npm 包,用于帮助 AWS CloudFormation 服务使用自定义资源,简化开发过程。它提供了一个 Node.js 版本的 AWS Lambda 函数,支持以下特性:
- 向领域资源提供数据
- 从 AWS Lambda 向 AWS CloudFormation 发送成功/失败信号
- 自动签名
- 序列化响应和数据
使用教程
安装
使用以下 npm 命令来安装 cfn-custom-resource-helper:
npm install cfn-custom-resource-helper
配置
- 开发一个 Node.js 的 AWS Lambda 函数,例如:
exports.handler = function(event, context) { // your function body here };
- 引入
cfn-response
模块,例如:
const cfnResponse = require('cfn-response');
- 使用
cfnResponse.send
来发送成功/失败信号,例如:
exports.handler = function(event, context) { cfnResponse.send(event, context, cfnResponse.SUCCESS, {"MyKey": "MyValues"}); };
使用
创建 CloudFormation 资源
- 在 CloudFormation 模板中,使用以下代码来创建
/create
路径的新自定义资源:
CreateResource: Type: 'Custom::MyResource' Version: '1.0' Properties: ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:${LambdaFunctionName}:${LambdaAliasName}' Path: 'create' ID: !Ref MyID
其中,MyResource
是自定义资源名称,可以自由定义。ServiceToken
是 AWS Lambda 的 ARN,ID
是自定义资源的属性。
- 配置以下环境变量:
环境变量名 | 含义 |
---|---|
ROLES_TO_ASSUME |
要使用的 AWS 角色 |
ARTIFACTS_BUCKET |
构建工件所在的 S3 存储桶。 |
CFN_POLLING_INTERVAL |
(可选)AWS CloudFormation 轮询的时间间隔。 |
SEND_TYPE |
(可选)指示事件侦听器是否将事件捕获并发送给事件中枢。 |
SEND_STACK_EVENTS |
(可选) 打开/关闭堆栈事件的发送功能。 |
SERVICE_NAME_POSTFIX |
若干重复使用的前缀 |
- 在 AWS Console 上部署该 CloudFormation 模板。
更改/删除 CloudFormation 资源
请参照步骤 “创建 CloudFormation 资源”,不同之处是要修改对应的 AWS Lambda 函数和 CloudFormation 模板。
示例代码
这是一个使用 cfn-custom-resource-helper 来自定义 CloudFormation 资源的示例代码:
开始一个 Create
路径:
-- -------------------- ---- ------- ---- -------- ----- ----------- - ------------------------ ----- --- - ------------------- ----- ------- - --- ----------------------------- -------------------- ------------------ - -------------------------- --- ----- ---- - ------- -------- --------------- ------------- -- - ----------------------- -------- --------------- -------------- -- --------------- - ----- ------- -------- -- - --------------------- ----------------------- ----------------------- ------------------------- ----- - - --- --------------------- --- - ----- ----------------------------- ------------------- ------ -- ----------------------- ----- ---- - ----------------------- ------------------- ----- -- ---------------------- ------------------- ----- ---------- -- ----------------------------- ------ ------------ - ---- ---------- ------------------- ------ ----- ---------------------- ----- ---- - ----- -------------------------- ------------- ---------------------------------- ----- ------- ------------ ------------------- ----- -- ---------------------- ----------- -------- ---------- ----------- ------- ----------- ------ -------- ----------- -------- --------- ----------- -------- ------ - - ----- ----- - ------------------- ------ -- ----- ----------- -------- --------- --------- ------ - --
注:本篇文章的示例代码没有经过严格性能测试,不建议直接应用于生产环境。
学习与指导作用
cfn-custom-resource-helper 插件简化了 AWS CloudFormation 自定义资源的开发过程。同时,它提供了一套简洁、易于理解的 API,给初学者提供了学习的机会。对于经验丰富的开发人员,它是一个就可以用来优化和简化开发流程的工具。
总之,学习 cfn-custom-resource-helper 对于扩展 CloudFormation 开发技能来说是有指导意义的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005664581e8991b448e258b