CodeArtifact をnuget または dotnet CLI で使用する - CodeArtifact

CodeArtifact をnuget または dotnet CLI で使用する

nuget および dotnet のような CLI ツールを使用して、CodeArtifact からパッケージを公開して消費できます。このドキュメントでは、CLI ツールの設定と、それらを使用してパッケージを公開または使用する方法について説明します。

nuget または dotnet CLI を設定する

AWS CLI を使用して、または手動で、CodeArtifact NuGet 認証情報 プロバイダーを使用して nuget または dotnet CLI を設定できます。セットアップを簡素化し、認証を継続するために、NuGet を認証情報プロバイダーで設定することを強くお勧めします。

方法 1: CodeArtifact NuGet 認証情報プロバイダーを使用して設定する

CodeArtifact NuGet 認証情報プロバイダーは、NuGet CLI ツールを使用した CodeArtifact の認証と設定を簡素化します。CodeArtifact 認証トークンは、最大 12 時間有効です。nuget または dotnet CLI の使用中にトークンを手動で更新する必要がないように、認証情報プロバイダーは現在のトークンの有効期限が切れる前に定期的に新しいトークンを取得します。

重要

認証情報プロバイダーを使用するには、以前に NuGet を設定するために aws codeartifact login を実行して手動で追加した nuget.config ファイルから、既存の AWS CodeArtifact 認証情報 が削除されていることを確認してください。

CodeArtifact NuGet 認証情報プロバイダーのインストールと設定

dotnet
  1. 以下の dotnet コマンドを使用して、NuGet.org の AWS.CodeArtifact.NuGet.CredentialProvider ツールをダウンロードします。

    dotnet tool install -g AWS.CodeArtifact.NuGet.CredentialProvider
  2. codeartifact-creds install コマンドを使用して、認証情報プロバイダーを NuGet プラグインフォルダにコピーします。

    dotnet codeartifact-creds install
  3. (オプション): 認証情報プロバイダーで使用する AWS プロファイルを設定します。設定されていない場合は、認証情報プロバイダーはデフォルトのプロファイルを使用します。AWS CLI プロファイルの詳細については、名前付きプロファイル を参照してください。

    dotnet codeartifact-creds configure set profile profile_name
nuget

次の手順を実行して、NuGet CLI を使用して Amazon S3 バケットから CodeArtifact NuGet 認証情報プロバイダーをインストールして設定します。認証情報プロバイダーはデフォルト AWS CLI プロファイルを使用します。プロファイルの詳細については、名前付きプロファイル を参照してください。

  1. CodeArtifact NuGet 認証情報プロバイダー (codeartifact-nuget-credentialprovider.zip) の最新バージョンを Amazon S3 バケットからダウンロードします。

    以前のバージョンを表示してダウンロードするには、「CodeArtifact NuGet 認証情報プロバイダーのバージョン」を参照してください。

  2. ファイルを解凍します。

  3. AWS.CodeArtifact.NuGetCredentialProvider フォルダを、netfx フォルダから、Windows の場合は %user_profile%/.nuget/plugins/netfx/、LinuxまたはMacOSの場合は ~/.nuget/plugins/netfx にコピーします。

  4. AWS.CodeArtifact.NuGetCredentialProvider フォルダを、netcore フォルダから、Windows の場合 %user_profile%/.nuget/plugins/netcore/ は、LinuxまたはMacOS の場合は ~/.nuget/plugins/netcore にコピーします。

リポジトリを作成して認証情報プロバイダーを設定したら、nuget または dotnet CLI ツールを使用して、パッケージをインストールして公開できます。詳細については、「CodeArtifact から NuGet パッケージを消費する」および「NuGet パッケージを CodeArtifact に公開する」を参照してください。

方法 2: login コマンドで nuget または dotnet を設定する

AWS CLI にある codeartifact login コマンドは、リポジトリエンドポイントと認可トークンを NuGet 設定ファイルに追加し、nuget または dotnet が CodeArtifact リポジトリに接続できるようにします。これにより、Windows の場合は%appdata%\NuGet\NuGet.Config、Mac/Linux の場合は ~/.config/NuGet/NuGet.Config または ~/.nuget/NuGet/NuGet.Config にあるユーザーレベルの NuGet 設定が変更されます。NuGet 設定の詳細については、一般的な NuGet の設定 を参照してください。

nuget または dotnet を login コマンドで設定する
  1. CodeArtifact の開始方法 で説明されているように、AWS CLI で使用するための AWS 認証情報を設定する。

  2. NuGet CLI ツール (nugetまたはdotnet) が正しくインストールされ、設定されていることを確認します。手順については、nuget または dotnet ドキュメントを参照してください。

  3. CodeArtifact login コマンドを使用して、NuGet で使用する認証情報を取得する。

    注記

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

    dotnet
    重要

    Linux および MacOS のユーザー: 暗号化は Windows 以外のプラットフォームではサポートされていないため、取得した資格情報はプレーンテキストとして設定ファイルに保存されます。

    aws codeartifact login --tool dotnet --domain my_domain --domain-owner 111122223333 --repository my_repo
    nuget
    aws codeartifact login --tool nuget --domain my_domain --domain-owner 111122223333 --repository my_repo

login コマンドは次の処理を行います:

  • AWS 認証情報を使用して、CodeArtifact から認可トークンを取得します。

  • ユーザーレベルの NuGet 設定を、NuGet パッケージソースの新しいエントリで更新します。CodeArtifact リポジトリエンドポイントを指すソースは domain_name/repo_name と呼ばれます。

login を呼び出した後のデフォルトの認可期間は12時間であり、トークンを定期的に更新するには、login を呼び出す必要があります。login コマンドを使用して作成された認可トークンの詳細については、「loginコマンドで作成されたトークン」を参照してください。

リポジトリを作成して認証を設定したら、nugetdotnet または msbuild パッケージを使用して、CLI クライアントをインストールして公開できます。詳細については、「CodeArtifact から NuGet パッケージを消費する」および「NuGet パッケージを CodeArtifact に公開する」を参照してください。

方法 3: login コマンドなしで nuget または dotnet を設定する

マニュアル設定の場合、リポジトリエンドポイントと認可)トークンを NuGet 設定ファイルに追加して、nuget または dotnet が CodeArtifact リポジトリに接続できるようにする必要があります。

CodeArtifact リポジトリに接続するには、nuget または dotnet を手動で設定します。

  1. get-repository-endpoint AWS CLI コマンド を使用して、CodeArtifact リポジトリエンドポイントを決定します。

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format nuget

    出力例:

    { "repositoryEndpoint": "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/" }
  2. get-authorization-token AWS CLI コマンドを使用してパッケージマネージャーからリポジトリに接続するには、認可トークンを取得します。

    aws codeartifact get-authorization-token --domain my_domain

    出力例:

    { "authorizationToken": "eyJ2I...viOw", "expiration": 1601616533.0 }
  3. ステップ 3 の get-repository-endpoint で返された URL に /v3/index.json を追加して、完全なリポジトリエンドポイント URL を作成します。

  4. ステップ 1 のリポジトリエンドポイントとステップ 2 の認可トークンを使用するには、nuget または dotnet を設定します。

    注記

    nuget または dotnet が CodeArtifact リポジトリに正常に接続できるようにするには、ソース URL の最後が /v3/index.json である必要があります。

    dotnet

    Linux および MacOS のユーザー: 暗号化は Windows 以外のプラットフォームではサポートされていないため、次のコマンドに --store-password-in-clear-text フラグを追加する必要があります。これにより、パスワードがプレーンテキストとして設定ファイルに保存されることに注意してください。

    dotnet nuget add source https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json --name packageSourceName --password eyJ2I...viOw --username aws
    注記

    既存のソースを更新するには、dotnet nuget update source コマンドを使用します。

    nuget
    nuget sources add -name domain_name/repo_name -Source https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json -password eyJ2I...viOw -username aws

    出力例:

    Package source with Name: domain_name/repo_name added successfully.
    注記

    デュアルスタックエンドポイントを使用するには、codeartifact.region.on.aws エンドポイントを使用してください。

CodeArtifact から NuGet パッケージを消費する

いったん CodeArtifact でNuGetを設定 したら、CodeArtifact リポジトリまたはその上流リポジトリの 1 つに保存されている NuGet パッケージを使用できます。

CodeArtifact リポジトリまたはその上流リポジトリの 1 つからパッケージバージョンを nuget または dotnet で消費するには、次のコマンドを実行し、packageName を消費したいパッケージの名前で置き換え、packageSourceName をNuGet 設定ファイル内の CodeArtifact リポジトリのソース名で置き換えます。login コマンド を使用して NuGet 設定を設定した場合、ソース名は domain_name/repo_name です。

注記

パッケージがリクエストされると、NuGet クライアントはパッケージのどのバージョンが存在するかをキャッシュします。この動作のため、目的のバージョンが入手可能になる前にリクエストされたパッケージのインストールが失敗することがあります。この問題を回避し、既存のパッケージを正常にインストールするには、nuget locals all --clear または dotnet nuget locals all --clear を使用してインストール前に NuGet キャッシュをクリアするか、またはnuget-NoCache オプションか dotnet--no-cache オプションを指定して、install コマンドおよび restore コマンド中にキャッシュしないようにします。

dotnet
dotnet add package packageName --source packageSourceName
nuget
nuget install packageName -Source packageSourceName

パッケージの特定バージョンをインストールするには

dotnet
dotnet add package packageName --version 1.0.0 --source packageSourceName
nuget
nuget install packageName -Version 1.0.0 -Source packageSourceName

詳細については、マイクロソフトドキュメントnuget.exe CLI を使用してパッケージを管理する または dotnet CLI を使用してパッケージをインストールして管理する を参照してください。

NuGet パッケージは、Nuget.org への外部接続を設定することで、CodeArtifact リポジトリを介して Nuget.org から消費できます。Nuget.org から消費されたパッケージは、CodeArtifact リポジトリに取り込まれて保存されます。外部接続の追加方法の詳細については、「CodeArtifact リポジトリをパブリックリポジトリに接続する」を参照してください。

NuGet パッケージを CodeArtifact に公開する

いったん CodeArtifact で NuGet を設定 すると、nuget または dotnet を使用して CodeArtifact リポジトリにパッケージバージョンを公開できます。

パッケージバージョンを CodeArtifact リポジトリにプッシュするには、次のコマンドを、NuGet 設定ファイル内の .nupkg ファイルと CodeArtifact リポジトリのソース名にフルパスで実行します。login コマンドを使用して NuGet 設定を設定した場合、ソース名は domain_name/repo_name です。

注記

公開するパッケージがない場合は、NuGet パッケージを作成できます。詳細については、Microsoft ドキュメントパッケージ作成ワークフロー を参照してください。

dotnet
dotnet nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
nuget
nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg -Source packageSourceName

CodeArtifact NuGet 認証情報プロバイダーの参照

CodeArtifact NuGet 認証情報プロバイダーを使用すると、CodeArtifact リポジトリを使用して NuGet を簡単に設定および認証できます。

CodeArtifact NuGet 認証情報プロバイダーのコマンド

このセクションには、CodeArtifact NuGet 認証情報プロバイダーのコマンドリストが含まれます。これらのコマンドには、次の例のように、dotnet codeartifact-creds でプレフィックスを付ける必要があります。

dotnet codeartifact-creds command
  • configure set profile profile: 提供された AWS プロファイルを使用する資格情報プロバイダーを設定します。

  • configure unset profile: 設定済みのプロファイルを削除します。

  • install: 認証情報プロバイダーを plugins フォルダにコピーします。

  • install --profile profile: 認証情報プロバイダーを plugins フォルダにコピーして、提供されている AWS プロファイルを使用するように設定します。

  • uninstall: 認証情報プロバイダーをアンインストールします。これにより、設定ファイルに対する変更は削除されません。

  • uninstall --delete-configuration: 認証情報プロバイダーをアンインストールして、設定ファイルに対するすべての変更を削除します。

CodeArtifact NuGet 認証情報プロバイダーのログ

CodeArtifact NuGet 認証情報プロバイダーのログを有効にするには、環境でログファイルを設定する必要があります。認証情報プロバイダーのログには、次のような有用なデバッグ情報が含まれています:

  • 接続の作成に使用される AWS プロファイル

  • すべての認証エラー

  • 提供されたエンドポイントがCodeArtifact URLでない場合

CodeArtifact NuGet 認証情報プロバイダーのログファイルを設定する

export AWS_CODEARTIFACT_NUGET_LOGFILE=/path/to/file

ログファイルの設定後、codeartifact-creds コマンドはログ出力をそのファイルの内容に追加します。

CodeArtifact NuGet 認証情報プロバイダーのバージョン

CodeArtifact NuGet 認証情報プロバイダーのバージョン履歴情報とダウンロードリンクを次の表に示します。

バージョン 変更 公開日 ダウンロードリンク (S3)

1.0.2 (最新)

依存関係を更新しました

06/26/2024

v1.0.2 をダウンロード

1.0.1

net5、net6、および SSO プロファイルのサポートが追加されました。

03/05/2022

v1.0.1 をダウンロード

1.0.0

CodeArtifact NuGet 認証情報プロバイダーの初期リリース

11/20/2020

v1.0.0 をダウンロード