【AWS】AWS CodeArtifact ~ 独自JARをリポジトリにあげる ~

■ はじめに

今回は、独自のJARなどを
AWS CodeArtifact のリポジトリにあげる方法について
記録しておく

目次

【1】JARをリポジトリにあげるには
【2】前提条件
 1)IAMロール
【3】手順
 Step1: CodeArtifact 認証トークンを取得
 Step2: JAR を CodeArtifact リポジトリにあげる
 Step3: POM を CodeArtifact リポジトリにあげる
 Step4: CodeArtifact リポジトリを公開する
 Step5: 動作確認

【1】JARをリポジトリにあげるには

* 基本、以下の公式ドキュメントの「curl で公開する」の通りに行えばいい。

curl で公開する
https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/maven-curl.html

上記にも
~~~~~
Maven クライアントを環境にインストールしていない、
またはインストールしたくない場合に便利です
~~~~~
とあるが、その通りで、curl コマンドを使える環境であれば完結できるので
非常に良かった。
(今更、Mavenインストールとかやりたくない、、、)

【2】前提条件

1)IAMロール

https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/packages-overview.html#package-publishing

にある通り、以下の権限が必要。

IAMロール例

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "ToPublishForMaven",
        "Effect": "Allow",
        "Action": [
           codeartifact:PublishPackageVersion,
           codeartifact:PutPackageMetadata,
           ...
        ],
        "Resource": "*"
      }
     ]
}

【3】手順

* 公式ドキュメントも参照しながら行っていく

https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/maven-curl.html

* AWS CodeArtifact に関する AWS CLI については、以下の関連記事を参照。

AWS CodeArtifact ~ AWS CLI
https://dk521123.hatenablog.com/entry/2024/01/14/005148

Step1: CodeArtifact 認証トークンを取得

CODEARTIFACT_AUTH_TOKEN=@(aws codeartifact get-authorization-token \
  --domain my_domain --domain-owner 111122223333 \
  --query authorizationToken --output text)

Step2: JAR を CodeArtifact リポジトリにあげる

# 上げたいJARがあるか確認
$ls
... my-app-1.0.jar ...

# 実行
$ curl --request PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/com/mycompany/app/my-app/1.0/my-app-1.0.jar \
  --user "aws:$CODEARTIFACT_AUTH_TOKEN" \
  --header "Content-Type: application/octet-stream" \
  --data-binary @my-app-1.0.jar

Step3: POM を CodeArtifact リポジトリにあげる

# 上げたいPOMがあるか確認
$ls
... my-app-1.0.pom ...

# 実行
$ curl --request PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/com/mycompany/app/my-app/1.0/my-app-1.0.pom \
     --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \
     --data-binary @my-app-1.0.pom

Step4: CodeArtifact リポジトリを公開する

* UpdatePackageVersionsStatus API を使用して、
 パッケージのステータスを Published に更新する。

コマンド例

aws codeartifact update-package-versions-status \
    --domain my_domain \
    --domain-owner 111122223333 \
    --repository my_repo \
    --format maven \
    --namespace com.mycompany.app \
    --package my-app \
    --versions 1.0 \
    --target-status Published

Step5: 動作確認

* get-package-version-asset を使って、JARファイルを取得してみる

コマンド例

$ aws codeartifact get-package-version-asset \
    --domain my_domain \
    --repository my_repo \
    --format maven \
    --package my-app \
    --package-version 1.0 \
    --asset 'my-app-1.0.jar' \
    output.jar

$ ls
# 手持ちのJAR「my-app-1.0.jar」と、取得してきたJAR「output.jar」
# が同じサイズであることを確認

関連記事

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 ~ SBTでCodeArtifactを使う ~
https://dk521123.hatenablog.com/entry/2024/01/20/000329
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