こんちゃ。

CodeCommitってなに?

AWSのGitサービス。今のところus-east-1でしか使えない。

Triggersってなに?

いわゆるWebHooks
前調べたときは使えなかった機能だけど3月くらいに使えるようになったらしい
https://aws.amazon.com/jp/blogs/aws/new-notifications-for-aws-codecommit/

やったこと

  • Triggerの受け口のLambdaつくる
  • 権限周りコネコネする
  • CodeCommitでRepositoryたてる
  • CodeCommitでTrigger設定する
  • CloudWatchLogs見る

Triggerの受け口のLambdaつくる

WebHooks動くのか見たいだけなのでとりあえず受け取ったイベント引数を返すだけの存在する価値のないリソースを作成。中身が見れればなんでもいい。

def lambda_handler(event, context):
    print event
    return event

権限周りコネコネする

aws cliで以下のコマンドをポチー
${Hoge}は、適宜書き換えてくださいね

aws lambda add-permission 
--region us-east-1 
--function-name ${LambdaFunctionName} 
--statement-id 1 
--principal codecommit.amazonaws.com 
--action lambda:InvokeFunction 
--source-arn arn:aws:codecommit:us-east-1:${Account}:${Repository} 
--source-account ${Account} 
--profile default

LambdaのRoleはこんな感じに

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1462604551000",
            "Effect": "Allow",
            "Action": [
                "codecommit:*"
            ],
            "Resource": [
                "arn:aws:codecommit:us-east-1:${Account}:${Repository}"
            ]
        }
    ]
}

ぶっちゃけこの辺よくわかってない

CodeCommitでRepositoryたてる

Repository名入力して適当につくってください。

CodeCommitでTrigger設定する

作成したRepositoryの左メニューから Triggers -> Create Trigger をポチッ

3dbc0712-552e-3ab1-4722-159a75a66144

  • Trigger name: トリガーの名前。お好きに。
  • Events: 引っ掛けたいイベントを指定。以下から選ぶ。
    — 全イベント
    — 既存ブランチにプッシュ
    — 新規ブランチ・タグの作成
    — ブランチ・タグの削除
  • Branch names: 反応させたいブランチを指定。devブランチだけ、みたいな使い方するんちゃうんすかね
  • Send to: 今回は AWS Lambda を選択。
  • Lambda function: さっき作ったLambdaFunctionが出てきてるはずなので、それを選ぶ
  • Custom data: 他のTriggerと区別するための識別子やらを任意で入れられるよってやつ。空でヨシ。

疎通確認したいので Test Trigger をポチー。

CloudWatchLogs見る

結果wwwwwwwwwwwww

START RequestId: 5831de43-1424-11e6-a926-b725522dd65d Version: $LATEST
{
  'Records': [
    {
      'eventId': '2b769d5c-5b57-4356-xxxx-33561479a38a',
      'eventVersion': '1.0',
      'eventTime': '2016-05-07T07:21:41.177+0000',
      'eventTriggerName': 'SampleNotification',
      'eventPartNumber': 1,
      'codecommit': {
        'references': [
          {
            'commit': '0000000000000000000000000000000000000000',
            'ref': 'refs/heads/TestReference'
          }
        ]
      },
      'eventName': 'TriggerEventTest',
      'eventTriggerConfigId': '2b769d5c-5b57-4356-8d15-33561479a38a',
      'eventSourceARN': 'arn:aws:codecommit:us-east-1:XXXXXXXXXXXXXX:oreno-repository',
      'userIdentityARN': 'arn:aws:iam::XXXXXXXXXXXXXX:root',
      'eventSource': 'aws:codecommit',
      'awsRegion': 'us-east-1',
      'eventTotalParts': 1
    }
  ]
}
END RequestId: 5831de43-1424-11e6-a926-b725522dd65d
REPORT RequestId: 5831de43-1424-11e6-a926-b725522dd65d  Duration: 0.57 ms   Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 43 MB

ちゃんと取れてる

ここまでできればあとは夢広がりますよね。では。

元記事はこちら

CodeCommitにTriggersが追加されてた?ので触ってみた【cloudpack大阪ブログ】