最终策略大小大于20480的限制-AWS ELK

时间:2018-10-24 19:42:33

标签: amazon-web-services elasticsearch aws-lambda elastic-stack

我的用例是将所有系统日志,应用程序日志和AWS CloudTrail日志流式传输到AWS Elasticsearch Service。

工作流程是

应用程序日志-> cloudwatch日志组->默认的lambda函数-> aws es

现在我可以将40多个日志组流式传输到es。在某个时间点之后,我尝试将更多日志组流式传输到es,那时我无法流式传输。我遇到以下错误

“最终政策尺寸大于20480的限制” enter image description here

如何增加政策规模

请帮助我。

已更新:

我的IAM角色内联政策

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": [
            "arn:aws:logs:*:*:*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": "es:ESHttpPost",
        "Resource": "arn:aws:es:*:*:*"
    }
]

}

2 个答案:

答案 0 :(得分:1)

您不能增加策略大小,但是可以删除旧的ELK lambda策略,并用通配符策略替换它们。自2019年8月起,这只能在AWS命令行上完成,AWS不会在Web仪表板中公开此信息。

要执行此操作的三个命令(将us-west-1替换为您所在的地区)

列出所有策略:

$ aws lambda get-policy --function-name <your-ELK-lambda-name> --region us-west-1

通过其语句ID删除单个策略-在下面添加通配符后,所有单个策略都变得多余并且可以删除:

$ aws lambda remove-permission --function-name <your-ELK-lambda-name> --statement-id <statement-id> --region us-west-1

添加通配符策略:

$ aws lambda add-permission --function-name <your-ELK-lambda-name> --statement-id WildcardPolicy --action "lambda:InvokeFunction" --principal "logs.us-west-1.amazonaws.com" --source-arn "arn:aws:logs:us-west-1:<your-AWS-account-number>:log-group:*" --source-account "<your-AWS-account-number>" --region us-west-1

另外2个问题-在添加新日志时,它将继续添加策略,因此即使使用通配符策略,您也必须删除新的单个策略,因为它不够聪明,无法添加它们。另外,UI也会出现故障-这些新附加的日志不会正确显示在ELK Lambda网页上。但这至少有助于克服策略大小限制。

答案 1 :(得分:0)

您为CloudWatch指定使用的角色具有太多附加策略。 复查策略,并使用多个资源作为资源属性来合并它们。或者,您可以创建第二个角色。我推荐第一种方法。