繁体   English   中英

创建 aws_api_gateway_account 资源返回 AccessDeniedException

[英]Creating an aws_api_gateway_account resource returns AccessDeniedException

在我的 terraform 脚本中,我有以下资源 -

resource "aws_api_gateway_account" "demo" {
  cloudwatch_role_arn = var.apigw_cloudwatch_role_arn
}

在 Apply 阶段,我看到以下错误 -

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

是否需要将特定权限附加到角色才能消除此错误?

遇到与@bdev03 相同的问题,我花了 2 天时间才确定缺少的权限是“iam:PassRole”,如果 terraform 能够指出这一点,那就太好了,希望这会有所帮助。

由于这个线程(到目前为止)和官方文档都没有很好地解决这个问题......这个行动所需的最低政策是:

{
  "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": "*"
}

我没有测试过,但我相信该角色需要如下所示的内容。 在源代码中查看更多上下文:https 的“启用 CloudWatch Logs”部分://docs.aws.amazon.com/apigateway/latest/developerguide/stages.html

对于常见的应用场景,IAM 角色可以附加 AmazonAPIGatewayPushToCloudWatchLogs 的托管策略,其中包含以下访问策略语句:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", “日志:DescribeLogStreams”,“日志:PutLogEvents”,“日志:GetLogEvents”,“日志:FilterLogEvents”],“资源”:“*”}]}

IAM 角色还必须包含以下信任关系声明:

{“版本”:“2012-10-17”,“声明”:[{“Sid”:“”,“效果”:“允许”,“主体”:{“服务”:“apigateway.amazonaws.com” }, "Action": "sts:AssumeRole" } ] }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM