目次
はじめに
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
も必須パラメータになっているようです。
引用元 : 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ロールは意識しなくても問題なかったのと、ドキュメントにも詳細は記載されていなかったので少しだけ戸惑ってしまいました。
何かしら参考になればうれしいです。