amazon-web-services - 向发布到 CloudWatch 的 API Gateway 日志添加保留策略

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

我必须向 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 网关时,我收到错误:

ERROR

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

最佳答案

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

关于amazon-web-services - 向发布到 CloudWatch 的 API Gateway 日志添加保留策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278040/

相关文章:

aws-cloudformation - Serverless.js 和 Lambda@Edge : specifying origin

amazon-web-services - 区域/边缘优化 API 网关 VS 区域/边缘优化自定义域名

javascript - 递归调用返回 promise 的异步函数

amazon-web-services - 如何从 AWS DynamoDB 导出数据(表和数据)并导入到本地 DynamoDB?

amazon-web-services - Cloudformation - 使用以前使用的名称重新创建堆栈

amazon-ec2 - 通过 AWS 和 CloudFormation 自动分配 IPv6 地址

aws-lambda - 如何更改 SAM 模板中 API 阶段的名称?

api - 亚马逊 API 网关的 OAuth

amazon-web-services - 如何允许实例删除附加卷的旧快照?

php - 适用于 PHP 的 AWS 开发工具包 - SQS 错误