【问题标题】:AWS: Permissions for exporting logsfrom Cloudwatch to Amazon S3AWS:将日志从 Cloudwatch 导出到 Amazon S3 的权限
【发布时间】:2022-04-02 18:15:52
【问题描述】:

我正在尝试使用 AWS 控制台将日志从我的 CloudWatch 日志组之一导出到 Amazon S3。

我关注了guide from AWS documentation,但收效甚微。我的组织不允许我管理 IAM 角色/策略,但我发现我的角色允许所有与日志相关的操作(logs:* 对帐户内的所有资源)。

目前,我遇到以下错误消息:

无法创建导出任务。对给定存储桶的 PutObject 调用失败。请检查 CloudWatch Logs 是否已被授予执行此操作的权限。

我的存储桶策略设置如下:

{
    [
        ...
        {
            "Sid": "Cloudwatch Log Export 1",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.eu-central-1.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::my-bucket"
        },
        {
            "Sid": "Cloudwatch Log Export 2",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.eu-central-1.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

在编辑存储桶策略之前,我的错误消息是

无法创建导出任务。对给定存储桶的 GetBucketAcl 调用失败。请检查 CloudWatch Logs 是否已被授予执行此操作的权限。

但编辑存储桶策略解决了这个问题。我希望允许PutObject 做同样的事情,但事实并非如此。

感谢您的帮助。

【问题讨论】:

  • 将权限更改为s3:*。如果可行,您知道实际上是许可问题,然后您可以查看它到底需要什么。如果它不起作用,那么你知道去别处看看。
  • @404 将权限概括为s3:* 无助于解决问题。关于下一步看哪里的任何建议?谢谢

标签: amazon-web-services amazon-s3 amazon-iam amazon-cloudwatch


【解决方案1】:

请查看本指南Export log data to Amazon S3 using the AWS CLI 政策看起来像您共享的文档,但略有不同。 假设您在同一个帐户和同一个区域执行此操作,请检查您放置的区域是否正确(在此示例中为 us-east-2)

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": "s3:GetBucketAcl",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::my-exported-logs",
        "Principal": { "Service": "logs.us-east-2.amazonaws.com" }
    },
    {
        "Action": "s3:PutObject" ,
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::my-exported-logs/*",
        "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } },
        "Principal": { "Service": "logs.us-east-2.amazonaws.com" }
    }
]

}

我认为bucket owner完全控制在这里不是问题,唯一的机会是区域。 无论如何,如果您使用不同的帐户/使用角色而不是用户,请查看其他两个示例。

这解决了我的问题,和你提到的一样。

【讨论】:

    【解决方案2】:

    要检查的一件事是您的加密设置。根据https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasksConsole.html

    不支持将日志数据导出到由 AWS KMS 加密的 Amazon S3 存储桶。

    Amazon S3 托管密钥 (SSE-S3) 存储桶加密可能会解决您的问题。如果您使用 SSE-KMS,Cloudwatch 无法访问您的加密密钥,以便在对象放入存储桶时正确加密它们。

    【讨论】:

      【解决方案3】:

      确保在导出数据时正确配置以下内容

      S3 存储桶前缀 - 可选 这将是您要用于存储日志的对象名称。 在为“PutBucket”创建策略时......您必须确保充分捕获对象/前缀。

      { “版本”:“2012-10-17”, “陈述”: [ { "动作": "s3:GetBucketAcl", “效果”:“允许”, "资源": "arn:aws:s3:::my-exported-logs", “校长”:{“服务”:“logs.us-east-2.amazonaws.com”} }, { "动作": "s3:PutObject" , “效果”:“允许”, “资源”:“arn:aws:s3:::my-exported-logs/*”, “条件”:{“StringEquals”:{“s3​​:x-amz-acl”:“bucket-owner-full-control”}}, “校长”:{“服务”:“logs.us-east-2.amazonaws.com”} } ] }

      必须

       {
      

      “版本”:“2012-10-17”, “陈述”: [ { "动作": "s3:GetBucketAcl", “效果”:“允许”, "资源": "arn:aws:s3:::my-exported-logs", “校长”:{“服务”:“logs.us-east-2.amazonaws.com”} }, { "动作": "s3:PutObject" , “效果”:“允许”, “资源”:“arn:aws:s3:::my-exported-logs/where_i_want_to_store_my_logs*”, “条件”:{“StringEquals”:{“s3​​:x-amz-acl”:“bucket-owner-full-control”}}, “校长”:{“服务”:“logs.us-east-2.amazonaws.com”} } ] }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        相关资源
        最近更新 更多