AWSGitIaC

AWS EC2からCodeCommitのリポジトリをCloneする

AWS

EC2インスタンスからCodeCommitのリポジトリをCloneする方法のメモです。

通常のCodeCommitのアクセスにはIAMユーザで認証情報を入力する必要があります。

ただし、CloudFormationなどでCodeCommitを利用する際にユーザ名やパスワードを利用するのは大変です。

そこで、IAMユーザの情報を使わずにCodeCommit上のリポジトリからcloneやpushなどの操作を行う方法についてメモします。

1. IAMユーザの情報を使わずにCodeCommitを操作する

対応としては、「AWS CLIの認証情報ヘルパー」というものを使用することでEC2インスタンスに割り当てられているRoleを使ってアクセスすることができます。

IAM credentials for CodeCommit: Git credentials, SSH keys, and AWS access keys - AWS Identity and Access Management
Use Git credentials (static user name and password) or SSH keys (public and private key pairs) in AWS Identity and Access Management (IAM) for authentication wi...

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を学習するために実施した方法は以下の通りです。
 ①最初に書籍(ハンズオンができる)を購入、座学でAWSの基礎を学習
 ②AWS資格試験を取得ための学習

※私の場合は①と②を合わせて2か月でソリューションアーキテクトを取得できました。

①AWS基礎学習

最初に購入した書籍は「Amazon Web Services 基礎からのネットワーク&サーバー構築」です。

Amazon Web Services 基礎からのネットワーク&サーバー構築

この本では、AWSの基本サービスを利用したハンズオンを通じて、AWSの基礎を学習することができます。

また、タイトル通りAWSのネットワークやインフラに関しても網羅しているため、もともとインフラ系の技術者ではない人たちにとっても分かりやすい内容だと思います。

とりあえずAWS上にサーバーを設定して開発を行うための準備までするには最良の一冊です。

Amazon Web Services 基礎からのネットワーク&サーバー構築

②AWS資格取得

AWSの基礎をある程度学習することができたら、次はAWS資格を取得しましょう。まずはAWSソリューションアーキテクトを目指しましょう。

資格勉強のための問題集をひたすら解きながら、AWSの知識を積み重ねて習得していきましょう!

苦行ではありますがこの問題集を3周ほどすればAWS用語や構成に関しても習得できているはずです。

AWS認定ソリューションアーキテクト-アソシエイト問題集

今回は以上となります。

コメント