ダイジェスト確認実装
This commit is contained in:
parent
7910f33c6a
commit
ac14adab01
@ -35,6 +35,11 @@ bash retag-push-latest.sh
|
||||
- 例:`bash retag-dataimport.sh`
|
||||
- スクリプトを強制停止したい場合、`Ctrl + C`で停止できる
|
||||
|
||||
### チェックスクリプト実行方法
|
||||
|
||||
- `cd validate-image-digest`コマンドでディレクトリ変更する
|
||||
‐ `bash <スクリプト名>`で実行する
|
||||
|
||||
## フォルダ構成
|
||||
|
||||
├── build-push-scanpoint.sh -- 全ECRモジュールをアップデート、Dockerイメージにビルドし、プッシュするスクリプト
|
||||
@ -51,17 +56,21 @@ bash retag-push-latest.sh
|
||||
│ ├── build-jskult-webapp.sh -- 実消化&アルトマークWebアプリケーション脆弱性スキャンスクリプト
|
||||
| ├── build-export-dbdump.sh -- DBダンプ取得機能脆弱性スキャンスクリプト
|
||||
| └── build-transfer-medpass-data.sh -- medパス社データ転送機能脆弱性スキャンスクリプト
|
||||
└── retag-push-latest
|
||||
├── retag-dataimport.sh -- データ登録機能の再タグ本番環境にプッシュスクリプト
|
||||
├── retag-sap-data-decrypt.sh -- SAPデータ登録 SAPデータ復号化機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-check-view-security-option.sh -- Viewセキュリティオプションチェック機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-crm-datafetch.sh -- CRMデータ連携 CRMデータ取得機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-jskult-dbdump.sh -- 実消化&アルトマーク日次バッチ実行前dump取得機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-jskult-batch-daily.sh -- 実消化&アルトマーク日次バッチ機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-jskult-batch-laundering.sh -- 実消化&アルトマーク週次バッチ機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-jskult-webapp.sh -- 実消化&アルトマークWebアプリケーション再タグ本番環境にプッシュスクリプト
|
||||
├── retag-export-dbdump.sh -- DBダンプ取得機能再タグ本番環境にプッシュスクリプト
|
||||
└── retag-transfer-medpass-data.sh -- medパス社データ転送機能再タグ本番環境にプッシュスクリプト
|
||||
├── retag-push-latest
|
||||
| ├── retag-dataimport.sh -- データ登録機能の再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-sap-data-decrypt.sh -- SAPデータ登録 SAPデータ復号化機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-check-view-security-option.sh -- Viewセキュリティオプションチェック機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-crm-datafetch.sh -- CRMデータ連携 CRMデータ取得機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-jskult-dbdump.sh -- 実消化&アルトマーク日次バッチ実行前dump取得機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-jskult-batch-daily.sh -- 実消化&アルトマーク日次バッチ機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-jskult-batch-laundering.sh -- 実消化&アルトマーク週次バッチ機能再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-jskult-webapp.sh -- 実消化&アルトマークWebアプリケーション再タグ本番環境にプッシュスクリプト
|
||||
| ├── retag-export-dbdump.sh -- DBダンプ取得機能再タグ本番環境にプッシュスクリプト
|
||||
| └── retag-transfer-medpass-data.sh -- medパス社データ転送機能再タグ本番環境にプッシュスクリプト
|
||||
└── validate-image-digest
|
||||
├── validate-prd-lambda-digest.sh -- LambdaとECRのダイジェストチェックスクリプト
|
||||
├── validate-stg-latest-scanpoint-digest.sh -- ステージングlatestとscan-pointのダイジェストチェックスクリプト
|
||||
└── validate-stg-prd-ecr-digest.sh -- 本番とステージングのダイジェストチェックスクリプト
|
||||
|
||||
## 作成タイミングと作成方法
|
||||
|
||||
|
||||
@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AWSがログインしているかどうかをチェックする関数
|
||||
function check_aws_login() {
|
||||
if ! aws sts get-caller-identity &>/dev/null; then
|
||||
echo "❌ AWS credentials are not configured or are incorrect. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ログインチェックを実行
|
||||
check_aws_login
|
||||
|
||||
# プロダクションECRとLambda名のペアの配列
|
||||
resources=(
|
||||
"mbj-newdwh2021-product-sap-data-decrypt mbj-newdwh2021-product-lambda-sap-data-decrypt"
|
||||
"mbj-newdwh2021-product-check-view-security-option-ecr mbj-newdwh2021-product-lambda-check-view-security-option"
|
||||
"mbj-newdwh2021-product-transfer-medpass-data-ecr mbj-newdwh2021-product-lambda-transfer-medpass-data"
|
||||
)
|
||||
|
||||
# 各リソースをループ
|
||||
for resource_set in "${resources[@]}"; do
|
||||
# 本番環境のECRとLambda関数名を分割
|
||||
product_repo=$(echo $resource_set | awk '{print $1}')
|
||||
lambda_function=$(echo $resource_set | awk '{print $2}')
|
||||
|
||||
# 本番環境のlatestタグのダイジェストを取得
|
||||
product_digest=$(aws ecr describe-images --repository-name "$product_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null)
|
||||
|
||||
# Lambda関数のダイジェストを取得
|
||||
lambda_digest=$(aws lambda get-function --function-name "$lambda_function" --query 'Code.ImageUri' --output text 2>/dev/null | sed 's/.*@//')
|
||||
|
||||
# 両方のダイジェストが正常に取得されたかチェック
|
||||
if [[ -z "$product_digest" || -z "$lambda_digest" ]]; then
|
||||
echo "Failed to retrieve digest for $product_repo or $lambda_function."
|
||||
continue
|
||||
fi
|
||||
|
||||
# ダイジェストを比較
|
||||
if [[ "$product_digest" == "$lambda_digest" ]]; then
|
||||
echo "✅ Digests match for product ECR and Lambda in $product_repo."
|
||||
else
|
||||
echo "❌ Digests do not match for $product_repo and $lambda_function."
|
||||
echo "Product Digest: $product_digest"
|
||||
echo "Lambda Digest: $lambda_digest"
|
||||
fi
|
||||
done
|
||||
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AWSがログインしているかどうかをチェックする関数
|
||||
function check_aws_login() {
|
||||
if ! aws sts get-caller-identity &>/dev/null; then
|
||||
echo "❌ AWS credentials are not configured or are incorrect. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ログインチェックを実行
|
||||
check_aws_login
|
||||
|
||||
# ステージングリポジトリ名の配列
|
||||
staging_repositories=(
|
||||
"mbj-newdwh2021-staging-ecr"
|
||||
"mbj-newdwh2021-staging-sap-data-decrypt"
|
||||
"mbj-newdwh2021-staging-check-view-security-option-ecr"
|
||||
"mbj-newdwh2021-staging-crm-datafetch-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-dbdump-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-batch-daily-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-batch-laundering-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-webapp-ecr"
|
||||
"mbj-newdwh2021-staging-export-dbdump-ecr"
|
||||
"mbj-newdwh2021-staging-transfer-medpass-data-ecr"
|
||||
)
|
||||
|
||||
# 各ステージングリポジトリをループ
|
||||
for staging_repo in "${staging_repositories[@]}"; do
|
||||
|
||||
# ステージングのlatestタグのダイジェストを取得
|
||||
latest_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null)
|
||||
|
||||
# ステージングのscan-pointのダイジェストを取得
|
||||
scan_point_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=scan-point --query 'imageDetails[0].imageDigest' --output text 2>/dev/null)
|
||||
|
||||
# 両方のダイジェストが正常に取得されたかチェック
|
||||
if [[ -z "$latest_digest" || -z "$scan_point_digest" ]]; then
|
||||
echo "Failed to retrieve digest for 'latest' or 'scan-point' tag in $staging_repo."
|
||||
continue
|
||||
fi
|
||||
|
||||
# ダイジェストを比較
|
||||
if [[ "$latest_digest" == "$scan_point_digest" ]]; then
|
||||
echo "✅ Digests match for 'latest' and 'scan-point' tags in $staging_repo."
|
||||
else
|
||||
echo "❌ Digests do not match for 'latest' and 'scan-point' tags in $staging_repo."
|
||||
echo "Latest Tag Digest: $latest_digest"
|
||||
echo "Scan-Point Tag Digest: $scan_point_digest"
|
||||
fi
|
||||
done
|
||||
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AWSがログインしているかどうかをチェックする関数
|
||||
function check_aws_login() {
|
||||
if ! aws sts get-caller-identity &>/dev/null; then
|
||||
echo "❌ AWS credentials are not configured or are incorrect. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ログインチェックを実行
|
||||
check_aws_login
|
||||
|
||||
# リポジトリ名のペアの配列(ステージングと本番)
|
||||
repositories=(
|
||||
"mbj-newdwh2021-staging-ecr mbj-newdwh2021-product-ecr"
|
||||
"mbj-newdwh2021-staging-sap-data-decrypt mbj-newdwh2021-product-sap-data-decrypt"
|
||||
"mbj-newdwh2021-staging-check-view-security-option-ecr mbj-newdwh2021-product-check-view-security-option-ecr"
|
||||
"mbj-newdwh2021-staging-crm-datafetch-ecr mbj-newdwh2021-product-crm-datafetch-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-dbdump-ecr mbj-newdwh2021-product-jskult-dbdump-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-batch-daily-ecr mbj-newdwh2021-product-jskult-batch-daily-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-batch-laundering-ecr mbj-newdwh2021-product-jskult-batch-laundering-ecr"
|
||||
"mbj-newdwh2021-staging-jskult-webapp-ecr mbj-newdwh2021-product-jskult-webapp-ecr"
|
||||
"mbj-newdwh2021-staging-export-dbdump-ecr mbj-newdwh2021-product-export-dbdump-ecr"
|
||||
"mbj-newdwh2021-staging-transfer-medpass-data-ecr mbj-newdwh2021-product-transfer-medpass-data-ecr"
|
||||
)
|
||||
|
||||
# 各ペアのリポジトリをループ
|
||||
for repo_pair in "${repositories[@]}"; do
|
||||
# ステージングと本番のリポジトリ名を分割
|
||||
staging_repo=$(echo $repo_pair | awk '{print $1}')
|
||||
product_repo=$(echo $repo_pair | awk '{print $2}')
|
||||
|
||||
# ステージングのダイジェストを取得
|
||||
staging_digest=$(aws ecr describe-images --repository-name "$staging_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null)
|
||||
|
||||
# 本番環境のダイジェストを取得
|
||||
product_digest=$(aws ecr describe-images --repository-name "$product_repo" --image-ids imageTag=latest --query 'imageDetails[0].imageDigest' --output text 2>/dev/null)
|
||||
|
||||
# 両方のダイジェストが正常に取得されたかチェック
|
||||
if [[ -z "$staging_digest" || -z "$product_digest" ]]; then
|
||||
echo "Failed to retrieve digest for either $staging_repo or $product_repo."
|
||||
continue
|
||||
fi
|
||||
|
||||
# ダイジェストを比較
|
||||
if [[ "$staging_digest" == "$product_digest" ]]; then
|
||||
echo "✅ Digests match for $staging_repo and $product_repo."
|
||||
else
|
||||
echo "❌ Digests do not match for $staging_repo and $product_repo."
|
||||
echo "Staging Digest: $staging_digest"
|
||||
echo "Product Digest: $product_digest"
|
||||
fi
|
||||
done
|
||||
Loading…
x
Reference in New Issue
Block a user