iOSのユニバーサルリンクを使うと、ユーザーがSafariやメールなどから https://
のリンクをタップした際に、アプリが直接起動できるようになります。
今回は ConoHa WINGで取得した独自ドメインを使い、AWS(S3 + CloudFront + ACM) を利用してユニバーサルリンクを実装する手順を紹介します。
実際に私が詰まったポイント(DNS設定の落とし穴やContent-Type設定忘れなど)も注意事項として載せているので、これから設定する方の参考になると思います。
ステップ1:ConoHaで独自ドメインを取得
- ConoHa WING でドメインを購入(例:
engineer-papa.com
) - ユニバーサルリンク用にサブドメイン(例:
links.engineer-papa.com
)を利用

ステップ2:S3にapple-app-site-associationを配置
- S3 バケットを作成(名前は任意)
- 以下のファイルをアップロード
/apple-app-site-association
/.well-known/apple-app-site-association - Content-Type を
application/json
に設定すること!
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.appID",
"paths": ["/*"]
}
]
}
}

ステップ3:ACM証明書を発行(us-east-1必須)
- AWS マネジメントコンソール → Certificate Manager (ACM)
- リージョンを必ず バージニア北部 (us-east-1) に切り替える
- 証明書をリクエスト →
links.engineer-papa.com
を入力 - DNS検証を選択し、提示された CNAME レコードを ConoHa DNS に追加

ステップ4:CloudFrontにドメインを設定
- CloudFront ディストリビューションを作成し、オリジンにS3バケットを指定
- Alternate domain names (CNAMEs) に
links.engineer-papa.com
を追加 - SSL証明書に ACM(us-east-1) で発行した証明書を選択
- Add domains(デプロイ)

ステップ5:ConoHa DNSでCNAMEを設定
親ゾーン(engineer-papa.com
)に以下を追加します。
種別: CNAME
名前: links
値: dxxxxxx.cloudfront.net
TTL: 3600
※A/AAAA レコードが残っているとエラーになるので削除してから追加してください。

ステップ6:iOSアプリの設定
Xcode → Target → Signing & Capabilities → Associated Domains に以下を追加:
applinks:links.engineer-papa.com
その後、実機にビルドして Notes アプリなどにリンクを貼り、タップしてアプリが開くか確認します。

ステップ7:動作確認
dig links.engineer-papa.com CNAME
期待される結果:
links.engineer-papa.com. 3600 IN CNAME dxxxxxx.cloudfront.net.

curl -I https://links.engineer-papa.com/apple-app-site-association
期待される結果:
HTTP/2 200
content-type: application/json
Appleは各ドメインの AASA をCDNにキャッシュして配信します。
設定が正しければ以下のURLで確認できます。
https://app-site-association.cdn-apple.com/a/v1/links.engineer-papa.com
ブラウザでアクセスすると、自分の apple-app-site-association
の内容が表示されます。

内容が表示されない場合、AppleのCDNは24時間以内に反映されます。

メモ帳アプリに「https://links.engineer-papa.com/app」を記入し、タップする
AASAに設定したアプリが起動したら成功。
もしWEBページが表示された場合は上記の確認をする必要があります。
AppleのCDNが「Not Found」だとアプリは起動しません。また、内容が後に対象アプリをもう一度ビルドすると良いと思います。
実際にハマった注意点まとめ
- サブドメインを独立ゾーンにしてしまい、CNAME が作れなかった
- Host にフルドメインを入力して
links.engineer-papa.com.engineer-papa.com
になってしまった - ACM証明書を us-east-1 以外で発行してしまい CloudFront で使えなかった
- S3 の Content-Type が
application/octet-stream
のままで iOS がAASAを読まなかった
まとめ
- ConoHaで取得したドメインでも、S3 + CloudFront + ACMを使ってユニバーサルリンクを実装可能
- DNSはConoHa DNSに正しくCNAMEを設定することが最大のポイント
- Apple公式のCDNチェック(
https://app-site-association.cdn-apple.com/a/v1/<ドメイン>
)を使うと検証がスムーズ