fastlaneでiOSアップロードで、503エラー(~v2.225.0未満)
結論
refs: Apple ID auth not working - 503 Service Temporarily Unavailable on various fastlane modules
#26368
対応は、
A: fastlaneの最新version(v2.225.0)に上げる🎉
#######################################################################
# fastlane 2.225.0 is available. You are on 2.224.0.
# You should use the latest version.
# Please update using `bundle update fastlane`.
#######################################################################
2.225.0 Improvements
This version has a required fix for authenticating with Apple via Apple ID. Apple started using their own variant of SRP (Secure Remote Password) using SHA-256 and 2048 bit hashing in the sign in flow. Any previous _fastlane_ versions will likely response a "503 Service Temporarily Unavailable" when authenicating with an Apple ID.
* [spaceship] New AppleID Auth with SRP (#26415) via Josh Holtz (@snatchev and @joshdholtz)
または、
B: AppStoreConnectAPIKey利用に、切り替え実装👩💻
発生条件
1, AppleID利用で、fastlaneを使い
かつ、
2, v2.225.0より前のバージョンのfastlaneを利用すると発生
(match等のコマンドでも発生)
発覚経緯
- fastlaneで、testFlightアップロード処理で、↓エラー。
Logging into to App Store Connect (*******@***.com)...
Could not login to App Store Connect
Please check your credentials and try again.
This could be an issue with App Store Connect,
Please try unsetting the FASTLANE_SESSION environment variable by calling 'unset FASTLANE_SESSION'
(if it is set) and re-run `fastlane spaceauth`
Exception type: Spaceship::Tunes::Error
Looking for related GitHub issues on fastlane/fastlane...
[!] The request could not be completed because:
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>Apple</center>
</body>
</html>
「AppleID利用」 vs 「AppStoreConnectAPIKey利用」の差分
※AppleID利用では、「App-Specific Password(Appパスワード)」の利用を想定。
fastlane利用時に、「AppleID」と「AppStoreConnectAPIKey」の差分をまとめると、
AppleID | AppStoreConnectAPIKey | |
---|---|---|
1,手軽さ | ◎ | ◯ |
2,安定性 | ◯ | ◎ |
3,やれることの豊富さ(※1) | ◎ | ◯ |
備考
自分の環境の場合、
- 1,手軽さ に、惹かれてAppleID利用(Appパスワードの発行)で、fastlaneを利用していたが、
- 2,安定性 が、APIKeyよりもよくないため、APIKey利用に変更して対応した。
ただ、(問題発生から二日後)に、fastlane公式が、爆速対応🙏してくれたようで、対応を待つでもよかったかも。
- 3,やれることの豊富さ、は、AppleID利用(Appパスワードの発行)でのfastlane動作が、
AppleのPrivateAPIを利用して、ごにょごにょしている関係上🧐、たびたび?通信を閉じられる(というか変更される?)ことが発生しうるよ、発生頻度は今のところ少ないよ、とIssueのcommentにあった。
ので、Apple公式のAPIKey利用で事足りるなら、安定性を取り、APIKey利用に切り替えるし、
AppleID利用でしか対応できないことがあるなら、そちらを引き続き利用でいいように思う🧐
-
CI/CDでの利用前提なら、APpStoreConnectAPIKey利用
- APIキーを発行し、CI/CD環境でシームレスに利用可能。
- 自動化に最適で、安定して連携が行える。
-
少人数でとりあえず導入なら、AppleID利用が手軽でよさそう
- Apple IDと二要素認証の組み合わせで使います。
- CI/CD環境では、認証での再入力が求められるケースもあり、安定性がやや低くなります。
※1 refs: fastlane ->「Authenticating with Apple services」
方法1:App Store Connect APIキー(推奨)
これは、Apple のサービスで認証するための推奨および公式の方法です。ただし、まだすべての高速レーン機能をサポートしているわけではありません。詳細については、App Store Connect API をご覧ください。
Discussion