in internal/resources/providers/awslib/kms/provider.go [43:95]
func (p *Provider) DescribeSymmetricKeys(ctx context.Context) ([]awslib.AwsResource, error) {
symmetricKeys, err := awslib.MultiRegionFetch(ctx, p.clients, func(ctx context.Context, region string, c Client) ([]awslib.AwsResource, error) {
var kmsKeys []types.KeyListEntry
input := &kmsClient.ListKeysInput{}
for {
output, err := c.ListKeys(ctx, input)
if err != nil {
return nil, err
}
kmsKeys = append(kmsKeys, output.Keys...)
if !output.Truncated {
break
}
input.Marker = output.NextMarker
}
var result []awslib.AwsResource
for _, keyEntry := range kmsKeys {
keyInfo, err := c.DescribeKey(ctx, &kmsClient.DescribeKeyInput{
KeyId: keyEntry.KeyId,
})
if err != nil {
p.log.Error(err.Error())
continue
}
if keyInfo.KeyMetadata.KeySpec != types.KeySpecSymmetricDefault {
continue
}
if keyInfo.KeyMetadata.KeyManager != types.KeyManagerTypeCustomer {
continue
}
rotationStatus, err := c.GetKeyRotationStatus(ctx, &kmsClient.GetKeyRotationStatusInput{
KeyId: keyEntry.KeyId,
})
if err != nil {
p.log.Error(err.Error())
continue
}
result = append(result, KmsInfo{
KeyMetadata: *keyInfo.KeyMetadata,
KeyRotationEnabled: rotationStatus.KeyRotationEnabled,
region: region,
})
}
return result, nil
})
return lo.Flatten(symmetricKeys), err
}