LoginSignup
1
0
しくじりエンジニア!私みたいになるな!
Qiita Engineer Festa20242024年7月17日まで開催中!

AWSDataLifecycleManagerDefaultRoleを使おうとしたらIAMサービスロールの罠に引っかかったお話

Posted at

事象

罠に引っかかるまでの流れを記します。

■準備段階
①検証アカウントで、既に存在していた「AWSDataLifecycleManagerDefaultRole」のARNを確認
②DLMの設定をデプロイするためのCloudFormationテンプレートに①で確認したARNを記載。
※アカウントID部分は本番アカウントIDに置換しました。

■構築時
③新規の本番アカウントでCloud ShellからAWS CLIでAWSDataLifecycleManagerDefaultRoleを事前に作成
④新規の本番アカウントで②で準備したCloudFormationテンプレートをデプロイ

■試験時
⑤構築翌日にDLMの実行がエラーになっていることを確認

入念にCloudFormationテンプレートの中身は確認していたので、単なる誤字脱字ではありませんでした。
皆さんはこの事象が起きた原因が何かわかりますでしょうか。

そもそもIAMサービスロールってなんだっけという方は、以下の記事のIAMサービスロールとIAMロールの違いをまとめた表がわかりやすかったです。
IAMサービスロールとIAMロールの違い

原因

単刀直入に述べると
CloudFormationテンプレートのDLM設定に記載したIAMロールのARN(①で確認したARN)が正しい文字列でなかったこと
が原因でした。

ではなぜ間違っていたか。
それは以下のようにIAMサービスロールの作成方法が異なることが根本の原因でした。

  • 検証アカウントの「AWSDataLifecycleManagerDefaultRole」→ AWSコンソールで作成されたIAMサービスロール
  • 本番アカウントの「AWSDataLifecycleManagerDefaultRole」→ CloudShell(AWS CLI)で作成されたIAMサービスロール

具体的には以下のように異なるようです。

作成方法 ARN形式
AWSコンソール arn:aws:iam::account_id:role/service-role/AWSDataLifecycleManagerDefaultRole
AWS CLI arn:aws:iam::account_id:role/AWSDataLifecycleManagerDefaultRole

AWS公式:Amazon Data Lifecycle Manager のデフォルトのサービスロール

話を戻すと、本番アカウントでは新規にCloudShell(AWS CLI)で作成されたIAMロール、つまり /service-role/のパスがつかないIAMサービスロールが作成されたにもかかわらず、
CloudFormationテンプレートのDLMの設定部分では /service-role/のパスがついたIAMサービスロールのARNを指定してしまっていたことにより、エラーが起きたようでした。

あとがき

日頃、事前準備時にリソースに必要なパラメータなどは準備しておくことが多いですが、本番のリソースをどのように作成するかで今回のようにIAM ARNが変わるといったこともあるので、構築の流れを見据えて準備するべきだと学んだ一件でした。
どなたかの役に立ちますように。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0