AWS CodeCommit は、新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS CodeCommit 引き続き使用できます。詳細はこちら
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
例: AWS Lambda 関数の AWS CodeCommit トリガーを作成する
CodeCommit リポジトリのトリガーを作成して、リポジトリ内のイベントが Lambda 関数を呼び出すようにすることができます。この例では、リポジトリのクローンURLを作成するために使用される を Amazon CloudWatch ログに返す Lambda 関数を作成します。
Lambda 関数を作成する
Lambda コンソールを使用して関数を作成する場合、Lambda 関数のトリガーを作成 CodeCommitすることもできます。以下の手順には、サンプル Lambda 関数が含まれます。サンプルは、 JavaScript と Python の 2 つの言語で利用できます。この関数は、リポジトリのクローン作成URLsに使用される を CloudWatch ログに返します。
Lambda の設計図を使用して Lambda 関数を作成します。
にサインイン AWS Management Console し、 で AWS Lambda コンソールを開きますhttps://console.aws.amazon.com/lambda/
。 -
[Lambda Functions] (Lambda 関数) ページで、[Create function] (関数の作成) を選択します。(これまでに Lambda を使用したことがない場合は、[今すぐ始める] を選択します。)
-
[関数の作成] ページで、[一から作成] を選択します。関数名 で、関数の名前を指定します。例えば、
MyLambdaFunctionforCodeCommit
。 ランタイム で、関数の記述に使用する言語を選択し、関数の作成 を選択します。 -
[設定] タブで、[トリガーの追加] を選択します。
-
トリガー設定 CodeCommitで、サービスのドロップダウンリストから選択します。
-
[リポジトリ名] で、リポジトリイベントに応答して Lambda 関数を使用するトリガーを設定するリポジトリの名前を選択します。
-
トリガー名 で、トリガーの名前を入力します (例:
MyLambdaFunctionTrigger
). -
[Events (イベント)] で、Lambda 関数をトリガーするリポジトリイベントを選択します。[すべてのリポジトリイベント] を選択すると、他のイベントは選択できません。イベントのサブセットを選択する場合は、[すべてのリポジトリイベント] の選択を解除してから、使用するイベントをリストから選択します。例えば、ユーザーが AWS CodeCommit リポジトリにタグまたはブランチを作成した場合にのみトリガーを実行する場合は、すべてのリポジトリイベント を削除し、ブランチまたはタグの作成 を選択します。
-
リポジトリのすべてのブランチにトリガーを適用するには、[ブランチ] で、[すべてのブランチ] を選択します。それ以外の場合は、[特定のブランチ] を選択します。リポジトリのデフォルトブランチがデフォルトで追加されます。リストからこのブランチを保持または削除することができます。リポジトリブランチのリストから最大 10 のブランチ名を選択します。
-
(オプション) カスタムデータ に、Lambda 関数に含める情報 (例えば、デベロッパーがリポジトリでの開発について議論するために使用するIRCチャネルの名前) を入力します。このフィールドは文字列です。これは動的パラメータを渡すために使用することはできません。
[Add] (追加) をクリックします。
-
-
[設定] ページの [関数コード] で、コードエントリタイプとして [コードをインラインで編集] を選択します。[ランタイム] で、[Node.js] を選択します。サンプルの Python 関数を作成する場合は、[Python] を選択します。
-
[コードエントリタイプ] で、[コードをインラインで編集] を選択した後、hello world コードを以下の 2 つのサンプルのいずれかに置き換えます。
Node.js の場合:
import { CodeCommitClient, GetRepositoryCommand, } from "@aws-sdk/client-codecommit"; const codecommit = new CodeCommitClient({ region: "your-region" }); /** * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string }[]} event */ export const handler = async (event) => { // Log the updated references from the event const references = event.Records[0].codecommit.references.map( (reference) => reference.ref, ); console.log("References:", references); // Get the repository from the event and show its git clone URL const repository = event.Records[0].eventSourceARN.split(":")[5]; const params = { repositoryName: repository, }; try { const data = await codecommit.send(new GetRepositoryCommand(params)); console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp); return data.repositoryMetadata.cloneUrlHttp; } catch (error) { console.error("Error:", error); throw new Error( `Error getting repository metadata for repository ${repository}`, ); } };
Python の場合:
import json import boto3 codecommit = boto3.client("codecommit") def lambda_handler(event, context): # Log the updated references from the event references = { reference["ref"] for reference in event["Records"][0]["codecommit"]["references"] } print("References: " + str(references)) # Get the repository from the event and show its git clone URL repository = event["Records"][0]["eventSourceARN"].split(":")[5] try: response = codecommit.get_repository(repositoryName=repository) print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"]) return response["repositoryMetadata"]["cloneUrlHttp"] except Exception as e: print(e) print( "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format( repository ) ) raise e
-
アクセス許可タブの実行ロール で、ロールを選択してIAMコンソールで開きます。アタッチされたポリシーを編集して、トリガーを使用するリポジトリの
GetRepository
アクセス許可を追加します。
AWS CodeCommit リポジトリの Lambda 関数用のトリガーを表示する
Lambda 関数を作成したら、 AWS CodeCommitでトリガーを表示してテストできます。トリガーをテストすると、指定したリポジトリイベントに応答して関数が実行されます。
Lambda 関数のトリガーを表示およびテストするには
-
https://console.aws.amazon.com/codesuite/codecommit/home
で CodeCommit コンソールを開きます。 -
[リポジトリ] で、トリガーを表示するリポジトリを選択します。
-
リポジトリのナビゲーションペインで、[設定] を選択し、[トリガー] を選択します。
-
リポジトリのトリガーのリストを確認します。Lambda コンソールで作成したトリガーが表示されています。リストからそのトリガーを選択し、[Test trigger (トリガーのテスト)] を選択します。このオプションでは、リポジトリの最新コミット ID など、リポジトリに関するサンプルデータを使用して、関数を呼び出します。(コミット履歴が存在しない場合は、ゼロで構成されるサンプル値が生成されます。) これにより、 AWS CodeCommit と Lambda 関数間のアクセスが正しく設定されていることを確認できます。
-
トリガーの機能をさらに検証するには、コミットを作成し、トリガーを設定したリポジトリにプッシュします。Lambda コンソールで、Lambda 関数からの応答がその関数の [モニタリング] タブに表示されます。モニタリング タブから、 でログを表示する CloudWatchを選択します。 CloudWatch コンソールが新しいタブで開き、関数のイベントが表示されます。リストから、コミットをプッシュした時間に対応するログストリームを選択します。以下のようなイベントデータが表示されます。
START RequestId: 70afdc9a-EXAMPLE Version: $LATEST 2015-11-10T18:18:28.689Z 70afdc9a-EXAMPLE References: [ 'refs/heads/
main
' ] 2015-11-10T18:18:29.814Z 70afdc9a-EXAMPLE Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
END RequestId: 70afdc9a-EXAMPLE REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB