AmazonRDSEnhancedMonitoringRole的Cloudformation模板

ala*_*lan 3 amazon-web-services amazon-rds aws-cloudformation

我试图通过Cloudformation模板启动RDS堆栈.我想在我的数据库实例上启用增强监控.为此,MonitoringRoleArn必须在资源上指定属性.

据我所知,这个ARN应该指向已经给出AmazonRDSEnhancedMonitoringRole策略的IAM服务角色,如下所述:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html

理想情况下,我还希望通过Cloudformation创建该角色.然而,对于我的生活,我找不到如何在Cloudformation模板中执行此操作的示例.事实证明,Cloudformer工具不会分析IAM资源.

有没有人这样做过?你能分享一个例子吗?

men*_*ann 7

就像avisheks提到的那样,发生了变化。
来自helloomichibye的示例不再有效。这是我在 YAML 中的代码(带有可配置的参数):

Parameters:
  EnableEnhancedMonitoring:
    Description: 'Provide metrics in real time for the operating system (OS) that your DB instance runs on.'
    Type: String
    AllowedValues: [true, false]
    Default: false

Conditions:
  HasEnhancedMonitoring: !Equals [ !Ref EnableEnhancedMonitoring, 'true' ]

Resources:
  EnhancedMonitoringRole:
    Condition: HasEnhancedMonitoring
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Sid: ''
          Effect: Allow
          Principal:
            Service: monitoring.rds.amazonaws.com
          Action: sts:AssumeRole
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole
      Path: "/"

  DBInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      ...
      MonitoringInterval: !If [HasEnhancedMonitoring, 60, 0]
      MonitoringRoleArn: !If [HasEnhancedMonitoring, !GetAtt ['EnhancedMonitoringRole', 'Arn'], !Ref 'AWS::NoValue']
      ...
Run Code Online (Sandbox Code Playgroud)


hel*_*bye 6

在YAML:

Role:
  Type: 'AWS::IAM::Role'
  Properties:
    ManagedPolicyArns:
    - 'arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole'
    AssumeRolePolicyDocument:
      Version: '2008-10-17'
      Statement:
      - Effect: Allow
        Principal:
          Service: 'rds.amazonaws.com'
        Action: 'sts:AssumeRole'
Run Code Online (Sandbox Code Playgroud)

然后,您需要在RDS实例的MonitoringRoleArn属性中引用该角色,如下所示:

!GetAtt ["Role", "Arn"]
Run Code Online (Sandbox Code Playgroud)

如果您需要JSON中的示例,请告诉我.

  • 我必须根据http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html为`monitoring.rds.amazonaws.com`添加第二个allow语句,以避免错误`IAM角色ARN值是无效或不包含以下所需的权限:ENHANCED_MONITORING` (4认同)
  • 可信实体必须是“monitoring.rds.amazonaws.com” (2认同)