0
0

CodeArtifactからnpm install してみた

Posted at

はじめに

npm installしてみた
以上!ではなく

CodeArtifactがすでにあるのに、開発環境構築すぐにはできない感じになっていた
つまり、CodeArtifactがデプロイにだけ使われていて、勿体ないと思ったので
CodeArtifactから独自ライブラリを引っ張ってきてnpm install する方法を整理してみた。

さっそくやってみた

前提条件

  • CodeArtifactはすでにある
    いつか構築も整理したい
  • CodeArtifactに独自のライブラリを登録してある
  • package.jsonには、その独自ライブラリをバージョン指定で記載済み
    (ローカルのfile://指定とかじゃない)

の状態を認識しつつ、誰でも出来る(AWSへの理解がない人でも可能で、手順も減らす)
を目指して整理してみた。

方針

  • git(CodeCommit)からクローンしてポチッでインストール完了
  • npm バージョンアップとかも別途できるようには、したい
  • CLIのバージョンとかはあんまり気にしたくない

3つを守るために、スクリプトを軽く作って、分けてを実施することにした

整理してやってみた

必要なこと

  • AWS CLIへのログイン(SSO管理の場合のみ必要)
  • CodeArtifact用にnpm変更
  • npmでのインストール
  • npmを元に戻す
    をやる必要がある

CLIへのログインだけはちょっと別枠とすることにして
その他三つを実施することにした
方針を守るには、この3つを一つのスクリプトに書くと少し面倒なので、分けることにする

Gitからクローンしてポチッっとスクリプト

intall.psを作成。

npm install 

出来た。と思ったら、以前npm書き変えたままだった

真面目に考えると、大枠として、下記状態にできればポチっとスクリプトができる。

# npm情報の書き変え用スクリプトの実行
& ./Set-Codeartifact-Config.ps

npm install 

# npm情報の書き変え用スクリプトの実行
& ./Delete-Codeartifact-Config.ps

CodeArtifact用にnpm変更スクリプト

Set-Codeartifact-Config.ps
と名付けてたスクリプト
トークンとURLを取得して接続先にセットするだけ


# Authorizationトークンを取得しつつ
function Get-AuthorizationToken {
    $authToken = & aws codeartifact get-authorization-token --domain {hoge} --domain-owner {hoge-owner} --query authorizationToken  --profile {hoge} --output text
    # シンプルに空ならエラー
    if ([string]::IsNullOrEmpty($authToken)) {
    Write-Host "ERROR"
     return ""
    } else
    {
     return $authToken.Trim()}
}

# レポジトリのエンドポイントを取得トークンを取得しつつ
function Get-RepositoryEndpoint {
    $repoEndpoint = & aws codeartifact get-repository-endpoint --profile {hoge} --domain {hoge} --domain-owner {hoge-owner} --repository {hoge-lib} --format npm --output text
    # シンプルに空ならエラー
    if ([string]::IsNullOrEmpty($repoEndpoint)) {
    Write-Error "ERROR"
     return ""
    } else
    {
     return $repoEndpoint.Trim()
    }
}


$CODEARTIFACT_AUTH_TOKEN = Get-AuthorizationToken

if ([string]::IsNullOrEmpty($CODEARTIFACT_AUTH_TOKEN)) {
    Write-Error "Error: Return value is empty"
    exit 1
}
$ARTIFACT_URL = Get-RepositoryEndpoint

if ([string]::IsNullOrEmpty($ARTIFACT_URL)) {
    Write-Error "Error: Return value is empty"
    exit 1
}
# npmの設定を更新する
npm config set registry=$ARTIFACT_URL
# URLから出せると思うが、サボった
npm config set //{domain}-{hoge-owner}.d.codeartifact.{region}.amazonaws.com/npm/{hoge-lib}/:_authToken=$CODEARTIFACT_AUTH_TOKEN

なぜ、

aws codeartifact login 

を使わないか。

バージョンによってできる出来ないがあると今後も面倒なことが起きそうだと思ったから
(開発なんだから、バージョン揃えてるだろ!はごもっとも)

これにてこのスクリプトが完成

CodeArtifact用にnpm設定削除スクリプト

Delete-Codeartifact-Config.ps
と名付けてたスクリプト
本当に削除するだけ


# CodeArtifact接続用のnpmを元に戻すだけのスクリプト
npm config delete registry
npm config delete //{domain}-{hoge-owner}.d.codeartifact.{region}.amazonaws.com/npm/{hoge-lib}/:_authToken

こっちもスクリプトが完成

完成

intall.psをPowershellから動かしてみたらなんとか動いた

これで

  1. Gitからクローンした人
    intall.psを使うだけ
  2. ライブラリいろいろ変えたい人
    Set-Codeartifact-Config.psとDelete-Codeartifact-Config.psを使っていい感じにする

が完成した。

Delete-Codeartifact-Config.psはまぁその開発だけのうちは、何も動かさなくてもいい気がするけど一応

以上、AWSのサイト見つつ、Poweshellの書き方をChatGptに教えてもらいつつ作ってみた
エラーでWrite-Errorにしてみたけど
ただ動かすだけならWrite-Hostで何が起きたか日本語で書いてあげた方分かりやすい気がする

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0