リポジトリへのクロスアカウントアクセス: AccountB のリポジトリユーザーのアクション - AWS CodeCommit

リポジトリへのクロスアカウントアクセス: AccountB のリポジトリユーザーのアクション

AccountA でリポジトリにアクセスするには、AccountB グループのユーザーがリポジトリアクセスのためにローカルコンピューターを設定する必要があります。次のセクションでは、手順と例を示します。

ステップ 1: AccountB ユーザーが AccountA のリポジトリにアクセスできるように AWS CLI と Git を設定する

別の Amazon Web Services アカウントのリポジトリにアクセスするには、SSH キーまたは Git 認証情報を使用できません。AccountB のユーザーは、git-remote-codecommit を使用するか (推奨)、AccountA で共有 CodeCommit リポジトリにアクセスするための認証情報ヘルパーを使用して、自身のコンピューターを設定する必要があります。ただし、AccountB のリポジトリにアクセスするときには、SSH キーまたは Git 認証情報を続けて使用できます。

git-remote-codecommit を使用してアクセスを設定する手順は、次のとおりです。git-remote-codecommit をまだインストールしていない場合は、Python パッケージインデックスウェブサイトの git-remote-codecommit からダウンロードします。

クロスアカウントアクセス用に AWS CLI および Git を設定するには

  1. ローカルコンピューターに AWS CLI をインストールします。詳細については、「AWS CLI のインストール」で使用しているオペレーティングシステムの説明を参照してください。

  2. ローカルコンピュータに Git をインストールします。Git をインストールするには、Git ダウンロードGit for Windows などのウェブサイトが推奨されます。

    注記

    CodeCommit は Git バージョン 1.7.9 以降をサポートしています。Git バージョン 2.28 は、初期コミットのブランチ名の設定をサポートしています。最新バージョンの Git を使用することをお勧めします。Git は、定期的に更新されている、発展中のプラットフォームです。機能の変更により、CodeCommit での動作が影響を受ける場合があります。特定のバージョンの Git と CodeCommit で問題が発生した場合は、 の情報を確認してくださいトラブルシューティング

  3. ターミナルまたはコマンドラインから、リポジトリをクローンするディレクトリの場所で、git config --local user.name コマンドおよび git config --local user.email コマンドを実行して、リポジトリに作成するコミットのユーザー名および E メールを設定します。例:

    git config --local user.name "Saanvi Sarkar" git config --local user.email saanvi_sarkar@example.com

    これらのコマンドは何も返しませんが、指定した E メールおよびユーザー名は AccountA のリポジトリで作成したコミットに関連付けられます。

  4. AccountB でリソースに接続する際に使用するデフォルトのプロファイルを設定するには、aws configure --profile コマンドを実行します。プロンプトが表示されたら、IAM ユーザーのアクセスキーとシークレットキーを提供します。

    注記

    AWS CLI のインストールが完了している場合は、このステップをスキップできます。

    例えば、次のコマンドを実行して、米国東部 (オハイオ) (us-east-2) の AccountB の AWS リソースにアクセスするために使用するデフォルトの AWS CLI プロファイルを作成します。

    aws configure

    プロンプトが表示されたら、次の情報を入力します。

    AWS Access Key ID [None]: Your-IAM-User-Access-Key AWS Secret Access Key ID [None]: Your-IAM-User-Secret-Access-Key Default region name ID [None]: us-east-2 Default output format [None]: json
  5. aws configure --profile コマンドを実行して、AccountA でリポジトリに接続するときに使用するプロファイルを設定します。プロンプトが表示されたら、IAM ユーザーのアクセスキーとシークレットキーを提供します。例えば、次のコマンドを実行して、米国東部 (オハイオ) (us-east-2) の AccountA のリポジトリにアクセスするために使用する MyCrossAccountAccessProfile という名前の AWS CLI プロファイルを作成します。

    aws configure --profile MyCrossAccountAccessProfile

    プロンプトが表示されたら、次の情報を入力します。

    AWS Access Key ID [None]: Your-IAM-User-Access-Key AWS Secret Access Key ID [None]: Your-IAM-User-Secret-Access-Key Default region name ID [None]: us-east-2 Default output format [None]: json
  6. プレーンテキストエディタで config ファイル (AWS CLI 設定ファイルとも呼ばれる) を開きます。オペレーティングシステムによっては、このファイルは Linux、macOS、Unix の ~/.aws/config、あるいは Windows の drive:\Users\USERNAME\.aws\config にある場合があります。

  7. ファイルで、AccountB のリポジトリへのアクセス用に設定したデフォルトプロファイルに対応するエントリを見つけます。これは次のように表示されます。

    [default] region = us-east-2 output = json

    プロファイル設定に account に追加します。AccountB の AWS アカウント ID を指定します。例:

    [default] account = 888888888888 region = us-east-2 output = json
  8. 作成した MyCrossAccountAccessProfile に対応するエントリをこのファイルで検索します。これは次のように表示されます。

    [profile MyCrossAccountAccessProfile] region = us-east-2 output = json

    プロファイル設定に accountrole_arn、および source_profile を追加します。AccountA の Amazon Web Services アカウント ID (他のアカウントのリポジトリにアクセスするために引き受ける AccountA のロールの ARN)、および AccountB のデフォルトの AWS CLI プロファイルの名前を入力します。例:

    [profile MyCrossAccountAccessProfile] region = us-east-2 account = 111122223333 role_arn = arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole source_profile = default output = json

    変更を保存し、プレーンテキストエディタを閉じます。

ステップ 2: AccountA の CodeCommit リポジトリのクローンを作成してアクセスする

git clonegit push、および git pull を実行して、CodeCommit リポジトリのクロスアカウントをクローン、プッシュ、プルします。AWS マネジメントコンソールへのサインイン、ロールの切り替え、CodeCommit コンソールを使用した他のアカウントのリポジトリの操作もできます。

注記

IAM ロールの設定に応じて、CodeCommit のデフォルトページでリポジトリを表示できる場合もあります。リポジトリを表示できない場合は、CodeCommit コンソールの共有リポジトリの [コード] ページへの URL リンクを E メールで送信するようにリポジトリ管理者に申請してください。この URL は次のようになります。

https://console.aws.amazon.com/codecommit/home?region=us-east-2#/repository/MySharedDemoRepo/browse/HEAD/--/

クロスアカウントリポジトリをローカルコンピューターにクローンするには

  1. コマンドラインまたはターミナルで、リポジトリをクローンするディレクトリから、HTTPS (GRC) クローン URL で git clone コマンドを実行します。例:

    git clone codecommit://MyCrossAccountAccessProfile@MySharedDemoRepo

    他の指定がない限り、リポジトリはこのリポジトリと同じ名前のサブディレクトリにクローンされます。

  2. クローンしたリポジトリのディレクトリを変更し、ファイルに変更を加えるか、またはファイルを追加します。たとえば、NewFile.txt という名前のファイルを追加できます。

  3. ローカルリポジトリの変更履歴にファイルを追加して変更をコミットし、そのファイルを CodeCommit リポジトリにプッシュします。例:

    git add NewFile.txt git commit -m "Added a file to test cross-account access to this repository" git push

    詳細については、「Git および の開始方法AWS CodeCommit」を参照してください。

ファイルを追加したら、CodeCommit コンソールに移動してコミットの表示、他のユーザーによるリポジトリの変更の確認、プルリクエストへの参加などを行います。

CodeCommit コンソールでクロスアカウントリポジトリにアクセスするには

  1. AccountA のリポジトリにクロスアカウントアクセスを付与された IAM ユーザーとして AccountB (888888888888) で AWS Management Console にサインインします。

  2. ナビゲーションバーでユーザー名を選択し、ドロップダウンリストから [ロールの切り替え] を選択します。

    注記

    このオプションを初めて選択する場合には、このページの情報を確認し、[ロールの切り替え] を再度選択します。

  3. [ロールの切り替え] ページで次を実行します。

    • [アカウント] で AccountA のアカウント ID を入力します (例: 111122223333)。

    • [ロール] で AccountA のリポジトリにアクセスするために引き受けるロール名を入力します (例: MyCrossAccountRepositoryContributorRole)。

    • [表示名] にこのロールのフレンドリ名を入力します。この名前は、ロールを引き受けたときにコンソールに表示されます。また、このコンソールで次回にロールを切り替えるときに引き受けるロールの一覧にも表示されます。

    • (オプション) [] で表示名のカラーラベルを選択します。

    • [Switch Role] を選択します。

    詳細については、「ロールの切り替え (AWS Management Console)」を参照してください。

  4. https://console.aws.amazon.com/codesuite/codecommit/home で CodeCommit コンソールを開きます。

    引き受けたロールに AccountA のリポジトリの名前を閲覧するアクセス権限がある場合には、リポジトリの一覧、およびそのステータスを閲覧するアクセス権限がないことを通知するエラーメッセージが表示されます。これは想定される動作です。リストから共有リポジトリの名前を選択します。

    引き受けたロールに AccountA のリポジトリの名前を閲覧するアクセス権限がない場合には、エラーメッセージおよびリポジトリがない空のリストが表示されます。リポジトリに URL リンクを貼り付けるか、コンソールリンクを変更し、/list を共有リポジトリの名前に変更します (/MySharedDemoRepo など)。

  5. [コード] で、ローカルコンピュータから追加したファイルの名前を検索します。その名前を選択してファイルでコードを表示し、残りのリポジトリを表示してこの機能の使用を開始します。

    詳細については、「AWS CodeCommit の使用を開始する 」を参照してください。