ダイジェスト確認実装

This commit is contained in:
Nik Afiq 2024-10-31 11:59:51 +09:00
parent 7910f33c6a
commit ac14adab01
4 changed files with 172 additions and 11 deletions

View File

@ -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 -- 本番とステージングのダイジェストチェックスクリプト
## 作成タイミングと作成方法

View File

@ -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

View File

@ -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

View File

@ -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