はじめに
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から動かしてみたらなんとか動いた
これで
- Gitからクローンした人
intall.psを使うだけ - ライブラリいろいろ変えたい人
Set-Codeartifact-Config.psとDelete-Codeartifact-Config.psを使っていい感じにする
が完成した。
Delete-Codeartifact-Config.psはまぁその開発だけのうちは、何も動かさなくてもいい気がするけど一応
以上、AWSのサイト見つつ、Poweshellの書き方をChatGptに教えてもらいつつ作ってみた
エラーでWrite-Errorにしてみたけど
ただ動かすだけならWrite-Hostで何が起きたか日本語で書いてあげた方分かりやすい気がする