AWSベースのソフトウェアアーティファクトリポジトリCodeArtifactは、Maven、NuGet、npm、pipなどに加えて、Swiftパッケージマネージャをサポートするようになった。これにより開発者は、他のリポジトリを使用するときと同じように、Appleの公式パッケージマネージャを使用してSwiftパッケージを保存および取得できる。
AWSクラウド上のCodeArtifactリポジトリからSwiftパッケージの依存関係を公開し、ダウンロードできるようになった。CodeArtifact SwiftPMは、Xcode、VSCode、Swift Package Managerコマンドラインツールなどの既存の開発者ツールと連携する。
AWS CodeArtifactは、開発者がプロジェクトに追加できる依存関係を厳密に管理したい組織を対象としている。AWSの開発者支援者であるSébastien Stormacq氏は、これには法的な理由やセキュリティ上の理由があると説明する。実際、AWS CodeArtifactのようなプライベートパッケージリポジトリを使用することで、利用可能なすべてのパッケージが、組織が強制したい特定のライセンス要件を満たしていること、またパッケージが安全で、サプライチェーン攻撃につながる可能性のあるバックドアを含んでいないことを保証できる。例えば、ある組織では、社内でビルドされ、セキュリティチェックされ、法的に承認された特定のバージョンのパッケージしか使用できないようにできる。
開発者にとって、AWS CodeArtifactを使用することは、日常的なワークフローの変更を意味しないが、CodeArtifactからの認証トークンの取得、リポジトリエンドポイントの取得、Swift Package ManagerへのCodeArtifactリポジトリエンドポイントの追加という3つのステップからなる特定のセットアップを必要とする。
最初の2つのステップは、以下のリクエストを実行することで達成される、とStormacq氏は説明する。
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain stormacq-test --domain-owner 012345678912 --query authorizationToken --output text`export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint --domain stormacq-test --domain-owner 012345678912 --format swift --repository MySwiftRepo --query repositoryEndpoint --output text`
認証トークンとリポジトリのエンドポイントを取得したら、Swift Package Managerを手動で設定するか、AWS CLIが提供する別のコマンドを実行して同様の効果を得られる。
aws codeartifact login --tool swift --domain stormacq-test --repository MySwiftRepo --namespace aws --domain-owner 012345678912
この設定を行うと、リポジトリにパッケージを公開できるようになる。
AWS CodeArtifactでパッケージが利用できるようになると、開発者はPackage.swift
ファイルにCodeArtifactのURLを指定するだけで、GitHubなどでホストされているパッケージを取得するためにGitエンドポイントを指定するときと同じようになる。
AWS CodeArtifactは、少なくともmacOS 13(Ventura)とXcode 14のデフォルトツールチェーンであるSwift 5.8を必要とする。Linux機の場合、必要なツールチェーンはSwift.orgからダウンロードできる。留意すべき重要な点は、AWS認証トークンは12時間後に失効することです。つまり、定期的に更新するためにcronジョブを設定する必要がある。