

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CodeArtifact での Swift パッケージマネージャーの設定
<a name="configure-swift"></a>

Swift Package Manager を使用して AWS CodeArtifact にパッケージを発行したり、CodeArtifact からパッケージを使用したりするには、まず CodeArtifact リポジトリにアクセスするための認証情報を設定する必要があります。CodeArtifact の認証情報とリポジトリエンドポイントに Swift パッケージマネージャー CLI を設定するには、`aws codeartifact login` コマンドの使用を推奨します。Swift パッケージマネージャーは、手動で設定することもできます。

## login コマンドを使用して Swift を設定する
<a name="configure-swift-login-command"></a>

`aws codeartifact login` コマンドを使用して、CodeArtifact で Swift パッケージマネージャーを設定します。

**注記**  
login コマンドを使用するには Swift 5.8 以降が必要で、Swift 5.9 以降の使用を推奨します。

`aws codeartifact login` コマンドは、次の操作を行います。

1. CodeArtifact から認証トークンを取得して、認証トークンを環境変数に保存します。認証情報の保存方法は、環境のオペレーティングシステムによって異なります。

   1. **macOS:** macOS キーチェーンアプリケーションにエントリが作成されます。

   1. **Linux および Windows:** `~/.netrc` ファイルにエントリが作成されます。

   どちらのオペレーティングシステムの場合でも、認証情報エントリが存在する場合、このコマンドは既存のエントリを新しいトークンに置き換えます。

1. CodeArtifact リポジトリのエンドポイント URL を取得し、Swift 設定ファイルに追加します。このコマンドは、リポジトリのエンドポイント URL を、`/path/to/project/.swiftpm/configuration/registries.json` にあるプロジェクトレベルの設定ファイルに追加します。

**注記**  
`aws codeartifact login` コマンドは、実行が必要な `swift package-registry` コマンドを、`Package.swift` ファイルを含むディレクトリから呼び出します。そのため、`aws codeartifact login` コマンドは Swift プロジェクト内から実行する必要があります。

**login コマンドを使用して Swift を設定するには**

1. プロジェクトの `Package.swift` ファイルが含まれている Swift プロジェクトディレクトリに移動します。

1. 次の `aws codeartifact login` コマンドを実行します。

   所有しているドメインのリポジトリにアクセスする場合、`--domain-owner`を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。

   ```
   aws codeartifact login --tool {{swift}} --domain {{my_domain}} \
   --domain-owner {{111122223333}} --repository {{my_repo}} \
   [--namespace {{my_namespace}}]
   ```

`--namespace` オプションは、CodeArtifact リポジトリのパッケージが指定された名前空間にある場合にのみ、パッケージを使用するようにアプリケーションを設定します。[CodeArtifact の名前空間](codeartifact-concepts.md#welcome-concepts-package-namespace)はスコープと同義であり、コードを論理グループに整理したり、コードベースに複数のライブラリが含まれている場合に発生する可能性のある名前の競合を防ぐために使用されます。

`login` を呼び出した後のデフォルトの認可時間は 12 時間であり、トークンを定期的に更新するには、`login` を呼び出す必要があります。`login` コマンドで作成される認可トークンの詳細については、「[`login`コマンドで作成されたトークン](tokens-authentication.md#auth-token-login)」を参照してください。

## login コマンドを使用せずに Swift を設定する
<a name="configure-swift-without-login-command"></a>

[`aws codeartifact login` コマンドを使用して Swift を設定する](#configure-swift-login-command)ことを推奨しますが、Swift パッケージマネージャーの設定を手動で更新することで、login コマンドを使用せずに Swift パッケージマネージャーを設定することもできます。

次の手順では、 AWS CLI を使用して以下を実行します。

1. CodeArtifact から認証トークンを取得して、認証トークンを環境変数に保存します。認証情報の保存方法は、環境のオペレーティングシステムによって異なります。

   1. **macOS:** macOS キーチェーンアプリケーションにエントリが作成されます。

   1. **Linux および Windows:** `~/.netrc` ファイルにエントリが作成されます。

1. CodeArtifact リポジトリのエンドポイント URL を取得します。

1. `~/.swiftpm/configuration/registries.json` 設定ファイルに、リポジトリのエンドポイント URL と認証タイプを含むエントリを追加します。

**login コマンドを使用せずに Swift を設定するには**

1. コマンドラインで以下のコマンドを使用して、CodeArtifact 認可トークンを取得し、認可トークンを環境変数に保存します。
   + {{my\_domain}} を CodeArtifact ドメイン名に置き換えます。
   + {{111122223333}} をドメイン所有者の AWS アカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合、`--domain-owner`を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text`
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Windows PowerShell：

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text
     ```

------

1. 次のコマンドを実行して、CodeArtifact リポジトリのエンドポイントを取得します。リポジトリエンドポイントは、パッケージを使用または公開するリポジトリを Swift パッケージマネージャーに示すために使用されます。
   + {{my\_domain}} を CodeArtifact ドメイン名に置き換えます。
   + {{111122223333}} をドメイン所有者の AWS アカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合、`--domain-owner`を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + {{my\_repo}} を CodeArtifact リポジトリ名で置き換えます。

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --format swift --query repositoryEndpoint --output text`
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     for /f %i in ('aws codeartifact get-repository-endpoint --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --format swift --query repositoryEndpoint --output text') do set CODEARTIFACT_REPO=%i
     ```
   + Windows PowerShell：

     ```
     $env:CODEARTIFACT_REPO = aws codeartifact get-repository-endpoint --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --format swift --query repositoryEndpoint --output text
     ```

------

   次の URL は、リポジトリエンドポイントの例です。

   ```
   https://{{my_domain}}-111122223333.d.codeartifact.{{us-west-2}}.amazonaws.com/swift/{{my_repo}}/
   ```
**注記**  
デュアルスタックエンドポイントを使用するには、`codeartifact.{{region}}.on.aws` エンドポイントを使用してください。
**重要**  
Swift パッケージマネージャーの設定に使用する場合は、リポジトリの URL エンドポイントの末尾に `login` を追加する必要があります。これはこの手順のコマンドで自動的に行われます。

1. これら 2 つの値を環境変数に格納したら、以下のように `swift package-registry login` コマンドを使用して Swift に渡します。

------
#### [ macOS and Linux ]

   ```
   swift package-registry login ${CODEARTIFACT_REPO}login --token ${CODEARTIFACT_AUTH_TOKEN}
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     swift package-registry login %CODEARTIFACT_REPO%login --token %CODEARTIFACT_AUTH_TOKEN%
     ```
   + Windows PowerShell：

     ```
     swift package-registry login $Env:CODEARTIFACT_REPO+"login" --token $Env:CODEARTIFACT_AUTH_TOKEN
     ```

------

1. 次に、アプリケーションが使用するパッケージレジストリを更新して、依存関係が CodeArtifact リポジトリから取得されるようにします。このコマンドは、パッケージの依存関係を解決しようとしているプロジェクトディレクトリで実行する必要があります。

------
#### [ macOS and Linux ]

   ```
   $ swift package-registry set ${CODEARTIFACT_REPO} [--scope {{my_scope}}]
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     $ swift package-registry set %CODEARTIFACT_REPO% [--scope {{my_scope}}]
     ```
   + Windows PowerShell：

     ```
     $ swift package-registry set $Env:CODEARTIFACT_REPO [--scope {{my_scope}}]
     ```

------

   `--scope` オプションは、CodeArtifact リポジトリのパッケージが指定されたスコープにある場合にのみ、パッケージを使用するようにアプリケーションを設定します。スコープは [CodeArtifact の名前空間](codeartifact-concepts.md#welcome-concepts-package-namespace)と同義であり、コードを論理グループに整理したり、コードベースに複数のライブラリが含まれている場合に発生する可能性のある名前の競合を防ぐために使用されます。

1. プロジェクトディレクトリで以下のコマンドを実行しプロジェクトレベルの `.swiftpm/configuration/registries.json` ファイルの内容を表示することで、正しく設定されたことを確認できます。

   ```
   $ cat .swiftpm/configuration/registries.json
   {
     "authentication" : {
   
     },
     "registries" : {
       "[default]" : {
         "url" : "https://my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my-repo/"
       }
     },
     "version" : 1
   }
   ```

CodeArtifact リポジトリでの Swift パッケージマネージャーの設定は以上です。これで Swift パッケージマネージャーを使用して Swift パッケージをリポジトリに公開したり、リポジトリから Swift パッケージを使用したりできるようになります。詳細については、「[Swift パッケージの使用と公開](swift-publish-consume.md)」を参照してください。