AWSお勉強 CodeCommit

2023-10-28

サボり始めるとやる気が起きなくなる久々のパクリ11発目!

パクリ元

内容

EC2だけは使っててそれ以外は無視していたが、ちょっと機会があったので備忘録程度にやってみる。ある程度の知識がある場合はマニュアルがいいんだけど、そうでない場合は人がやったのをパクるのが吸収しやすい。が、そのケースでは環境等が変わっている場合も多い。特にAWS系はしょっちゅう画面とか変わっているイメージなので、現時点で動くように調整する。

CodeCommitにソース等を登録(★今回ココ) → CodeBuildでコンテナ等作成してECRに登録 → ECSで起動 の流れ。

CodeCommit

CodeCommitTestというリポジトリを作成。

ローカル環境整備

CodeCommitはGitサーバみたいなものだからローカルで開発したソース等をPushすることになる。そのローカル環境をwsl(ubuntu)で作成する。まずはsshキー作成。

~$ pwd
/home/ubuntu
~$ mkdir .ssh
~$ cd .ssh
~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):     ←Enter
Enter passphrase (empty for no passphrase):     ←Enter
Enter same passphrase again:     ←Enter
Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub
The key fingerprint is:
・・・
The key's randomart image is:
+---[RSA 3072]----+
・・・
+----[SHA256]-----+

出来上がった公開鍵(id_rsa.pub)をIAMに登録することで、ローカル環境が持つ秘密鍵(id_rsa)とともにそのIAMが使用できるようになる。登録するのは以下 id_rsa.pub の中身。

~/.ssh$ cat id_rsa.pub
ssh-rsa ・・・・・・・・・・・・・・・・・・・・・・・・

IAM

CodeCommitを使用できるユーザーを作成。ダッシュボードからユーザー画面を表示。

「ユーザーの作成」ボタンを押して「AWSCodeCommitFullAccess」というユーザー名にして「次へ」ボタン押下。

「ポリシーを直接アタッチする」を選択して、許可ポリシー箇所で「AWSCodeCommitFullAccess」ポリシーを検索、チェックボックスをオンにして「次へ」ボタン押下。確認画面にて「ユーザーの作成」ボタンを押下する。

出来上がった「AWSCodeCommitFullAccess」ユーザーを確認してクリックする。

真ん中らへんの「セキュリティ認証情報」タブを選択して下の方にスクロール、「AWS CodeCommit の SSH 公開キー」エリアの「SSH 公開キーのアップロード」ボタンを押下。先ほどローカルで取得したid_rsa.pub の中身をテキストエリアに貼り付けて「SSH 公開キーのアップロード」ボタンを押下すると、SSH キーID(赤部分)が取得できる。

ローカル環境にConfig作成

取得したSSH キーID(APK*****************)を使用して、SSH Configを作成する。

~/.ssh/config
Host git-codecommit..amazonaws.com
User APK*****************
IdentityFile ~/.ssh/id_rsa

テスト接続。You have successfully と出れば安心。

~/.ssh$ ssh -T APK*****************@git-codecommit.ap-northeast-1.amazonaws.com
The authenticity of host 'git-codecommit.ap-northeast-1.amazonaws.com (52.119.220.10)' can't be established.
RSA key fingerprint is SHA256:・・・・・・
Are you sure you want to continue connecting (yes/no/[fingerprint])?   ←yes+Enter
Warning: Permanently added 'git-codecommit.ap-northeast-1.amazonaws.com,52.119.220.10' (RSA) to the list of known hosts.
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.ap-northeast-1.amazonaws.com closed by remote host.

ソース等作成

初めに作成したCodeCommitTestリポジトリをローカルにCloneする。

~/.ssh$ cd ..
~$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommitTest
Cloning into 'CodeCommitTest'...
warning: You appear to have cloned an empty repository.
~$ ls
CodeCommitTest
~$ cd CodeCommitTest/
~/CodeCommitTest$ mkdir src

Nginxコンテナを使用してページを表示するだけをやってみるための3つのファイルを作成。

~/CodeCommitTest/Dockerfile
FROM 'nginx:latest'
COPY ./src/index.html /usr/share/nginx/html/index.html
RUN service nginx start
~/CodeCommitTest/src/index.html
<h1>Hello 周回遅れのパクリ学習</h1>
~/CodeCommitTest/buildspec.yml
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - echo docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG      
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
      - printf '[{"name":"<container-definition>","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > artifacts.json

artifacts:
  files: artifacts.json

長くなったのでとりあえずCommit、Pushして終わる。

~/CodeCommitTest$ git add *
~/CodeCommitTest$ git commit -m "first commit"
[master (root-commit) a852aaf] first commit
 3 files changed, 27 insertions(+)
 create mode 100644 Dockerfile
 create mode 100644 buildspec.yml
 create mode 100644 src/index.html
~/CodeCommitTest$ git push
Warning: Permanently added the RSA host key for IP address '52.119.218.16' to the list of known hosts.
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 803 bytes | 803.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Validating objects: 100%
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommitTest
 * [new branch]      master -> master

CodeCommit確認

AWS側に上がってきているのを確認する。

雑感

イメージとかまとめるのが大変。

AWS,CodeCommit,Docker

Posted by ak