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にないフェーズについても出力されている。
ビルドトリガーからの環境変数追加
CDKのコードで示すと次の様に RuleTargetInput
で environmentVariablesOverride
を渡してやると環境変数をビルドのトリガーから追加してやることができる。
// 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から作ってもできるのであろう。
このトリガーで次の様な 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に通知できそうなのでやってみた。
- AWS Chatbot を利用して AWS 開発者用ツールの通知を Slack で受け取る方法 | Amazon Web Services ブログ
- Slack での AWS CodeBuild、AWS CodeCommit、AWS CodeDeploy、AWS CodePipeline の通知受け取りが開始に
フルフルに出力する設定にすると次の通り通知が来る。buildspec.yamlに定義していないPhaseのものも通知される。
通知の内容をカスタマイズできないのが不便。でもまあ、最低限の通知はできる。
Codebuildの通知設定
CodeBuildやCodePipelineで通知を設定すると Cloudwatch Eventに awscodestarnotifications-rule
という名前のルールが作成される。
次のイベントパータンを受けるようになっていて、ターゲットは codestar-notifications
となっている。
{
"source": [
"aws.codebuild",
"aws.codecommit",
"aws.codedeploy",
"aws.codepipeline"
]
}
通知先としてはSNSトピックとChatbotを選択できる。
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]というのがイベントを調整してくれるようだ。