Amazon-RDS

RDS作成時に`IAM role provided is not valid`と表示された場合

はじめに

CloudFormationにてAD認証をしたRDS Microsoft SQL Serverを建てようとした際に、IAM role provided is not valid...というエラーが返ってきて失敗しました。
この記事ではその原因について調べてみましたので紹介したいと思います。

エラーになる原因について

まずは表示されたエラーを確認してみます。
以下エラー全文です。

IAM role provided is not valid, please check that the role exists and has the correct policies (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: aed6421b-ca60-42cd-872a-c1522d72eb71; Proxy: null)

確認するとInvalidParameterCombinationでIAMロールが無効らしいです。
なんのことだと思ったのですが調べてみると、RDSではMicrosoft SQL Server Windows 認証の設定をする際はDomainに加えてDomainIAMRoleNameも必須パラメータになっているようです。

AWS公式ガイドの引用

引用元 : Amazon RDS DB インスタンスの作成

解決方法の紹介

IAMロールがないだけなのでRDS用のIAMロールを作成して読み込ませます。

AWSTemplateFormatVersion: '2010-09-09'
Description: Denet Blog.

Resources:
  IAMRole:
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - rds.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      RoleName: denet-blog-test-rds-role
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/service-role/AmazonRDSDirectoryServiceAccess"

あとはこれをRDSを作成する際にDomainIAMRoleNameにImportValueやRefで参照すれば問題なく構築できるかと思います。

おわりに

この記事ではCloudFormationにてRDS SQL Serverを構築する際にMicrosoft SQL Server Windows認証を設定するのに必要な項目を紹介しました。

個人的にコンソール画面から今回のRDSを構築する際にはIAMロールは意識しなくても問題なかったのと、ドキュメントにも詳細は記載されていなかったので少しだけ戸惑ってしまいました。
何かしら参考になればうれしいです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA