Добавить политику хранения в журналы API Gateway, опубликованные в CloudWatch - PullRequest
0 голосов
/ 21 марта 2019

Мне нужно добавить политику хранения в журналы 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 не создается.

1 Ответ

0 голосов
/ 21 марта 2019

Если вы создаете группу журналов самостоятельно, прежде чем APIgateway сделает это, вы сможете использовать существующую роль политики / службы.

...