「Dockerによるアプリケーション開発環境構築ガイド」で始めるAWS ElasticBeanstalk環境構築でハマったツボを備忘録としてメモします。
今回は、AWS ElasticBeanstalk環境としてEC2, RDS, Redisキャッシュ, S3バケットコンテナを利用して Node.js プラットフォームによる簡単なToDoアプリ開発環境を構築してみました。
初回のサンプルページをデプロイしていよいよTodosアプリのコードを手入力で完成しましたが eb deploy コマンドで 「You are not authorized to perform this operation.」エラーが出て全く進めなくなりました。
「You are not authorized to perform this operation.」が発生したときの対処法 によるとユーザーポリシーを管理する IAM が不適切とのことでした。
しばらく見慣れない膨大なAWSポリシーの名前空間を彷徨っていましたが、アカウント名のIAMユーザーを作成して以下の許可ポリシーを追加、アクセスキーを設定するとデプロイに成功しました。
アクセスキーの取得にはAWS IAMのアカウントユーザーを作成して取得します。
アクセスキーの登録には 「aws configure」コマンドで設定します。
ERROR: NotAuthorizedError - Operation Denied. Access Denied [ec2-user@ip-10-0-44-82 tasks]$ aws configure AWS Access Key ID [****************FZ7J]: ASEDISEOFIGNDEDLFZ7J AWS Secret Access Key [****************teEa]: xxxxxxxxxxxxxxxxxxxxtJgXtpaZC7hAteEa Default region name [ap-northeast-1]: Default output format [json]:
環境設定ファイルの作成は「eb init –interactive」で行いました。
[ec2-user@ip-10-0-44-82 tasks]$ eb init --interactive Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) 8) ap-southeast-2 : Asia Pacific (Sydney) 9) ap-northeast-1 : Asia Pacific (Tokyo) 10) ap-northeast-2 : Asia Pacific (Seoul) 11) sa-east-1 : South America (Sao Paulo) 12) cn-north-1 : China (Beijing) 13) cn-northwest-1 : China (Ningxia) 14) us-east-2 : US East (Ohio) 15) ca-central-1 : Canada (Central) 16) eu-west-2 : EU (London) 17) eu-west-3 : EU (Paris) 18) eu-north-1 : EU (Stockholm) 19) eu-south-1 : EU (Milano) 20) ap-east-1 : Asia Pacific (Hong Kong) 21) me-south-1 : Middle East (Bahrain) 22) af-south-1 : Africa (Cape Town) (default is 3): 9 Select an application to use 1) hi-appapi 2) [ Create new Application ] (default is 2): 1 It appears you are using Node.js. Is this correct? (Y/n): y Select a platform branch. 1) Node.js 16 running on 64bit Amazon Linux 2 2) Node.js 14 running on 64bit Amazon Linux 2 (default is 1): 1 Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization Do you want to set up SSH for your instances? (Y/n): y Select a keypair. 1) appapi 2) my-key 3) [ Create new KeyPair ] (default is 2): 1
環境ファイルを「eb list」で確認してから「eb deploy <環境envファイル>」でデプロイします。
[ec2-user@ip-10-0-44-82 tasks]$ eb list * Hiappapi-env [ec2-user@ip-10-0-44-82 tasks]$ eb deploy Hiappapi-env Creating application version archive "app-230121_072526335779". Uploading: [##################################################] 100% Done... 2023-01-21 07:25:29 INFO Environment update is starting. 2023-01-21 07:25:36 INFO Deploying new version to instance(s). 2023-01-21 07:25:40 INFO Instance deployment: You didn't specify a Node.js version in the 'package.json' file in your source bundle. The deployment didn't install a specific Node.js version. 2023-01-21 07:25:43 INFO Instance deployment completed successfully. 2023-01-21 07:25:52 INFO New application version was deployed to running EC2 instances. 2023-01-21 07:25:52 INFO Environment update completed successfully.
ブラウザからURLをクリックしてステータスに異常がなければアプリが表示されました。
まだまだAWSも Node.js も初心者ですがこれで環境構築が捗りました。ありがとうございました。
AWS CLI でのリクエストで InvalidClientTokenId のエラーが発生しました。解決策を教えてください。 | DevelopersIO
ElasticBeanstalk permissions needed to deploy new version via AWS CLI