@@ -485,15 +485,22 @@ func (e EC2Client) MakeLaunchTemplateBlockDeviceMappings(blocks []schemas.BlockD
485
485
}
486
486
487
487
enabledEBSEncrypted := block .Encrypted
488
- kmsKeyArn := e .getKMSKeyArn (block .KmsKeyId )
488
+ keyId , err := e .getKmsKeyIdByAlias (block .KmsAlias )
489
+ if err != nil {
490
+ Logger .Fatalf ("Error: %v" , err )
491
+ }
492
+
493
+ fmt .Printf ("KMS Key ID for alias %s: %s\n " , block .KmsAlias , keyId )
489
494
LaunchTemplateEbsBlockDevice := & ec2.LaunchTemplateEbsBlockDeviceRequest {}
490
495
496
+ Logger .Debugf ("Encrypted KMS Arn : %s" , keyId )
497
+
491
498
if enabledEBSEncrypted {
492
499
LaunchTemplateEbsBlockDevice = & ec2.LaunchTemplateEbsBlockDeviceRequest {
493
500
VolumeSize : aws .Int64 (bSize ),
494
501
VolumeType : aws .String (bType ),
495
502
Encrypted : aws .Bool (enabledEBSEncrypted ),
496
- KmsKeyId : aws .String (kmsKeyArn ),
503
+ KmsKeyId : aws .String (keyId ),
497
504
}
498
505
} else {
499
506
LaunchTemplateEbsBlockDevice = & ec2.LaunchTemplateEbsBlockDeviceRequest {
@@ -1296,42 +1303,29 @@ func (e EC2Client) DescribeAMIArchitecture(amiID string) (string, error) {
1296
1303
return amiArchitecture , nil
1297
1304
}
1298
1305
1299
- func (e EC2Client ) getKMSKeyArn (kmsKeyId string ) string {
1300
-
1301
- kmsAlias := kmsKeyId
1306
+ func (e EC2Client ) getKmsKeyIdByAlias (alias string ) (string , error ) {
1302
1307
1303
- if kmsAlias == "" {
1308
+ if len ( alias ) == 0 {
1304
1309
Logger .Info ("Volume Encrypt default KMS Key(aws/ebs)" )
1305
- kmsAlias = "alias/aws/ebs"
1306
- } else if ! strings .HasPrefix (kmsAlias , "alias" ) {
1310
+ alias = "alias/aws/ebs"
1311
+ } else if ! strings .HasPrefix (alias , "alias" ) {
1307
1312
var sb strings.Builder
1308
1313
sb .WriteString ("alias/" )
1309
- sb .WriteString (kmsAlias )
1310
- kmsAlias = sb .String ()
1314
+ sb .WriteString (alias )
1315
+ alias = sb .String ()
1311
1316
}
1312
1317
1313
- input := & kms.DescribeKeyInput {
1314
- KeyId : aws .String (kmsAlias ),
1318
+ result , err := e .KMSClient .ListAliases (& kms.ListAliasesInput {})
1319
+ if err != nil {
1320
+ return "" , fmt .Errorf ("failed to list aliases, %v" , err )
1315
1321
}
1316
1322
1317
- result , err := e .KMSClient .DescribeKey (input )
1318
- if err != nil {
1319
- var aerr awserr.Error
1320
- if errors .As (err , & aerr ) {
1321
- switch aerr .Code () {
1322
- case kms .ErrCodeNotFoundException :
1323
- Logger .Println (kms .ErrCodeNotFoundException , aerr .Error ())
1324
- case kms .ErrCodeInvalidArnException :
1325
- Logger .Println (kms .ErrCodeInvalidArnException , aerr .Error ())
1326
- case kms .ErrCodeDependencyTimeoutException :
1327
- Logger .Println (kms .ErrCodeDependencyTimeoutException , aerr .Error ())
1328
- case kms .ErrCodeInternalException :
1329
- Logger .Println (kms .ErrCodeInternalException , aerr .Error ())
1330
- default :
1331
- Logger .Println (aerr .Error ())
1323
+ for _ , aliasEntry := range result .Aliases {
1324
+ if aliasEntry .AliasName != nil && * aliasEntry .AliasName == alias {
1325
+ if aliasEntry .TargetKeyId != nil {
1326
+ return * aliasEntry .TargetKeyId , nil
1332
1327
}
1333
1328
}
1334
- return ""
1335
1329
}
1336
- return * result . KeyMetadata . Arn
1330
+ return "" , fmt . Errorf ( "alias %s not found" , alias )
1337
1331
}
0 commit comments