🔧

【備忘録】AWS Amplifyで amplify init で既存環境が出てこない問題の解決

2023/12/03に公開

はじめに

札幌市でエンジニアをしています、n13uです。自分が副代表を務めるSocialChangeLab合同会社にて、システム開発関連事業を取りまとめて(開発もして)います。
実際に案件に取り組んでいる中で、実際に起きた問題と解決方法をまとめたものになります。
amplifyの開発リポジトリをGitでローカルにクローンし、amplify init をしたときに既存の環境が出てこず、新規のプロジェクト作成をプロンプト上で促される場合の問題解決方法をまとめました。

起こっていること

AWS Organizatios と AWS IAM Identitiy Center を利用し、マルチアカウント構成をしています。
とあるAWSアカウントAのAccess権限にCLIからアクセスできるよう、aws ssoのサブコマンドでssoセッションとプロファイルの作成を完了しています。

とあるAmplifyプロジェクトSample-Amplifyがあり、そのAppIdが20020731、GitHubリポジトリ名がSampleAmplifyですでにAmplify環境はできている状態です。
ここで別環境(例えば開発者AがつくったAmplify開発環境を開発者Bも利用したい場合など)にGitHubリポジトリをクローンし、amplify initをした際に、

? Do you want to use an existing environment?

のダイアログが出ずに、新規の環境作成を促されます。

前提環境

パッケージ・ライブラリ バージョン
aws-amplify@cli v11.1.0
nodejs v18

原因

AWS Profileの切り替えが上手く行っておらず、かつ .aws配下の .aws/credentials上にaws_access_key_idaws_secret_access_keyが無いことが問題でした。

aws sso loginもしくはaws configureでCLI上からIAMユーザー等にログインし、プロファイルを作成してもcredentialsが正常に生成されてなかったり、取得されていなかったりする場合に、AWSアカウント上のAmplify環境を取得できずに、新規の環境作成を促されるとのことでした。

対策

AWS IAM Identity Center を利用している場合は、ログインコンソールに移動後、Commad line and prorgramatic accessのボタン押下後に出てくるGet Access for ... というタイトルのモーダルに記述の認証情報を以下の形式で記述します。
その後、amplify init --profile {プロファイル名}を実行すると正常に動くはずです。


認証情報を以下のように記述

~/.aws/credetials
[{プロファイル名}]
aws_access_key_id={aws_access_key_id}
aws_secret_access_key={aws_secret_access_key}
aws_session_token={aws_session_token}

ちなみにこれは appId を指定して pull した際も、同様の問題が置きます。pull の場合は、指定したappIdが見つからないよと言われます。

一般的なIAMユーザーの場合は、aws_access_key_idaws_secret_access_keyの記述のみで大丈夫です。

最後に

めちゃくちゃ初歩的なミス?でしたが参考になればというところで、、、
記事に間違いや訂正などあればぜひ、コメントいただけますと幸いです。。。

宣伝

札幌市では、現在札幌にエンジニアを集め、成長を促す取り組みとして、Sapporo Engineeer Base という活動に取り組んでいます。
よけえばTwitter(X)のフォローやウェブサイトのぞきに来ていただけると嬉しいです!

Twitter: https://twitter.com/seb_sapporo
Website: https://sapporo-engineer-base.dev

GitHubで編集を提案

Discussion