Отправка журналов шлюза API в CloudWatch через Cloudformation - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю шаблон CFN, в котором я включаю журналы для шлюза API.Он создал роль, подобную этой

  "ApiGatewayCloudWatchLogsRole": {
  "Type": "AWS::IAM::Role",
  "Properties": {
    "AssumeRolePolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [{
        "Effect": "Allow",
        "Principal": { "Service": ["apigateway.amazonaws.com"] },
        "Action": ["sts:AssumeRole"]
      }]
    },
    "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess"
        ],
    "Policies": [{
      "PolicyName": "ApiGatewayLogsPolicy",
      "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [{
          "Effect": "Allow",
          "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:PutLogEvents",
            "logs:GetLogEvents",
            "logs:FilterLogEvents"
          ],
          "Resource": "*"
        }]
      }
    }]
  }
}

И я добавил к AWS::ApiGateway::Account вот так в соответствии с этим документ

"ApiGatewayAccount": {
  "Type" : "AWS::ApiGateway::Account",
  "Properties" : {
    "CloudWatchRoleArn" : {"Fn::GetAtt" : ["ApiGatewayCloudWatchLogsRole", "Arn"] }
  }
},

В документации AWS::ApiGateway::Account.Они указываются следующим образом:

Важно

Если ресурс шлюза API никогда не создавался в вашей учетной записи AWS, необходимо добавить зависимость от другого ресурса шлюза API, такого как AWS:: ApiGateway :: RestApi или AWS :: ApiGateway :: Ресурс ApiKey.

Если в вашей учетной записи AWS создан ресурс API-шлюза, зависимость не требуется (даже если ресурс был удален).

Это мое понимание вышеупомянутой заметки, если мой CFN не имеет AWS::ApiGateway::Resource, тогда мне нужно добавить зависимость к моему AWS::ApiGateway::Account таким образом, что необходимо создать ресурс AWS::ApiGateway::Accountтолько после создания AWS::ApiGateway::RestApi.

Итак, я изменил фрагмент кода CFN следующим образом

"ApiGatewayAccount": {
  "Type" : "AWS::ApiGateway::Account",
  "DependsOn": [
        "CFNTest" -->This is a`AWS::ApiGateway::RestApi`
      ],
  "Properties" : {
    "CloudWatchRoleArn" : {"Fn::GetAtt" : ["ApiGatewayCloudWatchLogsRole", "Arn"] }
  }
},

Правильно ли я понимаю?

Спасибо

...