OpsWorks のチュートリアルで IAM ロールのエラーが発生したので解決してみた
OpsWorks の サンプルスタックの使用開始 というチュートリアルで、以下のエラーが発生したので、解決方法を紹介します。
An IAM role is required to create a stack
結論
原因: OpsWorks のサービスロールがなかったこと
解決策: OpsWorks のサービスロールを作成する
原因
エラーメッセージからして、IAM ロール関連であることは分かりましたが、チュートリアルには以下のように記載されていました。
通常は、最初のスタックの作成時に標準サービスロールを作成し、そのロールを以降のすべてのスタックに使用できます。
上記より、最初にスタックを作成する際に、OpsWorks のサービスロールが自動生成されるという認識でした。
しかし、スタックを作成しようとすると、以下の時点でエラーになりました。
IAM ロール一覧を確認したところ、確かに OpsWorks のサービスロールがなかったので、これが原因でした。
解決方法
IAM コンソールで OpsWorks のサービスロールを作成することで解決しました。
以下に作成手順を記載します。
IAM ポリシー作成
まずは IAM ポリシーを作成します。
ポリシーに必要な権限は、チュートリアルの手順 に記載されているので、こちらを使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"ec2:*",
"ecs:*",
"elasticloadbalancing:*",
"iam:GetRolePolicy",
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListUsers",
"rds:*"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}
}
}
]
}
サービスロール作成
続いて、OpsWorks のサービスロールを作成します。
IAM ロールの作成において、ユースケースから OpsWorks を選択します。
ポリシーには、先ほど作成した IAM ポリシーをアタッチします。
再度スタックを作成してみる
サービスロールの作成後、再度 OpsWorks コンソールからスタックを作成してみます。
すると、エラーは発生せず、スタックの作成画面が表示されました。
スタック作成後に、スタックの設定を確認すると、作成した IAM ロールが使用されていることも確認できました。
まとめ
今回は、OpsWorks のチュートリアルで An IAM role is required to create a stack
というエラーが発生したので、解決方法を紹介しました。
参考になれば幸いです。
Discussion