13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CodeBuildのあれこれ

Last updated at Posted at 2020-04-29

CodePipeline, CodeBuildに関して、自分なりの疑問を実際に試してみたメモ

この記事で使っている CodePipeline, CodeBuild は codepipeline-cdkで構築した。

環境変数

CodeBuildの実行環境で定義されている環境変数について
公式ドキュメントビルド環境の環境変数 - AWS CodeBuildにも記載はされている。

ただ、実際にはドキュメント以外にも環境変数は定義されている。

独立したCodeBuildの場合

実行環境にDocker イメージaws/codebuild/standard:4.0を選択した場合の結果。
ドキュメントに記載さている環境変数の他に各種言語、ツールのバージョンの環境変数が定義されていることがわかる。

Githubから直接ソースを取ってくるのでそのリポジトリを示す CODEBUILD_SOURCE_REPO_URL が定義されている。

ANDROID_HOME=/usr/local/android-sdk-linux
ANDROID_SDK_BUILD_TOOLS=build-tools;29.0.2
ANDROID_SDK_BUILD_TOOLS_28=build-tools;28.0.3
ANDROID_SDK_EXTRAS=extras;android;m2repository extras;google;m2repository extras;google;google_play_services
ANDROID_SDK_MANAGER_SHA256=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
ANDROID_SDK_MANAGER_VER=4333796
ANDROID_SDK_PLATFORM_TOOLS=platforms;android-29
ANDROID_SDK_PLATFORM_TOOLS_28=platforms;android-28
ANT_DOWNLOAD_SHA512=c1a9694c3018e248000ff6f46d48af85f537ef3935e0d5256543c58a240084c0aff5289fd9e94cbc40d5442f3cc43592398047f2548fded40d9882be2b40750d
ANT_VERSION=1.10.6
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
AWS_DEFAULT_REGION=ap-northeast-1
AWS_EXECUTION_ENV=AWS_ECS_EC2
AWS_REGION=ap-northeast-1
CODEBUILD_AGENT_ENDPOINT=http://127.0.0.1:7831
CODEBUILD_AUTH_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
CODEBUILD_BMR_URL=https://CODEBUILD_AGENT:3000
CODEBUILD_BUILD_ARN=arn:aws:codebuild:ap-northeast-1:999999999999:build/CodePiplineLessonStandaloneCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
CODEBUILD_BUILD_ID=CodePiplineLessonStandaloneCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz # CodeBuildのの実行毎のユニークID
CODEBUILD_BUILD_IMAGE=aws/codebuild/standard:4.0
CODEBUILD_BUILD_NUMBER=1
CODEBUILD_BUILD_SUCCEEDING=1
CODEBUILD_BUILD_URL=https://ap-northeast-1.console.aws.amazon.com/codebuild/home?region=ap-northeast-1#/builds/CodePiplineLessonStandaloneCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz/view/new
CODEBUILD_CI=true
CODEBUILD_CONTAINER_NAME=default
CODEBUILD_EXECUTION_ROLE_BUILD=
CODEBUILD_FE_REPORT_ENDPOINT=https://codebuild.ap-northeast-1.amazonaws.com/
CODEBUILD_GOPATH=/codebuild/output/src999999999
CODEBUILD_INITIATOR=<User Name> # CodeBuildの実行をトリガーしたユーザ名
CODEBUILD_KMS_KEY_ID=arn:aws:kms:ap-northeast-1:999999999999:alias/aws/s3
CODEBUILD_LAST_EXIT=0
CODEBUILD_LOG_PATH=zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
CODEBUILD_PROJECT_UUID=caeae6e9-3d75-4e6e-a254-9a126137a28b
CODEBUILD_RESOLVED_SOURCE_VERSION=5a51d95717f4eeec8f5dc2b201ab1f95fa52441c # GITHUBのCOMMMITID
CODEBUILD_SOURCE_REPO_URL=https://github.com/HeRoMo/codepipeline-cdk.git
CODEBUILD_SOURCE_VERSION=master
CODEBUILD_SRC_DIR=/codebuild/output/src993565028/src/github.com/HeRoMo/codepipeline-cdk
CODEBUILD_START_TIME=1587915912569
CODEBUILD_VPC_AZ=ap-northeast-1a
CTS_LINK_LOCAL_ADDR=169.254.170.3
DEBIAN_FRONTEND=noninteractive
DIND_COMMIT=3b5fac462d21ca164b3778647420016315289034
DOCKER_BUCKET=download.docker.com
DOCKER_CHANNEL=stable
DOCKER_COMPOSE_VERSION=1.24.0
DOCKER_SHA256=c3c8833e227b61fe6ce0bc5c17f97fa547035bef4ef17cf6601f30b0f20f4ce5
DOCKER_VERSION=19.03.3
DOTNET_31_SDK_VERSION=3.1.102
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/e0e98a69-af53-46e6-a48c-3c564f39ce6f
FE_REPORT_LINK_LOCAL_ADDR=169.254.170.8
GITVERSION_VERSION=5.1.2
GOENV_DISABLE_GOPATH=1
GOLANG_12_VERSION=1.12.17
GOLANG_13_VERSION=1.13.8
GOLANG_14_VERSION=1.14.0
GOPATH=/go:/codebuild/output/src993565028
GRADLE_DOWNLOADS_SHA256=14cd15fc8cc8705bd69dcfa3c8fefb27eb7027f5de4b47a8b279218f76895a91 5.4.1\n336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043 4.10.3
GRADLE_PATH=/usr/src/gradle
GRADLE_VERSION=5.4.1
HOME=/root
HOSTNAME=ip-10-0-60-214.ap-northeast-1.compute.internal
INSTALLED_GRADLE_VERSIONS=4.10.3 5.4.1
JAVA_11_HOME=/opt/jvm/amazon-corretto-11
JAVA_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto
JAVA_HOME=/opt/jvm/amazon-corretto-11
JDK_11_HOME=/opt/jvm/amazon-corretto-11
JDK_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto
JDK_DOWNLOAD_SHA256=4cc9e65e6e3d036b18cfd5fd6c7843d48244e44a60350f7e45036f4825bd3812
JDK_DOWNLOAD_TAR=java-11-amazon-corretto-jdk.tar
JDK_HOME=/opt/jvm/amazon-corretto-11
JRE_11_HOME=/opt/jvm/amazon-corretto-11
JRE_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto/jre
JRE_HOME=/opt/jvm/amazon-corretto-11
MAVEN_DOWNLOAD_SHA512=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0
MAVEN_HOME=/opt/maven
MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.maxPerRoute=2
MAVEN_VERSION=3.6.3
NODE_10_VERSION=10.19.0
NODE_12_VERSION=12.16.1
NUGET_XMLDOC_MODE=skip
N_SRC_DIR=/usr/src/n
OLDPWD=/codebuild/readonly
PATH=/root/.phpenv/shims:/root/.phpenv/bin:/root/.goenv/shims:/root/.goenv/bin:/go/bin:/root/.phpenv/shims:/root/.phpenv/bin:/root/.pyenv/shims:/root/.pyenv/bin:/root/.rbenv/shims:/usr/local/rbenv/bin:/usr/local/rbenv/shims:/root/.dotnet/:/root/.dotnet/tools/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tools:/usr/local/android-sdk-linux/tools:/usr/local/android-sdk-linux/tools/bin:/usr/local/android-sdk-linux/platform-tools:/codebuild/user/bin
PHP_73_VERSION=7.3.13
PHP_74_VERSION=7.4.1
POWERSHELL_DOWNLOAD_SHA=E8287687C99162BF70FEFCC2E492F3B54F80BE880D86B9A0EC92C71B05C40013
POWERSHELL_DOWNLOAD_URL=https://github.com/PowerShell/PowerShell/releases/download/v6.2.1/powershell-6.2.1-linux-x64.tar.gz
POWERSHELL_VERSION=6.2.1
PWD=/codebuild/output/src993565028/src/github.com/HeRoMo/codepipeline-cdk
PYTHON_37_VERSION=3.7.6
PYTHON_38_VERSION=3.8.1
PYTHON_PIP_VERSION=19.3.1
RBENV_SRC_DIR=/usr/local/rbenv
RUBY_26_VERSION=2.6.5
RUBY_27_VERSION=2.7.0
RUBY_BUILD_SRC_DIR=/usr/local/rbenv/plugins/ruby-build
SBT_VERSION=1.2.8
SRC_DIR=/usr/src

CodePipelineから実行した場合

CodePipelineに組み込まれたCodeBuildではソースはCodePipelineからアーティファクト経由で渡されるのでCODEBUILD_SOURCE_REPO_URLは定義されていない。
また、CODEBUILD_INITIATORの値がトリガーしたCodePipelineの名前になっている。

[Container] 2020/04/26 09:28:42 Running command env | sort
ANDROID_HOME=/usr/local/android-sdk-linux
ANDROID_SDK_BUILD_TOOLS=build-tools;29.0.2
ANDROID_SDK_BUILD_TOOLS_28=build-tools;28.0.3
ANDROID_SDK_EXTRAS=extras;android;m2repository extras;google;m2repository extras;google;google_play_services
ANDROID_SDK_MANAGER_SHA256=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
ANDROID_SDK_MANAGER_VER=4333796
ANDROID_SDK_PLATFORM_TOOLS=platforms;android-29
ANDROID_SDK_PLATFORM_TOOLS_28=platforms;android-28
ANT_DOWNLOAD_SHA512=c1a9694c3018e248000ff6f46d48af85f537ef3935e0d5256543c58a240084c0aff5289fd9e94cbc40d5442f3cc43592398047f2548fded40d9882be2b40750d
ANT_VERSION=1.10.6
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
AWS_DEFAULT_REGION=ap-northeast-1
AWS_EXECUTION_ENV=AWS_ECS_EC2
AWS_REGION=ap-northeast-1
CODEBUILD_AGENT_ENDPOINT=http://127.0.0.1:7831
CODEBUILD_AUTH_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
CODEBUILD_BMR_URL=https://CODEBUILD_AGENT:3000
CODEBUILD_BUILD_ARN=arn:aws:codebuild:ap-northeast-1:999999999999:build/CodePiplineLessonCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
CODEBUILD_BUILD_ID=CodePiplineLessonCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz # CodeBuildのの実行毎のユニークID
CODEBUILD_BUILD_IMAGE=aws/codebuild/standard:4.0
CODEBUILD_BUILD_NUMBER=2
CODEBUILD_BUILD_SUCCEEDING=1
CODEBUILD_BUILD_URL=https://ap-northeast-1.console.aws.amazon.com/codebuild/home?region=ap-northeast-1#/builds/CodePiplineLessonCodeBuild:zzzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz/view/new
CODEBUILD_CI=true
CODEBUILD_CONTAINER_NAME=default
CODEBUILD_EXECUTION_ROLE_BUILD=
CODEBUILD_FE_REPORT_ENDPOINT=https://codebuild.ap-northeast-1.amazonaws.com/
CODEBUILD_GOPATH=/codebuild/output/src027937492
CODEBUILD_INITIATOR=codepipeline/CodePiplineLessonPipeline # CodeBuildの実行をトリガーしたCodePipeline名
CODEBUILD_KMS_KEY_ID=arn:aws:kms:ap-northeast-1:999999999999:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
CODEBUILD_LAST_EXIT=0
CODEBUILD_LOG_PATH=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
CODEBUILD_PROJECT_UUID=e1e0e8b5-47bd-4ffa-9cbc-afbf596a692f
CODEBUILD_RESOLVED_SOURCE_VERSION=5a51d95717f4eeec8f5dc2b201ab1f95fa52441c # GITHUBのCOMMMITID
CODEBUILD_SOURCE_VERSION=arn:aws:s3:::codepiplinelessoncodepip-pipelineartifactsbucket2-xxxxxxxxxxxx/CodePiplineLessonPip/Artifact_S/uTIFICC.zip
CODEBUILD_SRC_DIR=/codebuild/output/src999999999/src
CODEBUILD_START_TIME=1587915912569
CODEBUILD_VPC_AZ=ap-northeast-1a
CTS_LINK_LOCAL_ADDR=169.254.170.3
DEBIAN_FRONTEND=noninteractive
DIND_COMMIT=3b5fac462d21ca164b3778647420016315289034
DOCKER_BUCKET=download.docker.com
DOCKER_CHANNEL=stable
DOCKER_COMPOSE_VERSION=1.24.0
DOCKER_SHA256=c3c8833e227b61fe6ce0bc5c17f97fa547035bef4ef17cf6601f30b0f20f4ce5
DOCKER_VERSION=19.03.3
DOTNET_31_SDK_VERSION=3.1.102
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/7cc1646f-f02f-4461-8b0f-a60ded412bef
FE_REPORT_LINK_LOCAL_ADDR=169.254.170.8
GITVERSION_VERSION=5.1.2
GOENV_DISABLE_GOPATH=1
GOLANG_12_VERSION=1.12.17
GOLANG_13_VERSION=1.13.8
GOLANG_14_VERSION=1.14.0
GOPATH=/go:/codebuild/output/src027937492
GRADLE_DOWNLOADS_SHA256=14cd15fc8cc8705bd69dcfa3c8fefb27eb7027f5de4b47a8b279218f76895a91 5.4.1\n336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043 4.10.3
GRADLE_PATH=/usr/src/gradle
GRADLE_VERSION=5.4.1
HOME=/root
HOSTNAME=ip-10-0-84-104.ap-northeast-1.compute.internal
INSTALLED_GRADLE_VERSIONS=4.10.3 5.4.1
JAVA_11_HOME=/opt/jvm/amazon-corretto-11
JAVA_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto
JAVA_HOME=/opt/jvm/amazon-corretto-11
JDK_11_HOME=/opt/jvm/amazon-corretto-11
JDK_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto
JDK_DOWNLOAD_SHA256=4cc9e65e6e3d036b18cfd5fd6c7843d48244e44a60350f7e45036f4825bd3812
JDK_DOWNLOAD_TAR=java-11-amazon-corretto-jdk.tar
JDK_HOME=/opt/jvm/amazon-corretto-11
JRE_11_HOME=/opt/jvm/amazon-corretto-11
JRE_8_HOME=/usr/lib/jvm/java-1.8.0-amazon-corretto/jre
JRE_HOME=/opt/jvm/amazon-corretto-11
MAVEN_DOWNLOAD_SHA512=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0
MAVEN_HOME=/opt/maven
MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.maxPerRoute=2
MAVEN_VERSION=3.6.3
NODE_10_VERSION=10.19.0
NODE_12_VERSION=12.16.1
NUGET_XMLDOC_MODE=skip
N_SRC_DIR=/usr/src/n
OLDPWD=/codebuild/readonly
PATH=/root/.phpenv/shims:/root/.phpenv/bin:/root/.goenv/shims:/root/.goenv/bin:/go/bin:/root/.phpenv/shims:/root/.phpenv/bin:/root/.pyenv/shims:/root/.pyenv/bin:/root/.rbenv/shims:/usr/local/rbenv/bin:/usr/local/rbenv/shims:/root/.dotnet/:/root/.dotnet/tools/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tools:/usr/local/android-sdk-linux/tools:/usr/local/android-sdk-linux/tools/bin:/usr/local/android-sdk-linux/platform-tools:/codebuild/user/bin
PHP_73_VERSION=7.3.13
PHP_74_VERSION=7.4.1
POWERSHELL_DOWNLOAD_SHA=E8287687C99162BF70FEFCC2E492F3B54F80BE880D86B9A0EC92C71B05C40013
POWERSHELL_DOWNLOAD_URL=https://github.com/PowerShell/PowerShell/releases/download/v6.2.1/powershell-6.2.1-linux-x64.tar.gz
POWERSHELL_VERSION=6.2.1
PWD=/codebuild/output/src027937492/src
PYTHON_37_VERSION=3.7.6
PYTHON_38_VERSION=3.8.1
PYTHON_PIP_VERSION=19.3.1
RBENV_SRC_DIR=/usr/local/rbenv
RUBY_26_VERSION=2.6.5
RUBY_27_VERSION=2.7.0
RUBY_BUILD_SRC_DIR=/usr/local/rbenv/plugins/ruby-build
SBT_VERSION=1.2.8
SRC_DIR=/usr/src

この場合も基本的にCodeBuild内で設定されている環境変数は変わらない。

NatGatewayの利用

CodeBuildからインターネット側にアクセスする際にIPアドレスを固定できるのか?
接続先のサーバがIP接続元のIPアドレスで制限をかけている場合には必要となると思う。

VPC内に作り、プライベートなサブネットに入れる場合、デフォルトルートがNatGatewayになっていれば、そこからインターネット側に出ていくようだ。

ビルド結果のフェーズ詳細について

フェーズ詳細には buildspec.yaml で定義してなくても CodeBuildの仕様として定義されているフェーズがすべて出力される

例えば、次のように buildフェーズのみ定義したbuildspec.yamlを実行する。

version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - env | sort
      - curl 'https://api.ipify.org?format=json'

その結果は次の様になり、buildspec.yamlにないフェーズについても出力されている。

image.png

ビルドトリガーからの環境変数追加

CDKのコードで示すと次の様に RuleTargetInputenvironmentVariablesOverride を渡してやると環境変数をビルドのトリガーから追加してやることができる。

cdk
    // add Scheduled Event Trigger
    const codeBuildTarget = new CodeBuildProject(project, {
      event: RuleTargetInput.fromObject({
        environmentVariablesOverride: [
          { name: 'ADDITIONAL_ENV_VARIABLE', value: 'from Event' }, // 追加する環境変数
        ],
      }),
    });
    new Rule(this, 'ScheduleRule', {
      schedule: Schedule.cron({
        hour: '15',
        minute: '57',
      }),
      targets: [codeBuildTarget],
    });

上記のコードの結果、次の様なCloudwatch Eventが追加される。おそらくこの通りWebConsoleから作ってもできるのであろう。

image.png

このトリガーで次の様な buildspec.yaml を実行する。

buildspec.yaml
version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - env | sort

結果は次の通り。トリガーから追加した環境変数が出力されている。

[Container] 2020/04/29 15:59:05 Running command env | sort 
ADDITIONAL_ENV_VARIABLE=from Event   # <= 追加されている
ANDROID_HOME=/usr/local/android-sdk-linux
ANDROID_SDK_BUILD_TOOLS=build-tools;29.0.2
ANDROID_SDK_BUILD_TOOLS_28=build-tools;28.0.3

試してはないが、AWS CodeBuild でのビルドの実行 - AWS CodeBuildで示されているパラメータは同様に上書きや設定が可能だと思われる。

CloudWatch Events に通知される CodeBuildのイベント

CodeBuild Build State Change イベント

CodeBuild Build State Change イベントを例えばLambdaで受けると次のイベントオブエジェクトがハンドラーの引数として渡される。

{
    "version": "0",
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "detail-type": "CodeBuild Build State Change",
    "source": "aws.codebuild",
    "account": "xxxxxxxxxxxxxx",
    "time": "2020-10-24T01:11:35Z",
    "region": "ap-northeast-1",
    "resources": [
        "arn:aws:codebuild:ap-northeast-1:xxxxxxxxxxxxxx:build/codebuild-project-name:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    ],
    "detail": {
        "build-status": "IN_PROGRESS",
        "project-name": "codebuild-project-name",
        "build-id": "arn:aws:codebuild:ap-northeast-1:xxxxxxxxxxxx:build/codebuild-project-name:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "additional-information": {
            "cache": {
                "type": "NO_CACHE"
            },
            "timeout-in-minutes": 60,
            "build-complete": false,
            "initiator": "morishita",
            "build-start-time": "Oct 24, 2020 1:11:35 AM",
            "source": {
                "report-build-status": true,
                "buildspec": "buildspec.yml",
                "location": "https://github.com/owner/reppo.git",
                "git-clone-depth": 1,
                "type": "GITHUB"
            },
            "source-version": "master",
            "artifact": {
                "location": "arn:aws:s3:::bucket-name/path/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/artifact-name"
            },
            "environment": {
                "image": "aws/codebuild/standard:4.0",
                "privileged-mode": true,
                "image-pull-credentials-type": "CODEBUILD",
                "compute-type": "BUILD_GENERAL1_LARGE",
                "type": "LINUX_CONTAINER",
                "environment-variables": [
                    {
                        "name": "SOME_ENV",
                        "type": "PLAINTEXT",
                        "value": "SOME VALUE"
                    }
                ]
            },
            "logs": {
                "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logEvent:group=null;stream=null"
            },
            "queued-timeout-in-minutes": 480
        },
        "current-phase": "SUBMITTED",
        "current-phase-context": "[]",
        "version": "1"
    }
}

Cloudwatch イベントでこのイベントを受けるルール設定をするときにCodeBuildプロジェクトを特定する方法ではCodeBuild プロジェクトの名前を指定する(detail.project-name で設定)する。
resourcesという項目があり、 CodeBuildプロジェクトのARNを指定するのかと思いきや、どうやら個々のビルド実行に付与されるARNっぽい。
しかし、実行のたびに毎回変わるARNをどうやって設定するのがわからない。ビルド実行の固有値の部分を*にしてみたがダメだった。

AWS Chatbotとの連携

つぎの記事を読んで、Slackに通知できそうなのでやってみた。

フルフルに出力する設定にすると次の通り通知が来る。buildspec.yamlに定義していないPhaseのものも通知される。

image.png
image.png

通知の内容をカスタマイズできないのが不便。でもまあ、最低限の通知はできる。

Codebuildの通知設定

CodeBuildやCodePipelineで通知を設定すると Cloudwatch Eventに awscodestarnotifications-ruleという名前のルールが作成される。
次のイベントパータンを受けるようになっていて、ターゲットは codestar-notifications となっている。

{
  "source": [
    "aws.codebuild",
    "aws.codecommit",
    "aws.codedeploy",
    "aws.codepipeline"
  ]
}

通知先としてはSNSトピックとChatbotを選択できる。

image.png

Chatbotを選択しても、結局SNSトピックが自動で作られるので、どちらも結局同じかと思ったが、
直接SNSトピックを通知先に選択して、そのトピックをChatbotに関連付けてもSlackに通知は届かなかった。
Cloudwatch LogsにChatbotのログを出力して確認すると、Event received is not supported (see https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html ):というログが出ている。

一方、Chatbotを指定した場合には [CloudWatch Event]->[Notifications]->[SNS]->[Chatbot]という連携になるようだ。
CloudWatch Eventを受ける [Notifications]というのがイベントを調整してくれるようだ。

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?