🙄
Jenkinsのパイプラインの中でAWSCLIを実行する方法とは?
はじめに
Jenkinsのパイプラインの中でAWSCLIを実行する方法について記載したいと思います。
現在、私が参画している現場で使用している方法になります。
環境
- CentOS 7.9
OSバージョン
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$
- Jenkinsのバージョン
- 使用するAWSのIAMユーザーは、検証用のため
AdministratorAccess
を付与
対応方法
AWSCLIのインストール
- Jenkinsが導入されているサーバにAWSCLIをインストールする。
コマンド
sudo yum install awscli
バージョン確認
# aws --version
aws-cli/1.23.2 Python/2.7.5 Linux/3.10.0-1160.95.1.el7.x86_64 botocore/1.23.46
#
AWSCLIの初期設定
- jenkinsユーザーにスイッチする。
コマンド
su - jenkins
※Jenkinsユーザーは、Jenkinsインストール時にサーバ内に作成されます。
-
~/.aws/credentials
を作成し、IAMユーザーの情報を記載する。
記載内容
[default]
aws_access_key_id = <AWSのアクセスキー>
aws_secret_access_key = <AWSのシークレットキー>
パイプラインにて確認
- Jenkinsのジョブに以下のようなPipeline Scriptを仕込む
pipeline {
agent {
label "master"
}
options {
skipDefaultCheckout()
disableConcurrentBuilds()
timestamps()
}
stages {
stage("AWS接続確認"){
steps {
echo "# AWS接続確認 開始 #"
script {
sh "aws s3 ls"
}
echo "# AWS接続確認 終了 #"
}
}
}
post {
always {
echo "# AWS接続チェック 終了 #"
}
success {
echo "# AWS接続チェック 正常終了 #"
}
failure {
echo "# AWS接続チェック 異常終了 #"
}
}
}
- ジョブを実行すると、以下のような出力結果になる。
ユーザーjenkinsが実行
Resume disabled by user, switching to high-performance, low-durability mode.
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/test
[Pipeline] {
[Pipeline] timestamps
[Pipeline] {
[Pipeline] stage
[Pipeline] { (AWS接続確認)
[Pipeline] echo
17:54:17 # AWS接続確認 開始 #
[Pipeline] script
[Pipeline] {
[Pipeline] sh
17:54:17 + aws s3 ls
17:54:22 2020-05-18 07:23:54 infra-backet01
17:54:22 2022-11-03 18:31:36 terraform-backend1103
17:54:22 2022-12-17 16:14:31 testoffice.work
17:54:22 2022-12-17 16:17:38 testoffice.work-log
[Pipeline] }
[Pipeline] // script
[Pipeline] echo
17:54:22 # AWS接続確認 終了 #
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
17:54:23 # AWS接続チェック 終了 #
[Pipeline] echo
17:54:23 # AWS接続チェック 正常終了 #
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Discussion