コンテンツにスキップ

AWS CodeArtifact - プライベートパッケージ

AikidoのAutoFixが、AWS CodeArtifact上でホストされているプライベートパッケージのレジストリに接続できるようにすることができます。

Aikidoは、AWSアカウント内に新しいロールを作成するCloudFormationテンプレートを提供しています。このロールの権限は、CodeArtifactへの読み取り専用アクセスに限定されています。これは、AikidoのAWSアカウントと、お客様のアカウント内に新しく作成されたロールとの間で信頼関係を結ぶことで機能します。

ロールの作成後、Aikidoが開始するために必要なのは特定のARNのみで、アクセスキーやシークレットは不要です。

Aikido UIで、AutoFix > Settings > Connect Registryに移動し、

モーダル内の手順に従ってください。

  • IAMロールとポリシーを作成する
  • CloudFormationの出力からロールARNを貼り付ける
  • AWSコンソールに表示されているCodeArtifactリポジトリのドメインを入力する(例: mydomain)
  • CodeArtifactドメインがホストされているAWSリージョンを選択する(例: us-east-1)

Aikido AutoFixは、処理中にCODEARTIFACT_AUTH_TOKEN環境変数を設定します。この環境変数は、パッケージマネージャーがCodeArtifactレジストリで認証するために使用されます。必要となるレジストリ固有の設定については、以下を参照してください。

プライベートパッケージをインストールするリポジトリ(またはAikidoの設定)には、基本的な.npmrc設定が存在している必要があります。プレースホルダーをご自身の情報に置き換えた上で、以下の情報を含めてください。

@pied-piper:registry=https://mydomain-123456789.d.codeartifact.us-east-1.amazonaws.com/npm/pied-piper
//mydomain-123456789.d.codeartifact.us-east-1.amazonaws.com/npm/pied-piper/:_authToken=${CODEARTIFACT_AUTH_TOKEN}

AutoFixの実行中、${CODEARTIFACT_AUTH_TOKEN}は実際の認証トークンに置き換えられます。

PoetryにCodeArtifactの認証トークンを使用するよう指示するには、追加の環境変数を設定する必要があります。POETRY_HTTP_BASIC_[SOURCE]_USERNAMEawsに設定してください。[SOURCE]は、pyproject.toml内のソース名(大文字)に置き換えてください。例:

[[tool.poetry.source]]
name = "artifact"
url = "https://repo-1234567890.d.codeartifact.eu-west-1.amazonaws.com/pypi/poetry/simple/"

この例でのソース名はartifactです。したがって、POETRY_HTTP_BASIC_ARTIFACT_USERNAME環境変数をawsに設定する必要があります。

POETRY_HTTP_BASIC_[SOURCE]_USERNAMEawsに設定することで、AutoFixは自動的にPOETRY_HTTP_BASIC_[SOURCE]_PASSWORDを設定し、PoetryがAWS CodeArtifactリポジトリにアクセスできるようになります。

UVにCodeArtifactの認証トークンを使用するよう指示するには、追加の環境変数を設定する必要があります。UV_INDEX_[INDEX]_USERNAMEawsに設定してください。[INDEX]は、pyproject.toml内のインデックス名(大文字)に置き換えてください。例:

[[tool.uv.index]]
name = "artifact"
url = "https://repo-1234567890.d.codeartifact.eu-west-1.amazonaws.com/pypi/uv-example/simple/"

この例でのインデックス名はartifactです。したがって、UV_INDEX_ARTIFACT_USERNAME環境変数をawsに設定する必要があります。

UV_INDEX_[INDEX]_USERNAMEawsに設定することで、AutoFixは自動的にUV_INDEX_[INDEX]_PASSWORDを設定し、UVがAWS CodeArtifactリポジトリにアクセスできるようになります。

依存関係のAutoFixを作成する際、進捗モーダルに以下のメッセージが表示されるはずです。

  • 3つ(またはそれ以上)の環境変数を設定しました
  • AWS CodeArtifactの認証トークンが正常に設定されました

AWSの認証情報が誤っている、または権限が不足している場合は、「Failed to authenticate to AWS CodeArtifact」という警告メッセージが表示されます。

AWS CodeArtifactに関するメッセージが表示されない場合、設定が完了していないことを意味します。

AWSアクセスキーを使用する場合(非推奨)

Section titled “AWSアクセスキーを使用する場合(非推奨)”

AWS CodeArtifactとの接続を有効にするには、次の4つの環境変数を指定する必要があります。

  • AWS_CODE_ARTIFACT_ACCESS_KEY: AWSCodeArtifactReadOnlyAccess権限を持つユーザーまたはロールのアクセスキー
  • AWS_CODE_ARTIFACT_SECRET_KEY: AWSCodeArtifactReadOnlyAccess権限を持つユーザーまたはロールのシークレットキー
  • AWS_CODE_ARTIFACT_DOMAIN: AWSコンソールに表示されているCodeArtifactリポジトリのドメイン(例: mydomain)
  • AWS_CODE_ARTIFACT_REGION: CodeArtifactドメインがホストされているAWSリージョン(例: us-east-1)

これら4つの環境変数が設定されると、Aikido AutoFixは処理中にCODEARTIFACT_AUTH_TOKEN環境変数を設定します。この環境変数は、パッケージマネージャーがCodeArtifactレジストリで認証するために使用されます。必要となるレジストリ固有の設定については、以下を参照してください。

これらの環境変数は、Autofix > Settings > Connect Registry > 環境変数を設定するで設定できます。