JenkinsからCloudFormation操作でエラーが出たので名前解決したらスタックできた

目的

Jenkinsで任意のGitリポジトリからCloneしてCloudFormationのYAMLファイルを取得し、シェルのジョブを実行しスタックを作成する。

Jenkinの設定

設定済みの項目は以下の通り。

  • ビルドのパラメータ化を文字列で設定
  • ソースコード管理で任意のGitリポジトリを指定、認証情報入力済み
  • AWS CLIの設定
  • シェルの実行にCloudFormationの実行シェルスクリプトを記載

こちらの方の記事がわかりやすかったです。

上記状態でジョブを実行したところエラー。

An error occurred (ValidationError) when calling the CreateStack operation: 1 validation error detected: Value 'test.cf' at 'stackName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*
Build step 'Execute shell' marked build as failure
Finished: FAILURE

一度AWSのGUIからCloudFormationでテストしてみる。

スタックの名前にドットは入力できない。ということで、名前解決して再び実行

修正前

sudo -u ec2-user aws cloudformation create-stack --stack-name raisetech-cf --template-body file://$WORKSPACE/test.cf.yml

修正後

sudo -u ec2-user aws cloudformation create-stack --stack-name raisetech-cf --template-body file://$WORKSPACE/test-cf.yml

Jenkinsのコンソール出力ログ

"StackId": "arn:aws:cloudformation:ap-northeast-1:●●●●●:stack/raisetech-cf/●●●●●●●●"
}
Finished: SUCCESS

無事スタックの作成ができました。