概要
- AWSでCodeBuildのアーティファクトストアを変更したいと思ったら「アーティファクトタイプを更新することはできません」というアラートメッセージが表示されました。
- 本記事ではアーティファクトストアの確認・変更方法について解説します。
アラートメッセージの内容
- CodeBuildプロジェクトがCodePipelineと統合されている場合、以下のアラートメッセージが表示されます(CFを使わない場合、ビルドプロジェクトからアーティファクトの設定方法があるはず)。
アーティファクトタイプを更新することはできません
このビルドプロジェクトは AWS CodePipeline を使用しているため、ソースタイプとアーティファクトタイプを CODEPIPELINE に設定する必要があります。変更するには、AWS CLI を使用して両方の値を編集する必要があります。
アーティファクトストアとは?
- アーティファクトストアとは、アーティファクトの保存場所。AWSでは、ビルドプロセスにおいて生成される成果物のことをアーティファクトと呼びます。アーティファクトはパイプラインの異なるステージで受け渡すことができます。アーティファクトストアがあることで、一元管理できたり履歴から検証できたりしますので、効率的で信頼性の高い開発プロセスを実現する上で重要な要素です。
- CFでのアーティファクトストアの設定方法は、以下の公式ドキュメントやテンプレートを参照。
- 公式ドキュメント1:AWS::CodePipeline::Pipeline ArtifactStore
- 公式ドキュメント2:CodePipeline pipeline structure reference
{
"roleArn": "An IAM ARN for a service role, such as arn:aws:iam::80398EXAMPLE:role/CodePipeline_Service_Role",
"stages": [
{
"name": "SourceStageName",
"actions": [
... See Action structure requirements in CodePipeline ...
]
},
{
"name": "NextStageName",
"actions": [
... See Action structure requirements in CodePipeline ...
]
}
],
"artifactStore": {
"type": "S3",
... ここにS3バケットの保存先を指定します ...
"location": "The name of the Amazon S3 bucket automatically generated for you the first time you create a pipeline
using the console, such as codepipeline-us-east-2-1234567890, or any Amazon S3 bucket you provision for this purpose"
},
"name": "YourPipelineName",
"version": 1
}
CodeBuildプロジェクトがCodePipelineと統合されている場合
- CodeBuildプロジェクトがCodePipelineと統合されている場合、CodeBuildのアーティファクトタイプとソースタイプをマネジメントコンソールから直接変更することはできない...。これは、CodePipelineによってソースコードが提供され、CodeBuildはCodePipelineからのアーティファクトをビルドに使用するためです。
- CFテンプレートを使用してArtifactStoreを定義しているので、マネジメントコンソールからではなくテンプレートの該当部分を変更してArtifactStoreの設定を調整する必要があるようです。マネジメントコンソールでは、ビルドプロジェクトだと上述のエラーメッセージであり、パイプラインからではArtifactStoreの設定が可能な箇所が見当たりませんでした...うーむ、CFでしか確認・変更できないんですね、もしくはAWS CLIでやるしかないのか(ここにあるよ!って情報ありましたらぜひ教えてください)。