【GitHub】GitHub CodespacesでAWS CLIをセットアップする

## はじめに

この記事は[GitHub Codespaces](https://docs.github.com/ja/codespaces/overview)を使ってAWS CLIをセットアップする内容となっています。
主な内容としては実践したときのメモを中心に書きます。（忘れやすいことなど）誤りなどがあれば書き直していく予定です。

セットアップしたら「Amazon Bedrock 生成AIアプリ開発入門」を参考にAWSのAIにハンズオンしていきたいと思います。
※発売前に献本いただきました。

[Amazon Bedrock 生成AIアプリ開発入門](https://www.sbcr.jp/product/4815626440/)


なお、AWSの認証にはIAM Identity Centerを利用します。

## GitHub Codespacesでcodespacesをセットする

[codespaces](https://github.com/codespaces)を開きます。

Blankにある`Use this template`をクリックします。

![Screenshot 2024-06-19 at 19.20.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/93f2af5d-e5bc-68e5-0a59-5775b1da1240.png)

## AWS CLIをインストールする

画面が起動したら、ターミナルで以下のコマンドを実行します。

```bash
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

インストールされているかを確認するため、バージョン情報を表示します。

```bash
aws --version
```

実行結果

```text
aws-cli/2.16.11 Python/3.11.8 Linux/6.5.0-1021-azure exe/x86_64.ubuntu.20
```

## AWSの認証情報をセットする

IAM Identity CenterのAWS access portalを開き、`Access keys`をクリックします。

![Screenshot 2024-06-19 at 19.27.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/f1041989-1093-8a5c-127e-de1485cc2b43.png)

下記のコマンドを実行してAWS CLIの設定を順番にセットしていきます。

```bash
aws configure sso
```

設定する項目

- SSO start URL
- SSO region

上記の2つを入力すると認証画面が開くので認証していきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/b252fb90-fe44-60f4-c46d-e78ae515f751.png)

認証画面の最後でAllow画面が表示されたら、`Allow`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/dca83b0d-0753-dfab-0b14-a990f4af2b0f.png)

※`Allow`クリック後の画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/48e968fa-a243-3544-7990-1ac187907949.png)

上記の画面を閉じます。

ターミナルではどのアカウントを利用するか質問されるため、利用できるアカウントを選択します。

以降はデフォルトリージョンや出力フォーマット、プロファイル名を設定します。
※プロファイル名は`default`と入力してEnterを実行します。

```text
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
CLI profile name [XXXXX]:default
```

## AWS CLIをテストする

以下のコマンドを実行してS3のバケットリストが表示されましたらAWS CLIの実行がうまくできています。※S3バケットを作成していない場合は何も表示されません。

```bash
aws s3 ls
```

## Amazon Bedrockの基盤情報を取得してみる

1つ前の記事で「Amazon Bedrockに登録されている基盤モデルの情報を取得する」方法を書いていますので試してみます。

[【AWS】AWS CLIでAmazon bedrockに登録されている基盤モデルの情報を取得する](https://qiita.com/ymd65536/items/48943bf0aef9c05f56d0)

記事によると以下のようにコマンドを実行すると良さそうです。

```bash
aws bedrock get-foundation-model --model-identifier amazon.titan-embed-text-v1
```

実行結果

```text
{
    "modelDetails": {
        "modelArn": "arn:aws:bedrock:ap-northeast-1::foundation-model/amazon.titan-embed-text-v1",
        "modelId": "amazon.titan-embed-text-v1",
        "modelName": "Titan Embeddings G1 - Text",
        "providerName": "Amazon",
        "inputModalities": [
            "TEXT"
        ],
        "outputModalities": [
            "EMBEDDING"
        ],
        "responseStreamingSupported": false,
        "customizationsSupported": [],
        "inferenceTypesSupported": [
            "ON_DEMAND"
        ],
        "modelLifecycle": {
            "status": "ACTIVE"
        }
    }
}
```

基板モデルの情報にアクセスできたのでこの環境を使って、AWS環境の生成AIにハンズオンできそうです。

もっとシンプルなコマンドとしてアカウントIDを取得する方法があります。以下のコマンドを実行するとアカウントIDが返ってくるはずです。

```bash
export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query 'Account' --output text` && echo $AWS_ACCOUNT_ID
```

## まとめ

GitHub CodespacesでAWS CLIをセットアップする方法を解説しました。
GitHub CodespacesはGitHubアカウントがあれば、すぐに起動できる使いやすさがあるので
AWS CLIと組み合わせことでAWS上の開発がしやすくなると思いました。

ちなみにGitHub CodespacesではCodespaces立ち上げ時にコンフィグを渡すことができるので
起動と同時にAWS CLIのインストールができているという状態にすることも可能です。
そういった話は別の機会にしたいと思います。

## おわり