1 个稳定版本
1.0.0 | 2020 年 10 月 1 日 |
---|---|
0.0.0 |
|
#6 in #ruleset
20KB
162 行
作为 Lambda 的 CloudFormation Guard Rulegen
目录
安装
依赖项
- AWS CLI 配置具有部署和调用 Lambda 的权限
- IAM 中的 AWS Lambda 执行角色
- 将名为
CFN_GUARD_LAMBDA_ROLE_ARN
的 shell 环境变量设置为该角色的 ARN - Rust(请参阅顶层 README 中的安装说明)
- 如果在 Mac 上构建,您将需要 Homebrew。
- 如果在 Ubuntu 上构建,如果您还没有运行以下命令,请运行它:
sudo apt-get update; sudo apt install build-essential
Mac/Ubuntu
- 安装和配置 依赖项。
- 如果您使用的是 Mac,请将以下内容添加到
~/.cargo/config
[target.x86_64-unknown-linux-musl] linker = "x86_64-linux-musl-gcc"
- 确保您位于
cfn-guard-lambda
目录中 - 运行
make pre-reqs
。 - 运行
make install
。
安装后构建和运行
在编辑源代码后构建、部署和测试函数,请运行 make test
。
只需调用函数,运行make invoke
。用于调用Makefile中的变量的操作可以修改,以提供不同的有效负载。
本项目采用Apache-2.0许可协议。
我们将努力提高lambda消息的质量,但一般来说,cfn-guard-rulegen-lambda
只是cfn-guard-rulegen
代码的包装,每个都可以用来测试另一个。
调用 Lambda 函数
请求结构
向cfn-guard-rulegen-lambda
的请求需要以下字段
template
- YAML或JSON CloudFormation模板的字符串版本
示例
示例有效负载在Makefile中。这是我们用来测试不应通过规则集的一个例子。
request_payload = '{ "template": "{\n \"Resources\": {\n \"NewVolume\" : {\n \"Type\" : \"AWS::EC2::Volume\",\n \"Properties\" : {\n \"Size\" : 100,\n \"Encrypted\": true,\n \"AvailabilityZone\" : \"us-east-1b\"\n }\n },\n \"NewVolume2\" : {\n \"Type\" : \"AWS::EC2::Volume\",\n \"Properties\" : {\n \"Size\" : 99,\n \"Encrypted\": true,\n \"AvailabilityZone\" : \"us-east-1b\"\n }\n } }\n}"}'
#======================================================================
# Request Payload
#======================================================================
# Template
# {"Resources": {
# "NewVolume" : {
# "Type" : "AWS::EC2::Volume",
# "Properties" : {
# "Size" : 100,
# "Encrypted": true,
# "AvailabilityZone" : "us-east-1b"
# }
# },
# "NewVolume2" : {
# "Type" : "AWS::EC2::Volume",
# "Properties" : {
# "Size" : 99,
# "Encrypted": true,
# "AvailabilityZone" : "us-east-1b"
# }
# }
#}
#======================================================================
常见问题解答
-
问:如何调试返回模糊错误信息的lambda调用?
{"errorType": "Runtime.ExitError", "errorMessage": "RequestId: 1c0c0620-0f83-40bc-8eca-3cf2cf24820f Error: Runtime exited with error: exit status 101"}
-
答:使用
cfn-guard-rulegen
在本地运行相同的模板以获取更好的信息。thread 'main' panicked at 'Bad Rule Operator: REQUIRE', src/rule_proc.rs:344:2
我们将努力提高lambda消息的质量,但一般来说,
cfn-guard-rulegen-lambda
只是cfn-guard-rulegen
代码的包装,每个都可以用来测试另一个。
依赖项
~16MB
~278K SLoC