はじめに
AWS Cloud9でAWS CLIの実行や、CDKのデプロイをすることが最近多かったため、実行権限と変更方法について記載していきます。
Cloud9が何なのかは以下をご確認ください。
あまり本筋ではないので、詳細は割愛しますが、一言でいうとマネジメントコンソール上で利用できるIDE環境です。
開発に必要なツールやSDKなどが予め設定されていて、非常に便利です。(実態は裏でEC2が動いています。)
AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。これには、コードエディタ、デバッガー、ターミナルが含まれています。Cloud9 には、JavaScript、Python、PHP などの一般的なプログラム言語に不可欠なツールがあらかじめパッケージ化されているため、新しいプロジェクトを開始するためにファイルをインストールしたり、開発マシンを設定したりする必要はありません。Cloud9 IDE はクラウドベースのため、インターネットに接続されたマシンを使用して、オフィス、自宅、その他どこからでもプロジェクトに取り組むことができます。また、Cloud9 では、サーバーレスアプリケーションを開発するためのシームレスなエクスペリエンスが提供されており、リソースの定義、デバッグ、ローカルとリモートの間でのサーバーレスアプリケーションの実行の切り替えを簡単に行えます。Cloud9 を使用すると、開発環境をすばやくチームと共有し、ペアプログラミングを行って互いの入力をリアルタイムで追跡できます。
Cloud9でAWS CLI等を実行する場合の権限
以下の公式マニュアルに記載がありますが、どうやらCloud9を呼び出している元のIAMユーザの権限をチェックし、
そのユーザがリクエストされたアクションを実行する権限があるかをチェック、なおかつAWSマネージド一時認証情報なるものをチェック、許可されたアクションであれば実行が許可されるようです。許可されないアクションは以下に記載されています。
AWS Cloud9 は、呼び出し元の AWS エンティティ (IAM ユーザーなど) が、AWS におけるリクエストされたリソースに対してリクエストされたアクションを実行する許可を有しているかどうかをチェックします。許可がない場合、または明示的に拒否されている場合、リクエストは失敗します。
AWS Cloud9 は AWS マネージド一時認証情報をチェックし、その許可が AWS 内のリクエストされたリソースに対するリクエストされたアクションを許可するかどうかをチェックします。許可がない場合、または明示的に拒否されている場合、リクエストは失敗します。AWS マネージド一時認証情報のサポート許可のリストについては、「AWS マネージド一時認証情報によってサポートされるアクション」を参照してください。
実施した内容とトラブル
トラブル
Cloud9を作成したユーザ&使用したユーザ:制限された権限を持つIAMユーザ
上記ユーザで、Cloud9からCDK Deployを実行したところエラーに・・・
権限が不足していることがわかり、Administrator Accessを保持するIAMロールにスイッチして
再度CDK Deployを実行しましたがうまくいかず・・・という状態が発生しました。
解決策
Cloud9の環境をスイッチロールしたIAMロールで作成し直したところ、解決しました。
なぜ解決したのかちょっとはっきりはわからないのですが、作成者の権限がある程度影響するのでしょうか?
現時点であまりわかっていません。
結局やりたかったこと
Cloud9でAdministrator Access権限のロールでAWS関連のコマンドを実行したい
Cloud9でIAMロールの権限で、AWSCLI等のアクセスを行う方法
いろいろ調べていたら以下のブログにたどり着きました。
クラスメソッドさんいつもありがとうございます!
どうやら、上記に記載したAWSマネージド一時認証情報の機能を無効化し、Cloud9のEC2インスタンスに直接IAMロールをアタッチすればよいとのこと。
早速やってみました。
①AWSマネージド一時認証情報の機能の無効化
以下の通り、Cloud9のコンソールからPreferenceを開き、「AWS managed temporary credentials」を無効化します。
②EC2へのIAMロールのアタッチ
上記方法でリトライしたところ、無事CDKのデプロイもできるようになりました!
まとめ
Cloud9は実行環境を簡単に作成できますが、実行権限については注意が必要だと思いました。
とはいえ、非常に便利なサービスなので、使い倒していきたいですね。