はい、今回は既存のCodeCommitのレポジトリに対して、サーバー上からgit cloneできるまでの手順をまとめます!
今回は指定のレポジトリにしか操作ができないユーザーポリシーを作成しますね~
わからないことがあると、公式をできるだけ参照しながら進めていきましょう。
https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/getting-started-cc.html
Table of Contents
伝えたいこと
今回の目標は以下
- AWSのポリシーでCodeCommit内の操作を必要最低限にできるユーザー作成。
- サーバーで鍵を作成して、CodeCommitに対してssh接続
- git clone
上記の内容を一通りできるようになっていきましょう~
AWSのポリシーを適切に設定できるようにもならないといけないですしね。
IAMユーザー作成とポリシー
IAMユーザーの作成
今回は特にgit操作以外する予定はないので、サクッと作成します。
そしてアクセス権限の設定ですが、ここは特に何も必要ないのでタグを設定(ここも必要に応じて作成)して
ユーザー作成!
ここで共有されるシークレットキーなどは大切に保管してくださいね。(CSVのダウンロード)
必要なポリシー設定
ユーザーができたのでそれにアタッチするポリシーを作成します。
こんかいのユーザーは対象のレポジトリに対してGit操作をするだけですので、以下のような内容になります。
JSON形式で書いてみますね。
一番下のユーザーIDとレポジトリ名を変更いただけたらOK
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codecommit:DeleteRepository"
],
"Resource": "*",
"Effect": "Deny"
},
{
"Action": [
"codecommit:List*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"codecommit:*ApprovalRule*"
],
"Resource": "*",
"Effect": "Deny"
},
{
"Action": [
"codecommit:*"
],
"Resource": "arn:aws:codecommit:ap-northeast-1:対象ユーザーのアカウントID:対象のレポジトリ名",
"Effect": "Allow"
}
]
}
Code language: JSON / JSON with Comments (json)
これでポリシーを先ほど作成したユーザーにアタッチするとOKです!!!!
では次にサーバー側の設定も行っていきましょう。
サーバーの設定
鍵の作成
まずはSSHの公開鍵と秘密鍵を以下コマンドを使って作成します。
ssh-keygen
コマンドの意味は詳しい使い方は以下を参照。
https://choppydays.com/ssh-keygen-heteml/
基本的にEnterでOKかと
そしたら以下ディレクトリ内にファイルができます。
cd ~/.ssh/
Code language: JavaScript (javascript)
ファイルは以下
- 公開鍵=○○.pub
- 秘密鍵=○○
秘密鍵と公開鍵を間違えないようにしましょう。
ここで作成した公開鍵をAWSのユーザーのところにコピペします。
IAM→ユーザー→対象ユーザー→認証情報→SSHパブリックキーのアップロード
これでOKですね。
configの設定
では今度はサーバー側の.ssh/config
ファイルを編集していきます。
もしファイルがない場合はtouch config
コマンドで作成しましょう。
そして編集する内容は以下です。
Host git-codecommit.*.amazonaws.com
User APKgewofefefefj
IdentityFile ~/.ssh/id_rsa
Code language: JavaScript (javascript)
- Host そのまま
- User SSHキーIDを入力
- IdentityFile 秘密鍵の場所を指定
これでOKです!
設定ファイルのアクセス権限を設定する必要があるので以下コマンドを叩く。
chmod 600 .ssh/config
これで完了!
CodeCommitにアクセス
コンソールからCodeCommitにアクセスして、レポジトリを選択します。
そこから右上のURLのクローンから「SSHのクローン」を選択しましょう。
そしたらサーバーに戻り、以下コマンド!
git clone さっきコピーしたURL
Code language: PHP (php)
これで完璧!
まとめ
なんか毎回手順を忘れちゃうんだなー
人間の記憶力は参考にならない。