@@ -485,15 +485,22 @@ func (e EC2Client) MakeLaunchTemplateBlockDeviceMappings(blocks []schemas.BlockD
485485 }
486486
487487 enabledEBSEncrypted := block .Encrypted
488- kmsKeyArn := e . getKMSKeyArn ( block . KmsKeyId )
488+
489489 LaunchTemplateEbsBlockDevice := & ec2.LaunchTemplateEbsBlockDeviceRequest {}
490490
491491 if enabledEBSEncrypted {
492+ keyId , err := e .getKmsKeyIdByAlias (block .KmsAlias )
493+
494+ if err != nil {
495+ Logger .Fatalf ("Error: %v" , err )
496+ }
497+
498+ fmt .Printf ("KMS Key ID for alias %s: %s\n " , block .KmsAlias , keyId )
492499 LaunchTemplateEbsBlockDevice = & ec2.LaunchTemplateEbsBlockDeviceRequest {
493500 VolumeSize : aws .Int64 (bSize ),
494501 VolumeType : aws .String (bType ),
495502 Encrypted : aws .Bool (enabledEBSEncrypted ),
496- KmsKeyId : aws .String (kmsKeyArn ),
503+ KmsKeyId : aws .String (keyId ),
497504 }
498505 } else {
499506 LaunchTemplateEbsBlockDevice = & ec2.LaunchTemplateEbsBlockDeviceRequest {
@@ -1296,42 +1303,29 @@ func (e EC2Client) DescribeAMIArchitecture(amiID string) (string, error) {
12961303 return amiArchitecture , nil
12971304}
12981305
1299- func (e EC2Client ) getKMSKeyArn ( kmsKeyId string ) string {
1306+ func (e EC2Client ) getKmsKeyIdByAlias ( alias string ) ( string , error ) {
13001307
1301- kmsAlias := kmsKeyId
1302-
1303- if kmsAlias == "" {
1308+ if len (alias ) == 0 {
13041309 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" ) {
13071312 var sb strings.Builder
13081313 sb .WriteString ("alias/" )
1309- sb .WriteString (kmsAlias )
1310- kmsAlias = sb .String ()
1314+ sb .WriteString (alias )
1315+ alias = sb .String ()
13111316 }
13121317
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 )
13151321 }
13161322
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
13321327 }
13331328 }
1334- return ""
13351329 }
1336- return * result . KeyMetadata . Arn
1330+ return "" , fmt . Errorf ( "alias %s not found" , alias )
13371331}
0 commit comments