[英]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.