Amazon CodeCatalyst を AWS CLI で操作してみた

2023.01.22

いわさです。

先日、Amazon CodeCatalyst を紹介しました。

その際には全て Web ブラウザ上から操作を行っていました。
今回 AWS CLI などブラウザ以外から CodeCatalyst プロジェクト内にソースコードリポジトリを作成出来るのかを調べる機会がありました。

CodeCatalyst は通常のサービスと少し概念から違っていますが、そもそも AWS CLI で操作出来るのだろうかというところから調べました。

Amazon CodeCatalyst は本日時点でパブリックプレビューです。GA 時には仕様やドキュメントが変わっている可能性がありますのでご注意ください。

AWS CLI で CodeCatalyst 用のコマンドが提供されている

まず、AWS CLI では v1.27.21 で Amazon CodeCatalyst 用のコマンドが実装されていますので AWS CLI で何かしらの操作は出来そうです。

% aws codecatalyst help

CODECATALYST()

NAME
       codecatalyst -

DESCRIPTION
       NOTE:
          Amazon CodeCatalyst is in preview release and subject to change.

       Welcome to the Amazon CodeCatalyst API reference. This reference
       provides descriptions of operations and data types for Amazon
       CodeCatalyst. You can use the Amazon CodeCatalyst API to work with the
       following objects.

       Dev Environments and the Amazon Web Services Toolkits, by calling the
       following:

       o CreateAccessToken , which creates a personal access token (PAT) for
         the current user.
:

ただし、IAM でコントロールするタイプの AWS サービスではなく AWS Builders ID で認証を行い、認可部分は CodeCatalyst 内で独自に管理しています。
そのため通常の AWS サービスと認証方法が違います。

このあたりは公式ドキュメントでセットアップ手順が案内されています。

方法としては CLI のプロファイルでsso_sessionを定義し、aws sso loginコマンドを実行してブラウザ上で AWS Builder ID でサインインしてトークンを取得します。

プロファイルに CodeCatalyst 用の SSO セッション情報を設定しトークン取得まで行ってみます。

% cat ~/.aws/config                                                            
[default]
region=ap-northeast-1

[profile catalyst]
region=us-west-2
sso_session=catalyst-for-token

[sso-session catalyst-for-token]
sso_region=us-east-1
sso_start_url=https://view.awsapps.com/start
sso_registration_scopes=codecatalyst:read_write

:

% aws sso login --profile catalyst    
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.us-east-1.amazonaws.com/

Then enter the code:

HDHG-HXDK

aws sso login後にブラウザ上で AWS Builder ID でのサインインが要求されます。

サインイン後に、 Authorize request を許可します。

上記画面まで進むと、CLI 上でコマンドが実行出来るようになります。
試しに、スペースとプロジェクトの一覧を取得してみましょう。

% aws codecatalyst list-spaces --profile catalyst                              
{
    "items": [
        {
            "name": "hoge-iwasa",
            "regionName": "us-west-2",
            "displayName": "hoge-iwasa"
        },
        {
            "name": "hoge-iwasa2",
            "regionName": "us-west-2",
            "displayName": "hoge-iwasa2"
        }
    ]
}
% aws codecatalyst list-projects --space-name hoge-iwasa --profile catalyst    
{
    "items": [
        {
            "name": "my-first-catalyst",
            "displayName": "my-first-catalyst"
        },
        {
            "name": "hoge-asp-dotnet",
            "displayName": "hoge-asp-dotnet"
        }
    ]
}

情報を取得することが出来ました。
認証部分だけ少し違いますが、それ以外は他の AWS サービスと同じ操作感です。

AWS CLI からリポジトリの作成は出来ない、ブランチ作成であれば出来る

ただし、本日時点で AWS CLI では全ての CodeCatalyst の機能が使えるわけではありませんでした。
スペースの作成は出来ませんがプロジェクトの作成は可能です。ただしリポジトリの作成は出来ませんでした。

上記リポジトリ状態の適当なプロジェクトでcreate-source-repository-branchを実行すると権限が無いというエラーになります。

% aws codecatalyst create-source-repository-branch --space-name hoge-iwasa --project-name my-first-catalyst --source-repository-name piyo-repo --name hoge-branch --profile catalyst

An error occurred (AccessDeniedException) when calling the CreateSourceRepositoryBranch operation: You don’t have permission to perform this operation: CreateSourceRepositoryBranch

ただし、既存の CodeCatalyst でホストされているリポジトリへの新規ブランチの作成は出来ました。

% aws codecatalyst create-source-repository-branch --space-name hoge-iwasa --project-name my-first-catalyst --source-repository-name fuga-repo --name hoge-branch --head-commit-id 02380ed0955faa821a4a6365ecbb74cf5a31064d --profile catalyst
{
    "ref": "refs/heads/hoge-branch",
    "name": "hoge-branch",
    "lastUpdatedTime": "2023-01-22T05:28:54.827000+00:00",
    "headCommitId": "02380ed0955faa821a4a6365ecbb74cf5a31064d"
}

create-source-repository-branchでいくつかパターンを試しましたがどれも成功せず。create-source-repositoryコマンドが必要そうです。

さいごに

本日は Amazon CodeCatalyst を AWS CLI で操作してみました。

最初 AWS CLI での操作は出来ないだろうと思っていたのですが意外にもコマンドが用意されていました。
ただし、AWS CLI での CodeCatalyst 操作は可能ですが、全ての機能が提供されているわけではありませんでした。
本日時点では限定的な利用であれば可能だという点を覚えておきましょう。