🚅

fastlaneでiOSアップロードで、503エラー(~v2.225.0未満)

2024/10/21に公開

結論

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