前回と
前々回でcopilotの実行awsユーザーの権限が最適なものを模索していて断念ということになったんですが、目的はクリアできませんでしたがわかったことがいくつかあって、今回はそれを記載したいと思います。
copilot実行時のエラーの確認について
コンソールから実行時に権限不足とかで
% copilot app init
Your workspace is registered to application demo.
✘ Failed to create the infrastructure to manage services under application demo.
✘ wait until stack demo-infrastructure-roles create is complete: ResourceNotReady: failed waiting for successful resource state
API: iam:GetRole User: arn:aws:iam::**********:user/copilot-user is not authorized to perform: iam:GetRole on resource: role demo-adminrole because no identity-based policy allows the iam:GetRole action
こんな感じ出るんでiam:GetRoleが必要なんだなと追加していけるんですがコンソールに明確に出ない場合もあり(リソースを削除できなかったというようなだけのエラー)、その場合はCloudFormationよりスタックの詳細で何のイベントで失敗しているのかを調べて、削除に必要な権限などを付与していました。
copilot cli のアップデートでの変更
私がcopilotに触れはじめたのが4月頃なのですが、その当時はcopilot initを実行すると以下ができました。
copilot ディレクトリ
copilot/.workspace
copilot/demo ディレクトリ(アプリケーション名のディレクトリ)
copilot/demo/manifest.yaml
という構成だったのですが、
copilot ディレクトリ
copilot/.workspace
copilot/environments ディレクトリ
copilot/environments/test ディレクトリ(作成した環境名のディレクトリ)
copilot/environments/test/manifest.yml
copilot/demo ディレクトリ(アプリケーション名のディレクトリ)
copilot/demo/manifest.yml
という構成が作成されるように変更されたようです。
copilot env initではmanifest.ymlの作成になり、環境も削除せずに更新できるようになったみたいです。
ディレクトリ構成と新しい階層のマニフェストに少し混乱しました。
こんなエラーも。。。
Resource handler returned message: "The runtime parameter of nodejs10.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs16.x) while creating or updating functions. (Service: Lambda, Status Code: 400, Request ID: ******)" (RequestToken: ******, HandlerErrorCode: InvalidRequest)
copilot cliのアップデートによるものかわかりませんが、こんなエラーも出ました。。
これは、copilot cliのアップデートとxcodeのアップデート(copilot cliアップデートの際にxcodeのバージョンも警告のようなものが出ていたためアップデートしました。)、docker desktopのアップデート、ついでにmacOSもアップデートしました。
copilot v1.20.0
macOS Monterey 12.5
xcode 13.4.1
docker for desktop 4.10.1
これで再び実行したところエラーは出なくなりました。
原因がもろもろのバージョンかはわかりませんが、lambdaのfunctionなんて作って利用しているわけではないし、私側の原因とするとアップデートする以外思いつかなかったので試した感じです。
copilotの実行はできるようになったので、いよいよECSを使って環境の構築をしていきたいと思います。
コメント
コメントを投稿