RDSデータベースが接続された多分10のElastic Beanstalk環境を作成しましたが、このアプリケーションの何らかの理由で、Elastic Beanstalk環境にRDSデータベースを追加できません。
Elastic Beanstalk UIからConfiguration > Database
を使用してRDSデータベースを追加しています。このエラーは、ルートユーザーがRDS DBセキュリティグループを作成できないことを原因としています。イベントログに次のように表示されます。
INFO: Environment update is starting.
INFO: Updating environment pscope-api-prod's configuration settings.
ERROR: Service:AmazonCloudFormation, Message:Stack named 'awseb-e-rmu57hh9tz-stack' aborted operation. Current state: 'UPDATE_ROLLBACK_IN_PROGRESS' Reason: The following resource(s) failed to create: [AWSEBRDSDBSecurityGroup].
ERROR: Creating RDS database security group named: awseb-e-rmu57hh9tz-stack-awsebrdsdbsecuritygroup-gpqdtr1kvf7z failed Reason: Either the resource does not exist, or you do not have the required permissions.
ERROR: Failed to deploy configuration.
INFO: Deleted RDS database security group named: awseb-e-rmu57hh9tz-stack-awsebrdsdbsecuritygroup-gpqdtr1kvf7z
INFO: The environment was reverted to the previous configuration setting.
これが完了すると、データベースは作成されず、すべてがRDSデータベースを追加する前の状態に戻ります。
私が試したこと:
eb create
を使用してeb-cliで作成しますが、ダッシュボードUIを使用して作成しようとしても、同じエラーが発生します。AWSを使い始めたばかりで、Elastic Bean管理コンソールから新しいデータベースを作成して追加しようとしたときに同じ問題が発生しました。
IAMでAWSServiceRoleForRDS-ロールを追加した後に修正されました。 IAM-> Roles-> Create role-> AWS Serviceに移動します。
RDS、およびRDSユースケースを選択します。 「Next:Permissions」をクリックします。 AmazoneRDSServiceRolePolicyが追加されていることがわかります。 Next:Review-> Create Roleをクリックします。
これで完了です。今すぐElastic Beanstalk管理コンソールからデータベースを作成してみてください。これで動作するはずです。
私の問題は、RDSページの下部にある続行ではなく適用をクリックすることでした。 続行をクリックした後、データベースに2つのサブネットを割り当てるように指示するメッセージを確認できました。それを行って適用をクリックすると、すべてが正常に機能しました。
どうやらeb create(データベースを指定しないと思います)を実行したとき、IAMユーザー用に自動的に作成された必要なロールには、RDSによる変更を許可するために必要なロールがありません。
新しいロールの作成 IAM管理コンソールでのRDSサービスの場合、「RDSがAWSリソースを使用して操作を実行できるようにします。 "アクセス許可を確認し、AmazonRDSServiceRolePolicyがリストにあることを確認した後、AWSServiceRoleForRDSがリストに追加され、問題を解決できると期待されます。
まったく同じ問題があり、いくつかのグーグル検索の後、AWSServiceRoleForRDSロールを追加すると問題が修正されることがわかりました。