func loadUserDataFromSecretsManager()

in projects/aws/bottlerocket-bootstrap/pkg/utils/userdata.go [110:138]


func loadUserDataFromSecretsManager(awsSecretsManagerUserData *AWSSecretsManagerUserData, secretManagerService service.SecretsManagerService) (*UserData, error) {
	compressedCloudConfigBinary := []byte{}
	for i := 0; i < awsSecretsManagerUserData.UserDataSource.Chunks; i++ {
		secretName := fmt.Sprintf("%s-%d", awsSecretsManagerUserData.UserDataSource.Prefix, i)
		secret, err := secretManagerService.GetSecretValue(context.TODO(), secretName)
		if err != nil {
			return nil, err
		}
		compressedCloudConfigBinary = append(compressedCloudConfigBinary, secret.SecretBinary...)
		secretManagerService.DeleteSecret(context.TODO(), secretName)
	}

	uncompressedData, err := GUnzipBytes(compressedCloudConfigBinary)
	if err != nil {
		return nil, err
	}
	base64UserDataString := string(uncompressedData)
	actualUserDataByte, err := base64.StdEncoding.DecodeString(base64UserDataString)
	if err != nil {
		return nil, err
	}

	acutalUserData := &UserData{}
	err = yaml.Unmarshal(actualUserDataByte, acutalUserData)
	if err != nil {
		return nil, errors.Wrap(err, "Error unmarshalling user data")
	}
	return acutalUserData, nil
}