EC2インスタンスからCodeCommitのリポジトリをCloneする方法のメモです。
通常のCodeCommitのアクセスにはIAMユーザで認証情報を入力する必要があります。
ただし、CloudFormationなどでCodeCommitを利用する際にユーザ名やパスワードを利用するのは大変です。
そこで、IAMユーザの情報を使わずにCodeCommit上のリポジトリからcloneやpushなどの操作を行う方法についてメモします。
1. IAMユーザの情報を使わずにCodeCommitを操作する
対応としては、「AWS CLIの認証情報ヘルパー」というものを使用することでEC2インスタンスに割り当てられているRoleを使ってアクセスすることができます。
2. 今回の構成
図にするとこんな感じになります。

3. Roleへ割り当てるPolicyの作成
EC2に割り当てているRoleへCodeCommitへのアクセス許可するポリシーを割り当てます。
例としては以下のようなCloudFormation Templateになります。
Ec2InstanceBaseRole
はEC2に割り当てられているRoleにしてください。
CodeCommitPolicy:
Type: 'AWS::IAM::Policy'
Properties:
PolicyName: "aws-infra-codecommit-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- 'codecommit:GitPull'
- 'codecommit:GitPush'
Resource: !Sub "arn:aws:codecommit:ap-northeast-1:${AWS::AccountId}:<リポジトリ名>"
Roles:
- !Ref Ec2InstanceBaseRole
4. AWS CLIの認証情報ヘルパーを設定
以下のコマンドを実行して指定したCodeCommit上のリポジトリが認証を聞かれることなくCLoneができることを確認します。
CloudFormationのUserDataを使う場合には、HOMEの環境変数
を指定する必要がありますので注意してください。
export HOME=/root
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/<リポジトリ名>
5. まとめ
想定した通りにEC2インスタンスからCodeCommitのリポジトリをCloneすることができました。 これをCloudFormtionと組み合わせることで効率的なセットアップが行えますね。
AWSを効率的に学習する方法
私がAWSを学習するために使った学習材料は「Udemy」だけです。
まずは座学を行ってAWSプラクティショナー もしくは ソリューションアーキテクト試験を取得することを目標にしました。
具体的にはUdemyで以下の2つの商材を購入して学習しました。AWS公式が提供している模擬試験も受けていません。
Udemyは世界最大級のオンライン学習プラットフォームで、世界中の学びたい人と教えたい人をオンラインでつなぐサービスです。 Udemyは米国Udemy,Inc.が運営するプラットフォームで日本ではベネッセが事業パートナーとして協業をしています。 C2C(consumer to consumer)により生まれる豊富で多彩な講座により個人の学習ニーズに応じた学びをみつけることができます。
これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)
今回は以上となります。
コメント