#terraform #aws-api-gateway #terraform-provider-aws
#terraform #aws-api-gateway #terraform-provider-aws
Вопрос:
В моем скрипте terraform у меня есть следующий ресурс —
resource "aws_api_gateway_account" "demo" {
cloudwatch_role_arn = var.apigw_cloudwatch_role_arn
}
На этапе применения я вижу следующую ошибку —
2020/09/21 20:20:48 [ERROR] <root>: eval: *terraform.EvalApplyPost, err: Updating API Gateway Account failed: AccessDeniedException:
status code: 403, request id: abb0662e-ead2-4d95-b987-7d889088a5ef
Существует ли конкретное разрешение, которое необходимо привязать к роли, чтобы избавиться от этой ошибки?
Ответ №1:
Столкнулся с той же проблемой, что и @bdev03, мне потребовалось 2 дня, чтобы определить отсутствующее разрешение «iam: PassRole», будьте так добры, если terraform сможет указать на это, надеюсь, это поможет.
Комментарии:
1. Где вы определяете iam:PassRole?
2. @dataviews роли IAM или пользователю IAM, который используется terraform, потребуется это разрешение.
Ответ №2:
Поскольку ни этот поток (пока), ни официальная документация не очень хорошо справляются с решением этой проблемы… Минимальные политики, необходимые для этого действия:
{
"Sid": "AllowPassingTheRoleToApiGateway",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "*",
"Condition": {
"StringEquals": {
"iam:PassedToService": ["apigateway.amazonaws.com"]
}
}
}
{
"Sid": "AllowAPIGatewayUpdate",
"Effect": "Allow",
"Action": [
"apigateway:UpdateRestApiPolicy",
"apigateway:PATCH",
"apigateway:GET"
],
"Resource": "*"
}
Ответ №3:
Я не тестировал, но я считаю, что для роли требуется то, что показано ниже. Смотрите больше контекста в источнике: Раздел «Чтобы включить журналы CloudWatch» на https://docs.aws.amazon.com/apigateway/latest/developerguide/stages.html
Для обычных сценариев приложений роль IAM может присоединять управляемую политику AmazonAPIGatewayPushToCloudWatchLogs, которая содержит следующее утверждение политики доступа:
{ «Версия»: «2012-10-17», «Оператор»: [ { «Эффект»: «Разрешить», «Действие»: [ «журналы: CreateLogGroup», «журналы:CreateLogStream», «журналы: DescribeLogGroups», «журналы: DescribeLogStreams», «журналы: PutLogEvents», «журналы:GetLogEvents», «журналы:FilterLogEvents» ], «Ресурс»: «*» } ] }
Роль IAM также должна содержать следующее утверждение о доверительных отношениях:
{ «Версия»: «2012-10-17», «Оператор»: [ { «Sid»: «», «Эффект»: «Разрешить», «Принципал»: { «Сервис»: «apigateway.amazonaws.com » }, «Действие»: «sts: AssumeRole» } ] }