■ はじめに
https://dk521123.hatenablog.com/entry/2023/12/26/012343
https://dk521123.hatenablog.com/entry/2024/01/11/233802
https://dk521123.hatenablog.com/entry/2024/01/14/005148
の続き。 AWS CodeArtifact の公式ドキュメントでは、 MavenやGradleに関しての記述はある(※)が、 「"SBT"でCodeArtifactを使う」に関してはない。 そこで、今回は、「SBTでCodeArtifactを使う」の 構築手順をメモってみた。
※ MavenでCodeArtifactを使う
https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/using-maven.html
※ Gradle で CodeArtifact を使用する
https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/maven-gradle.html
目次
【0】前提条件 1)ベースとなる知識 【1】Step1: ~/.sbt/repositories の追加 【2】Step2: ~/.sbt/.credentials の追加 【3】Step3: ~/.sbt/.credentials の指定 1)やり方1:環境変数「SBT_CREDENTIALS」 2)やり方2:system property「sbt.boot.credentials」 3)やり方3:build.sbt への追加 4)やり方4:~/.sbt/1.0/credentials.sbt の追加 【4】Step4: 環境変数「CODEARTIFACT_AUTH_TOKEN」への設定 【5】Step5: 動作確認 【6】トラブルシュート方法
【0】前提条件
* 当たり前だが以下があること + Java(今回は、JDK11) + SBT(今回は、SBT v1.9.8)
1)ベースとなる知識
* 基本、以下で行っていることとあまり変わらない
SBT ~ リポジトリ先を変更・追加するには ~
https://dk521123.hatenablog.com/entry/2024/01/12/191252
【1】Step1: ~/.sbt/repositories の追加
リポジトリ先をCodeArtifactに変更するために ~/.sbt/repositories を追加する。
1)構文
* AWS CLI get-repository-endpoint については、 以下の関連記事を参照のこと
AWS CodeArtifact ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2024/01/14/005148
~/.sbt/repositories
[repositories] 【任意の文字列】: 【リポジトリ先(AWS CLI get-repository-endpoint で取得)】
2)サンプル
~/.sbt/repositories
[repositories] demo-maven-test-repo: https://test-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/test-repo/
コマンド例
aws codeartifact get-repository-endpoint \ --domain test-domain --repository demo-maven-test-repo \ --format maven --region us-west-2 \ --query repositoryEndpoint --output text
【2】Step2: ~/.sbt/.credentials の追加
リポジトリ先の認証情報を格納するために ~/.sbt/.credentials を追加する。
1)構文
* AWS CLI get-authorization-token については、 以下の関連記事を参照のこと
AWS CodeArtifact ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2024/01/14/005148
~/.sbt/.credentials
realm= host=【ドメイン名】-【アカウントID】.d.codeartifact.【Region】.amazon.com user=aws password=【aws codeartifact get-authorization-token で取得したToken】
補足1:realm
* ユーザー、アプリケーションなどのオブジェクトを管理するための領域 * ユーザーは、realm に所属し、ログインすることになる => ★Point★ 今回は、何も指定せず。(逆に指定したら、ちゃんと動かなくなる) cf. realm (レルム)= 領域, 範囲
補足2:user=aws
* ユーザ名「aws」は、以下の公式ドキュメントを参照
https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/maven-mvn.html#fetching-dependencies
<servers> <server> <id>codeartifact</id> <username>aws</username> <- ★ここ <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> </server> </servers>
補足3:password
* パスワードは、以下の公式ドキュメントから 環境変数「CODEARTIFACT_AUTH_TOKEN」は、 AWS CLI「aws codeartifact get-authorization-token」から取得
# <password>${env.CODEARTIFACT_AUTH_TOKEN}</password> # 値は、AWS CLI「aws codeartifact get-authorization-token」から取得 export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
2)サンプル
~/.sbt/.credentials
realm= host=demo_domein-12345657890.d.codeartifact.us-west-2.amazon.com user=aws password=f32rfqdajopfaufoijoipjg....
【3】Step3: ~/.sbt/.credentials の指定
* この認証情報ファイルのパスを指定するための設定も追加。 * やり方は、以下の公式ドキュメントに記載されている
1)やり方1:環境変数「SBT_CREDENTIALS」
export SBT_CREDENTIALS="$HOME/.sbt/.credentials"
2)やり方2:system property「sbt.boot.credentials」
-Dsbt.boot.credentials="$HOME/.sbt/.credentials"
3)やり方3:build.sbt への追加
* build.sbt への追加 => 以下の公式ドキュメントも参考になる
https://www.scala-sbt.org/1.x/docs/Publishing.html#Credentials
build.sbt
credentials += Credentials(Path.userHome / ".sbt" / ".credentials") # 【2】【3】含めて書き方もできるらしい # # credentials += Credentials( # "Demo for CodeArtifact with SBT", # "demo_domein-12345657890.d.codeartifact.us-west-2.amazon.com", # "aws", # "f32rfqdajopfaufoijoipjg...." # )
4)やり方4:~/.sbt/1.0/credentials.sbt の追加
~/.sbt/1.0/credentials.sbt
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
【4】Step4: 環境変数「CODEARTIFACT_AUTH_TOKEN」への設定
* CODEARTIFACT_AUTH_TOKEN 環境変数にアクセスTokenを設定する
https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/tokens-authentication.html#env-var
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
【5】Step5: 動作確認
* sbt コマンドを打って確認 * 環境がなかったら、以下の関連記事の「4)sbt 実行」を参照のこと
https://dk521123.hatenablog.com/entry/2024/01/12/191252
コマンド例
sbt run
【6】トラブルシュート方法
エラーが発生した場合、CloudTrailのイベント履歴から参照するといい。
例:エラー「Unauthorized: htt.../xxx.pom (xxxxx)」
CloudTrailのイベント履歴の「ReadFromRepository」APIの実行状況から 確認することができる
関連記事
AWS CodeArtifact ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/12/26/012343
AWS CodeArtifact ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/01/11/233802
AWS CodeArtifact ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2024/01/14/005148
AWS CodeArtifact ~ 独自JARをリポジトリにあげる ~
https://dk521123.hatenablog.com/entry/2024/01/25/161926
SBT ~ 基本編 / build.sbt ~
https://dk521123.hatenablog.com/entry/2023/01/27/000000
SBT ~ 基本編 / sbtコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/26/000000
SBT ~ リポジトリ先を変更・追加するには ~
https://dk521123.hatenablog.com/entry/2024/01/12/191252