AWS: создание подписчика группы журнала Cloud Watch в Elasti c Поиск в другой учетной записи AWS - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть две AWS учетные записи, одна AWS учетная запись «A» содержит Cloud Watch с потоковой передачей данных (ранее я создал подписчика для отправки журналов в Elasti c Поиск экземпляра в той же учетной записи с использованием AWS консоль, и она работает просто отлично) Итак, я удаляю предыдущего подписчика и создал его для учетной записи B (используя учетную запись B ARN & Domain), когда я попытался выполнить потоковую передачу журналов, я столкнулся со следующей ошибкой в ​​Lambda, которая пересылает журналы:

{
    "errorType": "Error",
    "errorMessage": "{\"statusCode\":403,\"responseBody\":{\"Message\":\"User: arn:aws:sts::<account A id>:assumed-role/lambda_elasticsearch_execution/LogsToElasticsearchEx_cloud-watch-elasticsearch is not authorized to perform: es:ESHttpPost\"}}",
    "stack": [
        "Error: {\"statusCode\":403,\"responseBody\":{\"Message\":\"User: arn:aws:sts::<account A id>:assumed-role/lambda_elasticsearch_execution/LogsToElasticsearchEx_cloud-watch-elasticsearch is not authorized to perform: es:ESHttpPost\"}}",
        "    at _homogeneousError (/var/runtime/CallbackContext.js:13:12)",
        "    at postError (/var/runtime/CallbackContext.js:30:51)",
        "    at done (/var/runtime/CallbackContext.js:57:7)",
        "    at fail (/var/runtime/CallbackContext.js:69:7)",
        "    at Object.fail (/var/runtime/CallbackContext.js:105:16)",
        "    at /var/task/index.js:42:25",
        "    at IncomingMessage.<anonymous> (/var/task/index.js:176:13)",
        "    at IncomingMessage.emit (events.js:203:15)",
        "    at endReadableNT (_stream_readable.js:1145:12)",
        "    at process._tickCallback (internal/process/next_tick.js:63:19)"
    ]
}

У меня есть следующие роли 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:*:<account B id>:*"
        }
    ]
}

Роль учетной записи B (с доверительными отношениями ):

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

Trust relationship:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<account A id>:role/lambda_elasticsearch_execution"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Я следовал инструкциям ниже, но все еще работает с той же ошибкой

https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/

У кого-нибудь есть идея, по чему я скучаю?

Спасибо заранее!

...