我需要为IAM策略向Cloudformation中添加一些元数据。如何使用CDK做到这一点?
我正在使用CDK合成云形式,并且需要包含一个元数据以禁止cfn-nag(https://github.com/stelligent/cfn_nag)警告。
我通过以下语句生成了策略:
const cfnCustomPolicy = new iam.CfnPolicy(scope,
'cfnCustomPolicy',
{
policyName: "CustomPolicy",
policyDocument: {
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: "apigateway:GET",
Resource: [
"arn:aws:apigateway:us-east-1::/restapis/*/stages/*/exports/*"
]
}
]
}
}
);
cfnCustomPolicy.cfnOptions.metadata = {
cfn_nag: {
rules_to_suppress: [
{
id: "W12",
reason: "The lambda need access to export documents from any API"
}
]
}
}
有一种更好的方法可以使用CDK而不使用L1接口?
答案 0 :(得分:1)
是的,根据文档,这是唯一的方法
https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html
但是,这并不意味着您只能使用CfnXXX创建该构造,而可以使用CDK构造来实现
cfn_policy = self.policy.node.default_child
cfn_policy.cfn_options.metadata = {
"cfn_nag": {
"rules_to_suppress": [
{"id": "W9"},
{"id": "W2"}
]
}
}
我已经尝试过node.add_metadata,但是显然它只添加了内部cdk元数据