【问题标题】:Add retention policy to API Gateway logs published to CloudWatch将保留策略添加到发布到 CloudWatch 的 API Gateway 日志
【发布时间】:2019-08-12 04:00:12
【问题描述】:

我必须将保留策略添加到 API Gateway Cloudwatch 日志,因此我不能使用 aws 提供的策略来执行此操作,即 arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs

因此,我使用自定义策略创建了自己的角色:

ApiGatewayCloudWatchLogsRole:
Type: 'AWS::IAM::Role'
DependsOn: APIGFunctionLogGroup
Properties:
  AssumeRolePolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Principal:
          Service:
            - apigateway.amazonaws.com
        Action: 'sts:AssumeRole'
  Path: / 
  Policies:
    - PolicyName: APIGatewayPushLogsPolicy
      PolicyDocument:
        Version: 2012-10-17
        Statement:
            Effect: Allow
            Action:
              - 'logs:CreateLogStream'
              - 'logs:PutLogEvents'
              - 'logs:DescribeLogGroups'
              - 'logs:DescribeLogStreams'
              - 'logs:GetLogEvents'
              - 'logs:FilterLogEvents'
            Resource: '*'

然后创建 LogGroup 并保留为:

APIGFunctionLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
  RetentionInDays: 30
  LogGroupName: !Join 
    - ''
    - - API-Gateway-Execution-Logs_
      - !Ref MyRestApi

并将上面创建的角色传递给AWS::ApiGateway::Account

ApiGatewayAccount:
Type: 'AWS::ApiGateway::Account'
DependsOn: APIGFunctionLogGroup
Properties:
  CloudWatchRoleArn: !GetAtt 
    - ApiGatewayCloudWatchLogsRole
    - Arn

但在部署我的 API 网关时,我收到以下错误:

我也有信任策略,但没有创建 API 网关帐户。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-api-gateway amazon-cloudwatch


    【解决方案1】:

    如果您自己创建日志组,在 APIgateway 之前您应该能够使用现有的策略/服务角色。

    【讨论】:

    • 我尝试做的方式有什么问题?我无法理解它不起作用的原因
    • CloudFormation 可能正在检查角色拥有和不允许的权限。通过手动创建角色并配置 apigateway 以通过控制台使用它来确认。
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 2020-02-27
    • 2020-05-27
    • 2020-01-25
    • 1970-01-01
    • 2019-12-09
    • 2017-10-18
    • 2017-10-10
    相关资源
    最近更新 更多