如何使用AWS CDK将元数据添加到IAM策略中?

时间:2019-08-22 18:48:31

标签: amazon-web-services amazon-cloudformation amazon-iam aws-cdk

我需要为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接口?

1 个答案:

答案 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元数据